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