1 / 58

Game Project Development

Game Project Development. 王銓彰 ● 王俊堯. Introduction to Game Development. Game platform Game types Game team Game development pipeline Game software system Tools. Game Development on PC. PC is designed for office application. Not for entertainment purpose A virtual memory system

Télécharger la présentation

Game Project Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Game ProjectDevelopment 王銓彰 ● 王俊堯

  2. Introduction to Game Development • Game platform • Game types • Game team • Game development pipeline • Game software system • Tools

  3. Game Development on PC • PC is designed for office application. • Not for entertainment purpose • A virtual memory system • Unlimited system memory • But video memory is limited. • For frame buffers, z buffers, textures, vertices, … • PCI/AGP might be a problem for performance. • Open architecture • Hardware driver version • Different capabilities • Different performance • Compatibility test is important. • Development is easy to setup. • Visual C/C++ with DirectX

  4. Game Development for Consoles • Specific hardware designed for games • Single user OS • Single process OS • No hard disk drive (?) • Closed system • Native coding environment • Proprietary SDK • Hardware related features • C language with assembly • Limited resources • Memory for everything • 32M for PS2 • 64M for Xbox • One console runs, the others do ! • Use gamepad and no keyboard

  5. Game Types • RPG (Role playing games) • AVG (Adventure games) • RTS (Real-time strategy games) • FPS (First-person shooting games) • RSLG (戰棋) • Simulation • Sports • Action • Puzzle games • Table games • MMORPG • Massive Multiple Player Online Role Playing Games

  6. Game Team Members • 開發團隊 • 製作人 • 執行製作人 • 企劃團隊 • 程式團隊 • 美術團隊 • 行銷業務團隊 • 產品經理(PM) • 測試團隊 • 遊戲審議委員會 • 遊戲經營團隊 • 線上遊戲 game master (GM) • Customer services • MIS

  7. Game Producer 遊戲製作人 • Team Leader (usually) • 資源管理 (Resource management) • 行政管理 (Administration) • 專案管理 (Project management) • 向上負責 (Upward management) • 團隊的決策 • 風險管理

  8. 遊戲執行製作人 • 專案管理執行 • Daily 運作 • House keeping • Meeting coordinator • Schedule checking • Cross-domain communication • Usually not a full-time job position • A position for training and becoming a producer

  9. 遊戲企劃 • 故事設計 (Story telling) • 腳本設計 (Scripting) • 玩法設計 (Game play design) • 關卡設計 (Level design) • 遊戲調適 (Game tuning) • 數值設定 (Numerical setup) • AI 設計 (Game AI design) • 音效設定 (Sound FX setup) • 場景設定 (Scene setup) • Game document writing • Game quality checking

  10. 遊戲美術 • Visual setup for game design • 2D setup • 3D setup • Graphics design and production • 場景 (Terrain) • 人物 (Character) • 建模 (Models) • 材質 (Textures) • 動作 (Motion / Animation) • 特效 (FX) • User Interface

  11. 遊戲程式 • 遊戲程式 (Game Program) 撰寫 • 遊戲開發工具 (Game Tools) 開發 • Level editor • Scene editor • FX editor • Script editor • Game editor • 遊戲Data exporters from 3D animation Software • 3dsMax / Maya / Softimage • Game engine development • Game technique research • Online game server development

  12. 遊戲開發流程 Basic Procedures for Game Development Idea Proposal Production Integration Testing Debug Tuning • 發想 (Idea) • 提案 (Proposal) • 製作 (Production) • 整合 (Integration) • 測試 (Testing) • 除錯 (Debug) • 調適 (Tuning) Concept Approval Prototype Pre-alpha Alpha Beta Final > Concept approval > 雛形 (prototype) > Pre-alpha > Alpha > Beta

  13. 遊戲發想(Concept Design) • 遊戲類型 (Game types) • 遊戲世界觀 (Game world) • 故事 (Story) • 遊戲特色 (Features) • 遊戲玩法 (Game play) • 遊戲定位 (Game product positioning) • Target player • Marketing segmentation / positioning • 競爭對手評估 • 風險評估 (Risk) • SWOT (Strength/Weakness/Opportunity/Threat) 分析 • 產出物 • Concept Design Document (CDD)

  14. 遊戲提案(Proposal) • 系統分析 (System analysis) • GDD 撰寫 (Game design document) • MDD 撰寫 (Media design document) • TDD 撰寫 (Technical design document) • 遊戲專案建立 (Game project) • Schedule • Milestones / Check points • Risk management • 測試計畫書 • 團隊建立 (Team building) • 產出物 • GDD • MDD • TDD • The Team

  15. 遊戲開發(Production) • 美術量產製作 • Modeling • Textures • Animation • Motion • FX • 程式開發 (Coding) • 企劃數值設定 • … 量產 !

  16. 遊戲整合(Integration) • 關卡串聯 (Level integration) • 數值調整 (Number tuning) • 音效置入 (Audio) • 完成所有美術 • 程式與美術結合 • Testing within the game team • Focus group (User study) • Release some playable levels for focus group. • Get the feedback from focus group to adjust the game play. • Invited outside game players but evaluation in-house

  17. 遊戲測試(Test) • Alpha 測試 • 除錯 (Debug) • Make the game stable • Beta 測試 • 數值微調 • Game play 微調 • 對線上遊戲而言 (MMOG) • 封閉測試 (Closed beta) • Invited game players • 開放測試 (Open beta) • Free for public players • 極限測試 (Critical testing) • Only for MMOG • Continuously implementing • For servers

  18. Bugs Bug Bug Classification Bug Dispatch ? Debug N Verify Y FAQ • Bug 分級 (Bug Classification) • A Bug • B Bug • C Bug • S Bug • Principles • Bug 分級從嚴 • Tester vs Debugger

  19. Game Software System NPC System Virtual Agent Trading System Story Fighting System FX System Game AI Script System Terrain Collision Character Dynamics Sound FX UI 3D Scene Mngmt 2D Sprite Gamepad Audio Network 3D Graphics API 2D API Input Device OS API Game Game Play Layer Engine Layer System Layer Hardware

  20. System Layer – APIs (1/2) • 3D Graphics API • DirectX 9.0 SDK – Direct3D • Newest update : DirectX 9.0c SDK Update (June, 2005) • OpenGL • 2.0 • 2D API • DirectX 9.0 SDK - DirectMedia • Win32 GDI • Input device • DirectX 9.0 SDK – DirectInput • Audio • DirectX 9.0 SDK – DirectSound / Direct3DSound / DirectMedia • OpenAL

  21. System Layer – APIs (2/2) • OS API • Win32 SDK • MFC • Network • DirectX 9.0 SDK – DirectPlay • Socket library

  22. Engine Layer (1/2) • 3D scene management system • Scene graph • Shaders • 2D sprite system • Audio system • Gamepad • Hotkeys • Mouses • Timers • Network • DDK interface

  23. Engine Layer (2/2) • Terrain • Advanced scene management system • Space partition technique • BSP Tree • Octree • Character system • Bone-skin • Motion Blending • Dynamics • Particle system • Rigid-body dynamics • Collision detection • Sound FX • User interface

  24. Game Play Layer • NPC (Non-playable characters) management • Game AI • Path finding • Finite state machine (FSM) • Steering behavior • Avatar • Combat system • FX system • Script system • Trading system • Number system • …

  25. Game Development Tools for Programming (1/2) • System Tools • Visual C/C++ • .Net 2003 • VC/C++ 7.1 • Visual C/C++ 6.0 + SP5 • NuMega BoundsChecker • Finding memory leaking • Intel vTune • Finding computation performance bottlenecks • for CPU • PIX • Finding graphics performance bottlenecks • For GPU

  26. Game Development Tools for Programming (2/2) • SDKs • System API • Win32 SDK or MFC • DirectX SDK or OpenGL • Socket library • Middleware (Game engine) • Renderware • Unreal • …

  27. Game Development Tools for Artists • 3D animation tools • Discrete 3dsMax • Maya • Softimage XSI • 2D tools • Photoshop • Illustrator • Motion tools • Motion capture devices • Motion Builder • FiLMBOX

  28. RenderWare GraphicsStudy GuidePart I

  29. Introduction to RenderWare Graphics 3.7 (1/2) • Criterion Software Ltd. • EA • Cross-platform graphics API for real-time 3D applications • PC • D3D8 / D3D9 / OpenGL • Console • PS2 / Xbox/ GameCube / PSP / N-Gage • The whole product line • RenderWare Studio • RenderWare Graphics • RenderWare Physics • RenderWare A.I. • RenderWare Audio • RenderWare Mobile

  30. Introduction to RenderWare Graphics 3.7 (2/2) • RenderWare Graphics SDK • Version 3.7 • C language binding • Cross-platform • Scene management • Tree structure • Built-in BSP scene management system • Exporters • 3dsMax 6 • Maya 6.5 • Viewers • Retained / Immediate modes • 75% world-wide game middleware market share • All programming libraries are static. • Documents • ~\Graphics\docs

  31. RenderWare Graphics Documents • Located : • ~/Graphics/Docs • “Must-read” • Tutorials : • ~/Graphics/Examples/Tutorials

  32. RenderWare Graphics Architecture • RwCore • Core library • ‘Rw’ • For example, • RwCaremaCreate, … • RW Toolkit • Utility functions • ‘Rt’ • For example, • RtLtMp, … • RW Plugin • Extensibility functions • ‘Rp’ • For example, • RpLODAtomic, …

  33. RenderWare Namespaces • ‘Rw’ • Functions situated in core library • rwcore.h • rwcore.lib • ‘Rp’ • Functions situated in plugin libraries • Linked and attached to appropriate headers and libraries. • ‘Rt’ • Indicated as a toolkit • ‘Rx’ • Used by Powerpipe API • ‘Rs’ • Source code to a simple platform abstraction layer. • “~/Graphics/Examples/Tutorials” • ‘rw’ • System constants

  34. RenderWare Fundamental Types (1/4) • Boolean • RwBool • TRUE / FALSE • 4 bytes • Characters • RwChar • 1 byte for ANSI • 2 bytes for Unicode • Integers • RwInt8 / RwUInt8 - 1 byte • RwInt16 / RwUInt16 - 2 bytes • RwInt32 / RwUInt32 – 4 bytes • RwInt64 / RwUInt64 – 8 bytes • RwInt128 / RwUInt128 – 16 bytes

  35. RenderWare Fundamental Types (2/4) • Reals • RwReal • 4 bytes • RwFixed • 16 bits integer + 16 bits fraction fixed point value • Rare used • Vectors • RwV2d • x and y components • RwV3d • x, y, z

  36. RenderWare Fundamental Types (3/4) • Coordinate system • Right-handed for models • Left-handed for cameras • Axis naming conventions • Matrices V = U [ M ]

  37. RenderWare Fundamental Types (4/4) • Frames • RenderWare objects holding transformation matrices • Two matrices : • Local transformation matrix • LTM • Converting the model from local space to world space • Model matrix • MM

  38. Hierarchical Models (1/2) • Hierarchical modeling explicitly models joints, or connecting models. • In RenderWare, the joints are represented by “frames”. • RwFrame() • Frame defines the hierarchy. • The model data is sectioned. • Each section is stored in an “atomic”. • RpAtomic() • An atomic can be linked to a frame. • With a collection of atomics and frames, forms a hierarchical model. • RpAtomicSetFrame() • RwFrameAddChild()

  39. Hierarchical Models (2/2) • A clump is a container for a set of atomics. LTM1 = MM1 LTM2 = MM2 x LTM1 LTM3 = MM3 x LTM2

  40. Matrix Combination Flags (1/2) [ML] [M] [MG] • Matrix and frame transformation functions in RenderWare Graphics takes a parameter, combineOP, to perform the transformation combination effects. • The available combination flags are : • rwCOMBINEREPLACE • Same as the REPLACE in TheFly3D • rwCOMBINEPRECONCAT • Same as the LOCAL in TheFly3D • rwCOMBINEPOSTCONCAT • Same as the GLOBAL in TheFly3d

  41. Matrix Combination Flags (2/2) RwFrameScale() forms a scale matrix : • For example :

  42. RenderWare Initialization (1/2) • Three steps : • Initialization for memory management & default file system • RwEngineInit() • Two memory management solutions : • OS-level memory management functions • RwMalloc() / RwFree() / RwRealloc() / RwCalloc() • Freelist • RwFreeListXXXX() • Setting the video mode • Opening the RW Graphics engine • RwEngineOpen(); • On PC, sending the window handle to RW • Choosing Graphics subsystem • RwEngineGetNumSubSystems() • RwEngineGetSubSystemInfo() • RwEngineSetSubSystem()

  43. RenderWare Initialization (2/2) • Setting video mode • RwEngineGetNumVideoModes() • RwEngineGetVideoModeInfo() • Width • Height • Color depth • Refresh rate • Pixel format • Flags (i.e. rwVIDEOMODEEXCLUSIVE for full screen) • Attaching the plugins & starting RenderWare Graphics • Attaching the all plugins used before starting the RW graphics engine • For example : • Attaching the RpWorld plugin, the retained mode scene management system : RpWorldPluginAttach() • Starting the engine • RwEngineStart()

  44. RenderWare De-initialization • Three steps : • RwEngineStop() • RwEngineClose() • RwEngineTerm()

  45. RenderWare World Library • Scene & static models • Dynamic models • Lights • Cameras

  46. RenderWare Scene (1/3) • RenderWare Graphics retained mode API • RpWorld() & RpWorldSector() • Scene • Static models – the ‘scenery’ • Dynamic models – objects can be moved or animated • Dynamic lights • Cameras • RpWord object • RpWorld is the container for scenes. • And is bounded by a single box which is subdivided into static sectors. • RpWorldSector object • Each sector defines cuboid volume within the scene. • The sectors are created by dividing up the static scenery using a binary space partitution (BSP) tree. • Speeding up the rendering performance

  47. RenderWare Scene (2/3) • Performing fast collision detection • The sectorization process is performed at 3D animation tool during exporting process and imported using RtWorldImport() toolkit. • Dynamic objects such as atomics, lights, cameras can be added to a world and linked to world sectors. • When the objects moving, the world plugin will decide which sector they should be linked to. • Only the world sectors that are visible to the camera used for rendering are rendered. • RpWorld iterators • RenderWare does not explore his scene management structure to public. • You must use the RpWorld iterators to explore all objects within a world. • Binding a callback function to the iterator. • You can access the world object.

  48. RenderWare Scene (3/3) • Four iterators : • RpWorldForAllClumps() • RpWorldForAllLights() • RpWorldForAllMaterials() • RpWorldForAllWorldSectors() • RpWorldSector iterators • Three iterators : • RpWorldSectorForAllAtomics() • RpWorldSectorForAllLights() • RpWorldSectorForAllMeshes()

  49. Creating a World • From foreign data • Use World Import toolkit to load a scene data created by artists using 3D software. • This will be demonstrated next week during the instruction for RW exporters.

  50. Rendering a World • When calling RpWorldRender(), the BSP tree is searched and the visible world sectors are rendered. • You can hook a rendering callback to world sector rendering process. • RpWorldSetSectorRenderCallback() • The callback, type of RpWorldSectorCallbackRender(), will be triggered prior to rendering each sector.

More Related