Căn bản về thiết kế và lập trình game

64 3.2K 22
Căn bản về thiết kế và lập trình game

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Căn bản về thiết kế và lập trình game

Simple ЯTS G∆me Dεsign & CΘding Simple ЯTS G∆me Dsign & Cding OpenEdition e Copyright â 23 by CzƠBab ζ All rights reserved June 6th, 2003 © CrazyBabe 2003 K-Outertainment™ Trang Simple ЯTS G∆me Dεsign & CΘding Chapter I: Introduction Why did I write this book ? Trong thời điểm tại, có nhiều bạn trẻ hướng quan tâm vào thiết kế lập trình game, phải cơng nhận điều chơi game hấp dẫn, chơi game làm cịn hấp dẫn nhiều, cho dù trò chơi dở ẹc Trên diễn đàn tin học Internet đầy rẫy topic kiểu “Lập trình game với ” “Ai giúp em lập trình game nào”, tất quan tâm đến mục đích “Làm để viết nên game ?” Những ý kiến xoay quanh vấn đề đa dạng, nói khó có mà nói…dễ có Với kinh nghiệm trình độ tại, tơi cơng nhận điều khó, khơng phải q khó bạn biết đặt mục tiêu vừa tầm tìm cách tiếp cận Nếu hi vọng viết game tương đương với Quake Warcraft – sản phẩm tập thể chuyên nghiệp xây dựng thời gian dài - q viển vơng, bạn hạ thấp mục tiêu xuống chút làm game đơn giản kiểu bắn tăng hay Mario, IQ game cho trẻ em trước khơng q khó bạn biết lập trình Cá nhân tơi dường nhận thức điều có số thành công nhỏ việc thiết kế lập trình game Trong thời điểm tơi nghỉ ôn thi định dành thời gian ngắn để viết sách này, sách tơi trình bày cách đầy đủ q trình tơi thiết kế viết mã cho game RTS đơn giản (được lược bỏ nhiều tính ví dụ chơi mạng) nhằm giúp bạn hiểu phần trình “ziết game gia” Hi vọng sách giúp bạn trình thiết kế viết game Chúc tất bạn thành công dự án viết game What is RTS game ? RTS – Realtime Strategy - Thể loại game chiến thuật thời gian thực mà khởi đầu với dòng game Dune, Command & Conquer Westwood Studio nhanh chóng trở thành dịng © CrazyBabe 2003 K-Outertainment™ Trang Simple ЯTS G∆me Dεsign & CΘding game ăn khách toàn giới Việt Nam Thời điểm phát triển dòng trò chơi dường chững lại, khơng có nhiều tiến vượt bậc thời điểm Starcraft (Blizzard Entertainment) đời mà xuất game lai tạp với thể loại khác (Warcraft III thể loại Roleplay Strategy) nên dường dòng game dần nhường bước cho dòng game ăn khách khác Nhưng cá nhân ôm ước vọng xây dựng game RTS ăn vào bối cảnh lịch sử Việt Nam đem lại cho người chơi nhiều cải tiến quan trọng cách chơi (He he, cải tiến quan trọng nha, khơng nói đâu, lúc làm xong sẽ…nói, hì hì) How this book will help you Cuốn sách viết lại trình thiết kế, viết mã – dĩ nhiên thích tương đối cụ thể – cho game RTS thiết kế đơn giản tối đa Bên cạnh tơi đưa số kinh nghiệm cá nhân có q trình làm việc nhằm giúp bạn hiểu phần cơng việc thiết kế lập trình game (Khơng chun nghiệp) Cịn sách giúp bạn tuỳ thuộc vào bạn, mà bạn thuộc hàng cao thủ bít hết rùi bạn dumb đọc chẳng hiểu dĩ nhiên chẳng giúp bạn đâu Tơi cố gắng giải thích cặn kẽ nhằm giúp bạn hiểu chương trình làm việc Tất cịn lại phụ thuộc vào bạn Readers requirements Trong sách này, sử dụng ngôn ngữ Delphi để viết chương trình Nhưng thực tế hồn tồn lập trình khơng sử dụng đến component không sử dụng đến Window API mà thông qua thư viện xây dựng riêng nên gần bạn cần biết Object Pascal hiểu mã chương trình làm việc nào, cố gắng viết mã cách chân phương – khơng tối ưu, tơi có thời gian wé - nhằm mục đích để người cảm thấy dễ hiểu chuyển sang ngơn ngữ khác, theo tính tốn tơi chương trình chuyển sang ngơn ngữ lập trình bậc cao thơng dụng VB, C, C++, C# Java Về mặt đồ hoạ không sử dụng hệ thống 3D phức tạp mà thiết kế với hệ thống 2D sprite animation đơn giản, chắn đa số bạn hiểu kĩ thuật thô sơ Mã nguồn liệu game cung cấp kèm theo đầy đủ, bạn cần biên dịch lại chạy System & Software requirements • • • • • Hệ thống PIII 500Mhz, 64MB RAM, card hình 8MB, hình hỗ trợ chế độ phân giải 800x600x16bit màu, có card sound (Thực tế tơi chưa chạy thử máy có cấu hình yếu nên khơng rõ có chạy hay khơng) Windows 95, 98, 98SE, NT, 2000 XP DirectX 8.1 trở lên Biên dịch Borland Delphi Borland Delphi Nếu bạn cần chỉnh sửa liệu game cần thêm trình soạn thảo ảnh (Photoshop, ACD FotoCanvas…) Misc • Tơi viết sách chủ yếu hướng đến bạn gần chưa biết lập trình game có dụng ý chia sẻ chút kiến thức ỏi thân, q trình biên tập có chút sơ sót mong bạn lượng thứ, sách làm bạn cảm thấy hứng thú muốn trao đổi thêm với tơi bạn liên lạc qua địa e-mail kimngan2508@yahoo.com (Đây địa mirror thôi, đừng bomb tui nha, he he) qua YIM: kimngan2508 © CrazyBabe 2003 K-Outertainment™ Trang Simple ЯTS G∆me Dεsign & CΘding • Cuốn sách tơi viết hồn tồn khơng nhằm mục đích thương mại, tồn mã nguồn chương trình sách phân phối miễn phí, tơi khơng chấp nhận hành vi kinh doanh dựa tập sách chương trình Đối với chương trình, bạn tuỳ nghi sử dụng, nâng cấp, cần để record ghi nâng cấp từ chương trình CrazyBabe Nhưng tơi nghĩ bạn nên viết lại hồn tồn (nếu muốn làm game thực sự) chương trình khơng tốt • Trong chương trình, ngại thiết kế hình ảnh âm nên tơi mượn tạm hình ảnh âm loạt game Starcraft nhà sản xuất Blizzard Entertainment (Hì hì, chả bít nên khơng bị kiện) © CrazyBabe 2003 K-Outertainment™ Trang Simple ЯTS G∆me Dεsign & CΘding Chapter II: Game Design Design a very simple RTS game Như nói trước đây, tơi viết sách khoảng thời gian ngắn (Chỉ bốn ngày viết mã viết tài liệu) nên đối tượng game tơi sử dụng phải tương đối đơn giản (Do lí hạn chế thời gian trình độ nữa, hì hì…) Ở tơi thiết kế game thể loại RTS 2D tính hạn chế Tơi xây dựng game hồn tồn khơng hỗ trợ chế độ multiplayer, hi vọng thời gian đến tơi có thời gian để nâng cấp game lên hỗ trợ chế độ Và loại bỏ số yếu tố mà cho đơn giản chế độ menu, chọn đồ, loại quân… mà nhảy vào chương trình load đồ mặc định chạy đồ trận chiến kết thúc bạn chán wá ngồi – he he - tức quan tâm đến chế độ battle trị chơi mà thơi, bỏ qua tất yếu tố khác Một game RTS xoay quanh số yếu tố sau: chế khai thác tài nguyên, chế sinh sản đơn vị quân, tính đơn vị quân cách chúng cơng, kiểu địa hình yếu tố quan trọng Game thiết kế sơ sau: • Thể loại chiến tranh khơng gian - Starwars lun, chiến chưa ? :) • Khơng có địa hình, loại bỏ bớt yếu tố phức tạp cho địa hình Cái nhằm để dễ lập trình • Game gồm hai loại đơn vị tàu mẹ tàu Tàu mẹ trung tâm đảm nhận việc xây dựng tàu con, lưu giữ tài nguyên… Tàu đảm nhận nhiều nhiệm vụ khác tuần tiễu, cơng, khai thác… • Các đơn vị tàu có tính di chuyển, công, tuần tiễu, khai thác, xây tàu • Hệ thống phím tắt cố định (Tơi bỏ qua việc xây dựng hệ thống menu điều khiển) • Hệ thống xây dựng game 2D © CrazyBabe 2003 K-Outertainment™ Trang Simple ЯTS G∆me Dεsign & CΘding Sơ vậy, tính khác tơi nghĩ bạn thêm vào đơn giản hiểu chương trình Nếu muốn nâng cấp game thành 3D tơi nghĩ làm Dưới screen shot từ game này: Game programming environment Các bạn trao đổi với lập trình game thường trao đổi với vấn đề cụ tỉ vẽ DirectX hay OpenGL, làm để lấy sprite vẽ sprite hiệu ứng nào…thiết nghĩ thứ q lặt vặt – dĩ nhiên khơng nói đến chuyện thiết kế engine 3D lớn rùi – Trong lập trình game này, tơi sử dụng thư viện AvenusHelper thiết kế nhằm giảm tối đa công việc bạn cần thực thi chi tiết với hệ thống khởi tạo đồ hoạ, đọc ảnh vẽ ảnh hiệu ứng đơn giản add, sub, mul…Ở bạn cần ý đến việc làm game chạy được, unit xử lý nào, máy tính chơi sao, kiện xử lý nào…mà Nếu cần quan tâm đến chi tiết làm để thực hiệu ứng alpha blend chẳng hạn bàn sau - tập sách khác © CrazyBabe 2003 K-Outertainment™ Trang Simple ЯTS G∆me Dεsign & CΘding Chapter III: Game Coding Chương đơn giản thích mã nguồn chương trình Dưới mã nguồn đơn vị Game, thành phần chương trình { Tơi đặt định nghĩa nhằm chương trình chạy chế độ tồn hình hay chế độ cửa sổ } {$Define FullScreen} { Định nghĩa nhằm xác định chương trình có hỗ trợ âm hay không } {$Define SoundPlaying} UNIT Game; INTERFACE { Ở khai báo đơn vị mà chương trình sử dụng } USES Windows, MMSystem, SysUtils, Math, FireStormDLL, AvenusHelperDLL; CONST { ScrWidth x ScrHeight định nghĩa kích thước cửa sổ độ phân giải chế độ tồn hình Chú ý chương trình chế độ cửa sổ tức biên dịch khơng có thị FullScreen kích thước tuỳ ý, chương trình chạy chế độ tồn hình kích thước độ phân giải phải hình hỗ trợ thường độ phân giải thông dụng là: 640x480, 800x600, 1024x768, 1152x864, 1280x1024… © CrazyBabe 2003 K-Outertainment™ Trang Simple ЯTS G∆me Dεsign & CΘding } ScrWidth ScrHeight { = 1024; = 768; Caption xâu định nghĩa tên cửa sổ chương trình tạo } Caption = 'Simple RTS Game Demo [C]CrazyBabe.2003'; { MaxUnit số định nghĩa số lượng unit lớn mà chương trình hỗ trợ xử lý, số tui đặt đại zậy mà xử lý thực tế (chương trình hồn tồn khơng tối ưu) cần khoảng 4000 P4 tui die hard lun không cần phải thử máy cấu hình yếu đâu :> } MaxUnit = 8000; { DataPath đường dẫn đến thư mục chứa liệu chương trình } DataPath = 'Data\'; { ShipsSettingDir đường dẫn đến thư mục chứa file liệu loại tàu game } ShipsSettingDir = 'ShipsSetting\'; { ScrollSpeed tốc độ di chuyển minimap game, tơi đặt biến số nhằm mục đích thay đổi tốc độ phần tui chưa viết, bạn tự thêm vào nha } ScrollSpeed : Word = 15; { MoveFarLeng, TooNearLeng, AroundLeng số độ lớn giới hạn ví dụ giới hạn tàu gần nhau… } MoveFarLeng = 10; TooNearLeng = 3; AroundLeng = 100; { ScreenUpDate khoảng thời gian (phần nghìn giây) mà chương trình thực thi cập nhật lại hình Với giá trị 33 chương trình cập nhật khoảng 28-30 lần giây UnitUpDate khoảng thời gian mà chương trình thực xử lý cho đơn vị, với giá trị 10 chương trình xử lý đơn vị trung bình khoảng 70 lần giây InputUpDate, MiniMapUpDate khoảng thời gian chương trình thực cập nhật bàn phím, chuột… cập nhật lại minimap (Bản đồ con) MoneyTime khoảng thời gian chương trình thêm xiền cho phe } ScreenUpdate : LongWord = 33; UnitUpdate : LongWord = 10; InputUpdate : LongWord = 10; MiniMapUpdate : LongWord = 10; MoneyTime : LongWord = 120000; { DefaultMoney số xiền game cho phe lần “cấp phát” } DefaultMoney = 10000; { PanelSizeX, PanelSizeY kích thước Panel thể thông tin đơn vị chọn MiniMapSizeX, MiniMapSizeY kích thước đồ nhỏ hiển thị hình © CrazyBabe 2003 K-Outertainment™ Trang Simple ЯTS G∆me Dεsign & CΘding } PanelSizeX PanelSizeY MiniMapSizeX MiniMapSizeY = = = = 700; 80; 200; 200; { Cứ sau khoảng FrameRateForFindTarget frame chương trình thực tìm kiếm mục tiêu cho đơn vị khơng có lệnh } FrameRateForFindTarget = 40; TYPE { Định nghĩa kiểu để đánh số đơn vị game } TUnitCount = MaxUnit; { Định nghĩa kiểu toạ độ nguyên toạ độ thực } TRPoint = Record X,Y : Single; End; TPoint = Record X,Y : Integer; End; { Định nghĩa số hướng đơn vị xoay 32 hướng Số hướng nhiều đơn vị xoay mịn, xây dựng với 3D khơng cần đến định nghĩa số hướng mà cần lưu lại góc nhìn đơn vị Hic, chóng mẹt wé… } THeading = ( H01,H02,H03,H04, H05,H06,H07,H08, H09,H10,H11,H12, H13,H14,H15,H16, H17,H18,H19,H20, H21,H22,H23,H24, H25,H26,H27,H28, H29,H30,H31,H32); { Định nghĩa số kiểu tàu có game, hik, bạn bịa tên ok… } TSpaceShip = ( NoneShip, FirePlanet, SupperBattleShip, BattleCruiseAmon, BattleCruiseBaton, CooNok, Scout, Interceptor, Carrier, MiniMissile, EvelMissile, MileMissile, Burn ); { © CrazyBabe 2003 K-Outertainment™ Trang ... tâm vào thiết kế lập trình game, phải công nhận điều chơi game hấp dẫn, chơi game làm cịn hấp dẫn nhiều, cho dù trò chơi dở ẹc Trên diễn đàn tin học Internet đầy rẫy topic kiểu ? ?Lập trình game. .. đầy đủ q trình thiết kế viết mã cho game RTS đơn giản (được lược bỏ nhiều tính ví dụ chơi mạng) nhằm giúp bạn hiểu phần trình “ziết game gia” Hi vọng sách giúp bạn q trình thiết kế viết game Chúc... Đối tượng chính: GamePlay } TYPE TGame = Class { Đánh dấu game kết thúc } EndGame : Boolean; { Đánh dấu game chế độ tạm dừng } PauseGame : Boolean; { Dữ liệu người chơi game } GamePlayers : Array[TPlayer]

Ngày đăng: 16/08/2012, 10:08

Hình ảnh liên quan

NumTile: Số lượng ảnh nhìn thấy được trên màn hình. }  - Căn bản về thiết kế và lập trình game

um.

Tile: Số lượng ảnh nhìn thấy được trên màn hình. } Xem tại trang 14 của tài liệu.
Tìm unit ở gần UnitNum, hàm này xây dựng để xử dụng khi dãn đội hình ra. }  - Căn bản về thiết kế và lập trình game

m.

unit ở gần UnitNum, hàm này xây dựng để xử dụng khi dãn đội hình ra. } Xem tại trang 22 của tài liệu.
o EffectMirror, EffectFlip: Vẽ lật hình, hiệu ứng này có thể kết hợp với các hiệu ứng ở trên - Căn bản về thiết kế và lập trình game

o.

EffectMirror, EffectFlip: Vẽ lật hình, hiệu ứng này có thể kết hợp với các hiệu ứng ở trên Xem tại trang 62 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan