Nghiên cứu một số kỹ thuật tạo cảnh trong game. ứng dụng xây dựng game sonic ...
Game programming note02
1. Khoa CNTT – ĐHBK Hà nôi
hunglt@it-hut.edu.vn
Y: hung_lt
1
Quy Trình phát triển Game
2. Khoa CNTT – ĐHBK Hà nôi
hunglt@it-hut.edu.vn
Y: hung_lt
Quy trình phát triển game
Sự hình thành một sản phẩm mới bắt đầu khi người phát triển thiết kế một khái
niệm cho một trò chơi. Những tập hợp (entails) này dùng để sinh ra một bản tài
liệu thiết kế trò chơi, một mô hình hoạt động của "engine" lập trình, những bản
chụp màn ảnh (screen shots), một kịch bản phác thảo và một bản dự toán chi phí
(a game design document, a working model of the programming “engine”,
screen shots, an outline script and a proposed budget)
Điển hình mất khoảng hai năm để hoàn thành một trò chơi, Theo thông lệ và và
điển hình, thanh toán tiền bản quyền từ những hàng bán của trò chơi (game)
chia ra 80% cho nhà xuất bản và 20% cho người phát triển (và người sáng tạo
nội dung – người sở hửu bản quyền).
Quá trình phát triển trò chơi thông thường bao gồm mười bước, và bao gồm bốn
cột mốc bắt buộc
(i) Khi chuyển giao toàn bộ thiết kế trò chơi,
(ii) Phiên bản alpha của trò chơi,
(iii) Phiên bản Bêta của trò chơi,
(iv) Phiên bản Gold của game
Bản nguyên mẫu cho demo- Demo Prototype: Một bộ code (và data) có thể
chạy và chơi được bình thường và có thể trình diễn đúng những gì có thể thấy
hoặc cảm nhận được về cái game đó. Bản yêu cầu trong trò chơi này cũng được
chuyển cho và cũng là đề xuất với những nhà xuất bản
1/ – Planning Stage.
Storyboard – Cốt truyện: Được biết như "Conti" trong tiếng Hàn, về cơ bản
một tập bản thảo bằng giấy và lưới phân chia những bức tranh kèm theo mô tả
bằng văn bản. Cho thấy các cảnh sẽ trông như thế nào nhưng mô tả sơ lược.
Thông thường, dù chỉ là bản phác họa, nhưng mọi thứ từ góc camêra đến những
chuyển động của nhân vật cũng sẽ hiện ra
2
3. Khoa CNTT – ĐHBK Hà nôi
hunglt@it-hut.edu.vn
Y: hung_lt
Một mẫu storyboard (thông thường, phần mô tả văn bản sẽ phải chi tiết hơn)
Thiết kế Bản đồ: Một "Bản đồ" – “MAP” là một cảnh nền được tải vào
game bất cứ khi nào mà người chơi đi vào một vùng của trò chơi. Nó là nơi mà
hầu hết các kịch bản, các hoạt động sẽ diễn ra trên đó. Từ giai đoạn lập kế
hoạch, một thiết kế bản đồ không phải là một bản dữ liệu 3D, khá hơn, nó là
một bản vẽ 2D (với màu) cho thấy bản đồ gồm những gì và như thế nào.
- Bản đồ tĩnh – Static Map: một bản đồ (nhìn thấy ở trên) khi được tải
vào trong vùng nhớ của hệ thống “một lần” khi người chơi vào một
vùng mới. Nó ở lại trong bộ nhớ cho đến khi người chơi đi ra ngoài tới
một bản đồ khác. (Khi bạn thấy hiện ra thông báo "Now loading"). Dung
lượng nhớ (memory footprint) của bản đồ tĩnh phải là ít hơn vùng nhớ sẵn
có của hệ thống. (Ví dụ: MGG, Final Fantasy, Bio Hazard, Devil May
Cry).
- Bản đồ luồng – Stream Map: Một bản đồ lớn hơn nhiều so với một mản
đồ tĩnh, những vùng trải ra ngang qua nhiều bản đồ theo một cách liên tục.
Như vậy ở đó dữ liệu triền miên chảy từ CD/ DVD sao cho khi người
3
4. Khoa CNTT – ĐHBK Hà nôi
hunglt@it-hut.edu.vn
Y: hung_lt
chơi quay lại, ở đó màn ảnh không có để trống tải, thay vào đó bản đồ
mới lộ ra dần dần. Một bản đồ luồng có thể lớn như không gian lưu trữ
được cho phép bởi thiết bị (CD/ DVD). (Ví dụ game: Crazy Taxi)
Thiết kế những nhân vật chính, Thiết kế Quái vật, Thiết kế Quái vật Ông
chủ: Trong giai đoạn lập kế hoạch: bản vẽ của những nhân vật chính, quái vật
và những ông chủ được nhuộm màu (không phải 3D).
Thiết kế kịch bản game: Mô tả bằng hình ảnh và văn bản cho thấy game được
chơi như thế nào. Cơ chế của kịch bản chính được chỉ ra giúp người đọc có thể
chơi game theo ý hiểu của họ.
Thiết kế GUI: Thiết kế (hệ giao diện đồ hoạ) của Thực đơn, Thanh trạng thái,
Life Guage – Chỉ số sự sống, Item Box, Cửa sổ Điểm, v.v... Tại giai đoạn lập kế
hoạch, nó cần phải là một bức tranh tĩnh.
Thiết kế Item: Hình ảnh và việc mô tả văn bản của những Item xuất hiện trong
trò chơi. Thiết kế mục tiêu - Puzzle Design: Hình ảnh và việc mô tả văn bản
của mục tiêu trông như thế nào, nó cần phải được giải quyết ra sao, nơi mà nó
được định vị, v.v..
2/ - ART and Audio
Làm mô hình & Kết cấu - Modeling & Texture: Làm mô hình 3D của những
nhân vật và bản đồ BG Thực tế, ánh xạ kết cấu được làm sau khi làm mô hình
3D.
Bản đồ BG (+ Lighting): Sự làm sáng được yêu cầu khi làm bản đồ BG trông
hiện thực nhiều hơn. Cái này được làm sau khi hoàn thành tất cả mô hình và ánh
xạ kết cấu bằng việc đặt những kiểu ánh sáng thực tế khác nhau sử dụng những
công cụ như 3 DS Max hay LigthWave.
Hoạt cảnh - Animation:
Hiện thực hóa chuyển động:
Công đoạn thiết kế đã qua, lúc này nhân vật vẫn chỉ như một con rối "có xác
không hồn". Và nhiệm vụ "thổi hồn" sẽ được trao tay cho các lập trình viên để
họ "tiếp sức" giúp nhân vật có thể cử động theo ý muốn của người chơi.
Tùy theo mục đích phát triển game, sẽ có những kỹ thuật khác nhau được sử
dụng
Danh sách - List: bảng của tất cả hoạt cảnh cần có trong trò chơi.
Bắt Chuyển động – Motion Capture.
Dọn dẹp MoCap – MoCap Clean-Up: dữ liệu hoạt cảnh cần được làm
tươi tách ra khỏi việc bắt chuyển động, thông thường rất bẩn, lôn xộn với nhiều
sự cố và giật. Điều này cần được dọn dẹp, và nhiệm vụ này thường được làm
bởi MoCap Studio.
4
5. Khoa CNTT – ĐHBK Hà nôi
hunglt@it-hut.edu.vn
Y: hung_lt
Fix-up and Positioning: bởi vì không gian hạn chế trong một trường
quay MoCap, sự định vị (vị trí) và góc quay vượt ra khỏi yêu cầu, việc fix-up sẽ
được yêu cầu điều chỉnh dữ liệu hoạt cảnh MoCap sao cho nó có thể được sử
dụng trong game trong tọa độ vạn năng thực sự
Key-frame Anim: đây là cách làm cho hoạt cảnh 3D thủ công truyền
thống. Key-framing là một phương pháp của việc sắp đặt một nhân vật với một
tư thế nhất định và cố định lại (“Key- it”), sắp đặt nó với tư thế khác và cố
định lại. Phần còn lại giữa các khung (frame) được sinh ra tự động bởi máy tính.
Chúng ta sẽ làm hầu hết hoạt cảnh của chúng ta thông qua Mo-Cap, tuy nhiên,
với những tạo vật không có dạng người ( ví dụ: những quái vật và mechas) thì
Mo-Cap là không khả dĩ.
Item/Object Anim: là đa số những item là những đối tượng không có sinh khí,
có một chút, như trong thời gian những cảnh cắt, mà vẫn phải di chuyển
Âm thanh là một trong những yếu tố tưởng chừng chẳng quan trọng gì mấy, cho
tới khi mà các bạn chơi thử game mà không có nó. Nói một cách khác, nếu như
cốt truyện và hình ảnh là cái bánh kem thì âm thanh chính là trứng - thứ làm nên
hương vị chủ yếu của cái bánh.
BGM: Âm nhạc nền. Có 3 kiểu khác nhau là:
1. Raw PCM: âm thanh dạng luồng trực tiếp = tương tự như âm thanh
CD hay DVD
2. ADPCM: âm thanh luồng bị ép (bị nén) = tương tự như MP3 nhưng tỷ
lệ nén ít hơn.
3. MIDI: khuôn dạng midi chiém vùng nhớ ít nhấtt. Trừ phi chất lượng
kém. Nó phải được sử dụng khi CD/ DVD được sử dụng cho giọng nói
ADPCM qua.
5
Sound FX: Mọi hiệu ứng Âm thanh khác loại trừ BGM. Thông thường file .
WAV hay WAV được chuyển đổi tới những khuôn dạng khác ( Ex. Âm thanh
Bước chân, âm thanh bắn súng v.v...)
3/ - Lập trình.
Động cơ - Engine: Xương sống của mã (code) trò chơi. Thông thường bao gồm
nhiều chức năng chung có thể được dùng để làm cho những việc như trát
(render) lót những nhân vật, những bản đồ trên màn ảnh và làm sống động
chúng.
• Nhân vật – Character: phải có thể trát lót và làm sống động nhân vật 3D,
định vị chúng, đặt hình bóng, tính toán điểm va chạm giữa những nhân
vật và nền cho cảnh nữa.
6. Khoa CNTT – ĐHBK Hà nôi
hunglt@it-hut.edu.vn
Y: hung_lt
• BG: phải có thể trát lót và chọn lọc bản đồ nền 3D. Chọn lọc là dồn một
phần của SCENCE GRAPH (bản đồ BG) sao cho chỉ một phần rõ ràng
của bản đồ được render.
• Physics: chẳng hạn, phải làm gì khi một viên đạn từ súng rơi trên sàn nhà
và những sự nảy (giật) ba nhiêu lần, v.v... Khi hai nhân vật đụng nhau,
làm sao chúng cần phải phản ứng lại, dưới dạng vị trí và sự quay. Khi
một ô tô đâm ô tô khác, làm sao chúng cần phải di chuyển, v.v... (Thông
thường chỉ tính toán vị trí và việc quay, như một chức năng của thời gian).
• Collision (va chạm) và Trigger: có 4 kiểu khác nhau: Nhân vật với
Nhân vật ( cho trận đánh, bắt đầu nói, v.v...), Nhân vật với BG (vì thế có
thể chỉ đi đến vùng chuyển động), từ Nhân vật tới Đối tượng (Oject) (nhặt
lên những Item), (khi Nhân vật bước vào một vùng nhất định, nó sẽ thúc
đẩy một sự kiện nhất định).
• On Collision Reaction - Phản ứng va chạm: phải làm gì khi một nhân
vật đánh cái gì đó (Thay đổi hoạt cảnh của anh ấy, vị trí và sự định
hướng)
• Special FX: Bất cứ tiếng động gì từ vụ nổ đến hình bóng, lửa, ánh sáng
phóng hồ quang v.v... Một số được thực hiện bởi Sprites và một số bởi
Particles.
• Particles - Hạt: Hạt là một cách CG mô phỏng một nhóm lớn của những
bụi Hạt nhỏ xíu mà từng cái có vòng đời của riêng mình và được phát ra
từ một nguồn. Những hạt được dùng để mô phỏng FX đặc biệt như khói
và lửa. Một ví dụ thực sự tốt của một hạt là pháo thăng thiên.
• Sprite: Một Sprit là một kiểu đa giác, chỉ có điều nó (thông thường)
không có bất kỳ tọa độ nào trong không gian 3D, được giới hạn bởi tự
nhiên. Những sprit có tọa độ trong không gian 3D được gọi là những
Billboards.
• Văn bản/ hộp thoại - Text/Dialog Box: Từ một trò chơi bàn điều khiển
không có một OS, nó không biết làm sao để phóng to phông văn bản
ngoài. Lập trình viên phải lập trình mã vì vậy những phần văn bản vượt ra
ngoài đó như một sprit hay một đa giác có một kết cấu. Hộp thoại cũng
phải được lập trình trong ngữ cảnh thích hợp. Nhiệm vụ này trở nên quan
trọng khi chúng ta hỗ trợ nhiều ngôn ngữ đặc biệt là ngôn ngữ Châu á 2
Byte.
• GUI: Thực đơn, item box, life guage, v.v... phải mã hóa cứng với những
sprit và đa giác. Một mô đun engine GUI phải hỗ trợ xương sống của hệ
thống GUI
• GUI Flash-like Import: với mục đích đỡ tốn nhân công lập trình, mỗi
khi chúng ta thực hiện một mã có chấp nhận ngôn ngữ Flash, khi làm một
thực đơn mới hay một cách trình bày màn ảnh mới thì sẽ thật là nhẹ
6
7. Khoa CNTT – ĐHBK Hà nôi
hunglt@it-hut.edu.vn
Y: hung_lt
nhàng (breeze). Tuy nhiên, sự thực thi này làm đội lên chi phí cao trong
gia đoạn đầu của việc sự phát triển game. Nó là một máy phiên dịch ngôn
ngữ thích hợp Flash đầy đủ.
• Âm thanh -Sound: lập trình âm thanh thông thường là một nhiệm vụ đơn
giản, vì thư viện được hỗ trợ tương đối đầy đủ và nhiều. Tuy nhiên, khi
chúng ta muốn làm một hệ thống âm thanh thông thường mở rộng, đầy đủ
với khung trang Dolly (surround) hay Q-Sound (âm thanh 3D), chúng ta
cần một lập trình viên âm thanh chuyên dụng, người mà chẳng những làm
ra các giao diện chương trình ứng dụng chức năng (APIs) mà còn điều
tiết (vặn, ngắt) tất cả âm thanh FX nữa tới mức đầy đủ nhất.
• Bộ điều khiển Đầu vào - Input (Controller): Việc thiếu vắng OS trong
một bàn điều khiển trò chơi cũng có nghĩa rằng máy trò chơi không biết
rằng khi người chơi nhấn một nút hay không. Mỗi sự kiện trong bộ điều
khiển trò chơi phải được theo dõi và phản chiếu trên trò chơi. Đôi khi,
điều này cũng bao gồm việc tạo ra một đầu vào FSM (Máy Trạng thái
Hữu hạn) để theo dõi những phím đầu vào để theo dõi làm phức hợp
những chuyển động ( Ví dụ: Æ Å Æ p p p == Hadoken) Trong bất kỳ
trường hợp nào, phần này của lập trình là một trong những phần dễ dàng
và có thể được làm bởi một lập trình viên tập sự với nhân viên phụ thích
hợp
• Quản lý vùng nhớ: Với số lượng hạn chế của vùng nhớ trong một máy
bàn điều khiển, (thông thường ít hơn 64 Mbyte) quản lý vùng nhớ phải là
một trong số nhân tố (hệ số) đơn quan trọng nhất trong lập trình trò chơi.
Thông thường thời gian, một dự án tiến triển tốt và trông ấn tượng của lúc
khởi đầu, rồi những lỗi, bug gặp phải khi chạy làm cho chương trình
khong thể chạy được trên máy thật. Quản lý vùng nhớ tốt phải có những
biểu hiện sau.
o cấu trúc vùng nhớ nhỏ gọn (không có không gian không cần thiết).
o được nén(ép) mỗi khi có thể.
o vùng nhớ liên tục – không phân mảnh.
o Cực tiểu/hạn chế tải CD/DVD.
• Ngôn ngữ Scripting: còn nhiều vấn đề gây bàn cãi, nhưng một ngôn ngữ
Scripting là một kịch bản (script) đơn giản thường được dùng để xây
dựng một cảnh cắt (cut-sence) hay một sự kiện đặc biệt trong trò chơi.
Kịch bản phải đủ đơn giản để được sử dụng bởi những người không phải
lập trình viên, và như vậy sẽ tiết kiệm nhân lực lập trình ghê gớm. Tuy
nhiên, nó đòi hỏi sự đầu tư ban đầu của việc tạo ra trình phiên dịch và cú
pháp script.
7