Trang

25/12/12

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

Bài đăng phổ biến