Kinh nhiệm lập trình game của tôi
- Chào các bạn : mình tên Nguyễn Phan Trị (nick YM : trivtn )
- Mình hiện đang thực hiện một đề án 3D game của riêng mình, mình đặt tên nó là "Truyền Thuyết Vua Heo". Cốt truyện dựa theo truyện cổ tích dân gian Việt Nam là "Vua Heo".
- Dĩ nhiên khi viết lại kịch bản thì những phần chính mình vẫn để nguyên, chỉ thêm các phần phụ mà thôi, như xuất xứ nguồn gốc của Heo, các nhiệm vụ mới, các món đồ tìm được trong chặn đường gian truân để nên hình một vì vua.
- Chắc các bạn, nhất là các bạn đam mê lập trình sẽ thắc mắc sao
mình không làm việc theo nhóm mà làm chi một mình cho nó cực vậy ? Câu trả lời
là mình đam mê lập trình, mình làm việc theo sở thích, và cái chính là mình muốn
nắm bắt tòan bộ công việc làm game 3D thế nào. Sau khi mình xong cái đề án này,
có lẻ lúc đó mình sẽ lập nhóm làm việc.
- Tại sao mình mê lập trình game mà không phải lập trình cái gì
đó khác ? À cái này thì có lẽ do mình cũng rất mê chơi game nên sinh ra thế, với
lại khi bạn là người làm ra game bạn có đầy đủ quyền hành quyết định kết cục của
nó, bạn giống như là thượng đế, cảm giác đó thật tuyệt....nếu là người chơi
game, bạn chỉ có thể là vua thôi.
* Để lập trình game tôi đã phải trang bị những kiến thức nào ?
mình nói đây là game mà bạn có thể bán được nghe, không phải dùng các bản Demo
đâu.
1) Ngôn ngữ lập trình , thuật tóan :
- Ngày xưa từ khi còn học lớp 9,10 mình đã tiếp xúcc lần đầu
với với ngôn ngữ lập trình Pascal. Đây có thể nói là ngôn ngữ cơ sở và là ngôn
ngữ rất dễ để học các cấu trúc dữ liệu và thuật tóan.
- Lúc học Đại học , phải nói lúc đó trình độ Pascal mình có thể
nói là đã ở mức thượng thừa rồi ( lập trình OOP trong Pascal), lúc đó bằng ngôn
ngữ lập trình pascal với giao diện đồ họa BGI mình cũng đã làm một số game nhỏ :
như bắn xe tank, máy bay, bắn vịt, trò tettris, cờ tướng, trò chơi ta
canh...Mình đã có thể giả lập cả môi trường giống y như của pascal với đầy đủ
các giao diện của nó, sao đó chép đè lên cái turbo.exe vậy là mấy đứa làm sau,
nói sao mà mở tệp tin lên được, dịch OK mà không thể nào chạy được ...ha ha. làm
sao mà chạy được vì đó là cái turbo.exe giả của mình. Bên cạnh đó mình cũng có
thể lập trình các ứng dụng trong lúc học bằng pascal rồi ( như vẽ đồ thị, tính
tóan cáp quang, tính tóan cho vệ tinh....)
- Tiếp xúc với C và C++, lúc trứơc mấy thằng bạn lập trình cùng
nhóm nói sao mình không chuyển qua C hay C++ đi, lúc đó nó cũng sài TurboC mình
thấy với Pascal thì có gì hay hơn đâu. Sau đó chuyển sang lập trình trên Window
thì cả turboC và Turbo Pascal cũng bó tay. Mình chuyển sang C++ luôn (dĩ nhiên
là phải học C một thời gian trứơc đó). Cũng mai là mình chọn luôn anh VC++6.0
vậy là mình kết với nó tới bây giờ ( VC++2008)
- Lúc đầu chuyển qua VC++ mình cũng chỉ làm lại mấy chương trìnhđã làm trên Pascal thôi. Sau đó mình làm thêm một số trò chơi mới : như cờ cá ngựa, cờ tướng, bắng xe tăng....
- Cuộc thi lập trình cờ tướng tổ chức mình cũng muốn tham gia,
nhưng lúc đó mình chỉ sài cái code VCSSP1.0 mà thôi nên mình phải tự cải tiến
rất rất nhiều mới đạt được trình độ đánh thắng VSCCP 1.4 của bác Phạm Hồng
Nguyên. Chương trình của mình là VChess, mình đã lập trình nó rất lâu, có thể
nói chỉ có nó mà mình hầu như đã học xong VC++6.0 MFC.Nhưng làm xong thì cuộc
thi cũng đã kết thúc hết 1 năm rồi.... coi như là lập trình cho vua vậy. Bây giờ
mình vẫn dùng nó để đánh cờ với mình và mình thường bị nó luộc chín. Nhờ nó mà
trình độ cờ của mình lên đáng kể ( cái VChess với cơ sở dữ liệu gần 16000 ván cờ
của các cuộc thi cờ Việt Nam và quốc tế...nó đánh không tệ đâu.)
2) Chọn engine lập trình game :
- Vẫn mê lập trình game, mình thấy anh DirectX rất hay, down ngay
cái DirectX SDK 9.0 về nghiên cứu, làm hết các ví dụ của nó, tạo luôn cái phiên
bản cờ tướng dùng DirectX. Sau đó đến lập trình có kèm nhân vật đến phần
MultiAnimation thì mình bó tay, cái máy tính của mình không thể chạy nó, Shader
thì chỉ đến 1.1 đành bỏ cuộc.
- Chuyển sang lập trình OpenGL, down hết cả cái trang Nehe.net về, xem qua hết các ví dụ của nó, nhưng mà cũng thấy y chang anh chàng DirectX nên cũng bó tay.
- Đọc trên tạp chí echip, thấy có giới thiệu cách làm game của
một cao thủ . Lúc đó mình mới nghe nói đến game engine, đến thiết kế nhân
vật.....Lúc đó mình học 3dsMax cũng được một thời gian.
- Mình đã down về nào là : OGRE, CrsytalSpace, DarkMagic... thấy nó chạy rất đẹp nhưng lập trình thì quá rối.
- Một hôm tình cờ mình xem được anh chàng Irrlicht engine (lúc đó là version 1.12). Thấy quá hay quá nên theo luôn đến giờ. Cái chính là diễn dàn Irrlicht, cũng như tài liệu kèm theo rất rỏ ràng và rất dễ tra cứu.
3) Các chương trình tạo mô hình 3D, và vẽ 2D :
- Mình chọn 3dsMax để tạo mô hình ( do nhiều tài liệu online ,
nhiều sách) : bây giờ dùng Max mình có thể thiết kế mọi thứ, có thể làm cả phim
họat hình cũng OK luôn.(đã tốn rất nhiều tiền mua sách về nó rồi hiện có gần
chục cuốn về Max đó.)
- 2D thì mình chọn anh chàng PaintShop Pro vì dễ học, và sau đó là PhotoShop (PhotoShop CS4 dĩ nhiên rồi)
- Ngòai ra còn cần thêm một số chương trình 3D nhỏ khác ( chủ yếu dùng để chuyển định dạng file 3D ) : mình hiện dùng MilkShape3D, FragMotion, DeleD, Tatoo, Anim8or, Polytrans...Bây giờ thì nhờ có các plugin cho 3dsMax mình cũng ít cần đến chúng rồi. ( 3dsMax 2009)
Bắt Tay Vô Làm
Game
- Để bắt tay vô làm game bằng Irrlicht, trước hết
phải down nó về cái đã : http://Irrlicht.sourceforge.net ,
đọc và làm lại tất cả các ví dụ của Irrlicht ( hiện thời có thể chỉ cần tệp tin
Irrlicht.chm đã gồm luôn các ví dụ này rất dễ làm lại và hiểu).
- Đối với người lập trình Irrlicht thì tệp tin trợ giúp
Irrlicht.chm rất cần thiết, dùng để làm lại các ví dụ, dùng làm công cụ để tra
hàm, nếu vững hết các phần này thì có thể tiếp tục.
- Thứ hai là diễn đàn Irrlicht, đó là nơi có thể học hỏi rất nhiều
thứ từ các thắc mắc, đến các mẹo lập trình, các project dùng Irrlicht...
1) Chọn cốt truyện , xây dựng kịch bản
- Mình thì mình chọn truyện sự tích vua heo cho game
của mình, vì mình thấy là với cốt truyện như thế mình sẽ phát triển ra gần như
đầy đủ phần cần thiết trong game, có các sự kiện, có cảnh chiến đấu, có kết thúc
hay...
- Mình viết ra một phần kịch bản game của mình như xuất xứ của
Heo, tại sao Heo lại rơi vào hòan cảnh như thế
2) Chọn thể lọai game:
- Với kịch bản game như trên mình thấy hay nhất là xây dựng game
theo thể lọai RPG realtime ( đánh liên tục không theo lượt), và vẫn dùng mouse
điều khiển là chính.
3) Thiết kế nhân vật trong game :
- Mình dùng 3dsMax thiết kế nhân vật, và dùng FragMotion để hiệu
chỉnh các file .X do 3dsMax xuất ra
- Nhân vật mình thiết kế được chia ra làm nhiều phần : cơ bản,
áo,quần,tóc,nón,áop chòang : tất cả các cái này đều được gán khung xương hòan
chỉnh ( để dùng cho hàm useAnimationFrom của Irrlicht)
- Tạo các họat cảnh của nhân vật (chỉ cần phần cơ
bản là đủ)
4) Từ từ xây dựng các class hổ trợ các phần còn thiếu của
game :
- Như các bạn biết là Irrlicht chỉ là engine đồ họa, cho nên dùng
nó viết game thì mình sẽ tốn rất nhiều thời gian xây dựng các class hổ trợ làm
game như :
- Class nhận các sự kiện từ bàn phím, và chuột, gamepad....
- Class trang phục : đây là class đặc biệt trong
game của mình : giúp nhân vật có thể thay đổi trang phục một cách tự động trong
game, cái này sẽ ảnh hưởng rất lớn đến việc thiết kế nhân vật trong. Nhân vật
của mình chi ra làm nhiều phần là : phần cơ bản gồm đầu tay chân, phần mặc áo,
phần quần, nón, tóc. Do đó trong game bạn sẽ thấy nhân vật nhặt Item là trang
phục và dùng luôn các trang phục này như thế nào.
- Class nhân vật, quản lý nhân vật : class này tạo
ra các nhân vật trong game, nhân vật sẽ họat động như thế nào nếu máy điều
khiển, và người chơi điều khiển nhân vật của mình như thế nào. Nhân vật tương
tác thế nào với địa hình.
- Class Item, quản lý các Item : class này giúp
người chơi có thể thu nhặt các Item như thế nào, thực hiện mua bán Item ra
sao.
- Class hiệu ứng : tạo ra các hiệu ứng trong
game
- Class quản lý các sự kiện : như nhân vật sẽ làm
thế nào, nói chuyện ra sao khi gần gân nhật chính...
* Tất cả các class trên phải có phần lưu và nạp
riêng, chúng ta sẽ kết hợp chúng lại sau đó.
Không có nhận xét nào:
Đăng nhận xét