1 introduction to game development. game platform game platform game types game types game team game...
TRANSCRIPT
1
Introduction toIntroduction toGame DevelopmentGame Development
Game PlatformGame Platform Game TypesGame Types Game TeamGame Team Game Development PipelineGame Development Pipeline Game Software SystemGame Software System ToolsTools
2
Introduction to game developmentIntroduction to game development
PCPC– Single playerSingle player– Massive multi-player online game ( MMOG )Massive multi-player online game ( MMOG )– Web-based GamesWeb-based Games
Console ( Video game console )Console ( Video game console )– Sony PS2Sony PS2– Microsoft XboxMicrosoft Xbox– Nintedo GameCubeNintedo GameCube
Arcade ( CArcade ( Coin-operated entertainment machine )oin-operated entertainment machine ) MobileMobile
– Game Boy Advance ( GBA )Game Boy Advance ( GBA )– Handheld video game consoleHandheld video game console– iPhoneiPhone
3
Game platformGame platform
Designed for office applicationDesigned for office application Not for entertainmentNot for entertainment A virtual memory systemA virtual memory system
– Unlimited memory usingUnlimited memory using But video memory is limitedBut video memory is limited PCI/AGP might be a challengePCI/AGP might be a challenge Open architectureOpen architecture Compatibility test is importantCompatibility test is important Development is easy to setupDevelopment is easy to setup
4
Game development on PCGame development on PC
Specific hardware designed for gamesSpecific hardware designed for games Single user / single process OSSingle user / single process OS In general no hard disk drive (??)In general no hard disk drive (??) Closed systemClosed system Very native coding wayVery native coding way
– Proprietary SDKProprietary SDK– Hardware related featuresHardware related features
Limited resourcesLimited resources– MemoryMemory
One console runs, the others do!One console runs, the others do!
5
Game development on consoleGame development on console
RPG (Role playing games)RPG (Role playing games) AVG (Adventure games)AVG (Adventure games) RTS (Real-time strategy games)RTS (Real-time strategy games) FPS (First-person shooting games)FPS (First-person shooting games) MMORPG ( MMORPG ( Massively multiplayer online role Massively multiplayer online role
playing game )playing game ) Strategy gameStrategy game Simulation gameSimulation game SportsSports Puzzle gamesPuzzle games Table gamesTable games
6
Game typesGame types
Development TeamDevelopment Team– ProducersProducers– Executive producersExecutive producers– Game designersGame designers– ProgrammersProgrammers– ArtistsArtists– Level designersLevel designers– Sound engineersSound engineers
Sales and marketing ( Sales and marketing ( 行銷業務團隊 行銷業務團隊 )) Testers (Testers ( 測試團隊 測試團隊 )) Game review committee (Game review committee ( 遊戲審議委員會 遊戲審議委員會 ))
7
Game team membersGame team members
Team leader (always)Team leader (always) Resource management ( Resource management ( 資源管理 資源管理 )) Administration ( Administration ( 行政管理 行政管理 )) Upward management ( Upward management ( 向上管理向上管理 )) Project management ( Project management ( 專案管理 專案管理 ))
8
Game producer Game producer 遊戲製作人遊戲製作人
Project management ( Project management ( 專案管理執行 專案管理執行 )) Daily operationDaily operation House keepingHouse keeping Not full-time job positionNot full-time job position
9
Game executive producer Game executive producer 遊戲執行製作人遊戲執行製作人
Story telling (Story telling ( 故事設計 故事設計 )) Scripting (Scripting ( 腳本設計 腳本設計 )) Game play design ( Game play design ( 玩法設計 玩法設計 )) Level design (Level design ( 關卡設計 關卡設計 )) Game tuning (Game tuning ( 遊戲調適 遊戲調適 )) Numerical setup (Numerical setup ( 數值設定 數值設定 )) Game AI (Game AI ( AI AI 設計 設計 )) Sound FX setup (Sound FX setup ( 音效設定 音效設定 )) Scene setupScene setup (( 場景設定 場景設定 ))
10
Game design Game design 遊戲企劃遊戲企劃
TerrainTerrain (( 場景 場景 )) CharacterCharacter (( 人物 人物 )) ModelsModels (( 建模 建模 )) TexturesTextures (( 材質 材質 )) Motion / AnimationMotion / Animation (( 動作 動作 )) FXFX (( 特效 特效 )) User InterfaceUser Interface
11
Game art Game art 遊戲美術遊戲美術
Game program (Game program ( 遊戲程式遊戲程式 )) Game tools (Game tools ( 遊戲開發工具遊戲開發工具 ))
– Level editorLevel editor– Scene editorScene editor– FX editorFX editor– Script editorScript editor
Game data exporters from 3D softwareGame data exporters from 3D software– 3dsMax / Maya / Softimage3dsMax / Maya / Softimage
Game engine developmentGame engine development Online game server developmentOnline game server development
12
Game program Game program 遊戲程式遊戲程式
Idea (Idea ( 發想發想 )) ProposalProposal ( ( 提案提案 )) ProductionProduction ( ( 製作製作 )) Integration (Integration ( 整合整合 )) TestingTesting ( ( 測試測試 ))
– DebugDebug ( ( 除錯除錯 ))– TuningTuning ( ( 調適調適 ))
13
Basic Procedures for Game Development
Idea Proposal Production IntegrationTesting
Debug Tuning
ConceptApproval
Prototype Pre-alpha Alpha Beta Final
> Concept Approval
> 雛形 (Prototype)
> Pre-alpha
> Alpha
> Beta
Flowchart of game developmentFlowchart of game development
Game types ( Game types ( 遊戲類型 遊戲類型 )) Game world ( Game world ( 遊戲世界觀 遊戲世界觀 )) Story ( Story ( 故事 故事 )) Features ( Features ( 遊戲特色 遊戲特色 )) Game play ( Game play ( 遊戲玩法 遊戲玩法 )) Game product positioning ( Game product positioning ( 遊戲定位 遊戲定位 ))
– Target playerTarget player– Marketing segmentation / positioningMarketing segmentation / positioning
Risk ( Risk ( 風險評估 風險評估 ))– SWOT SWOT
(Strength/Weakness/Opportunity/Threat)(Strength/Weakness/Opportunity/Threat)14
Concept design ( Concept design ( 遊戲發想 遊戲發想 ))
System analysis ( System analysis ( 系統分析 系統分析 )) Game design document ( GDD Game design document ( GDD 撰寫 撰寫 )) Media design document ( MDD Media design document ( MDD 撰寫 撰寫 )) Technical design document ( TDD Technical design document ( TDD 撰寫 撰寫 )) Game project ( Game project ( 遊戲專案建立 遊戲專案建立 ))
– ScheduleSchedule– Milestones / check pointsMilestones / check points– Risk managementRisk management
Proposal for testing ( Proposal for testing ( 測試計畫書 測試計畫書 )) Team building ( Team building ( 團隊建立 團隊建立 ))
15
Proposal Proposal 遊戲提案遊戲提案
High quality artworksHigh quality artworks– ModelingModeling– TexturesTextures– AnimationAnimation– MotionMotion– FX (Special Effects)FX (Special Effects)
Coding ( Coding ( 程式開發 程式開發 )) MarketingMarketing
16
QualityQuality>>
QuantityQuantity
Production Production 遊戲開發遊戲開發
Level integration ( Level integration ( 關卡串聯 關卡串聯 )) Number tuning ( Number tuning ( 數值調整 數值調整 )) Audio ( Audio ( 音效置入 音效置入 )) Artworks ( Artworks ( 完成所有美術 完成所有美術 )) Integration of game programs and artworks ( Integration of game programs and artworks (
程式與美術結合 程式與美術結合 )) Focus group (User study)Focus group (User study)
– Release some playable levels for focus Release some playable levels for focus groupgroup
17
Integration Integration 遊戲整合遊戲整合
Alpha ( Alpha ( 測試 測試 ))– Debug ( Debug ( 除錯 除錯 ))
Beta ( Beta ( 測試 測試 ))– Number tuning ( Number tuning ( 值微調 值微調 ))– Game play tuning ( Game play tuning ( 微調 微調 ))– MMOG ( MMOG ( 對線上遊戲而言 對線上遊戲而言 ))
»Closed beta ( Closed beta ( 封閉測試 封閉測試 ))»Open beta ( Open beta ( 開放測試 開放測試 ))
Critical testing ( Critical testing ( 極限測試 極限測試 ))
18
Testing Testing 遊戲測試遊戲測試
Bug Classification ( Bug Bug Classification ( Bug 分級 分級 ))http://http://www.cse.iitd.ernet.in/www.cse.iitd.ernet.in/
~jalote/papers/Common~jalote/papers/CommonBugsBugs.pdf .pdf – Memory leaksMemory leaks– Free already freed resourcesFree already freed resources– NULL dereferencingNULL dereferencing– Show in different formatsShow in different formats– Synchronization errorsSynchronization errors– Value outside domainValue outside domain– In terms of game play experienceIn terms of game play experience PrinciplesPrinciples– Strict guidelines for bug classificationStrict guidelines for bug classification– Tester vs DebuggerTester vs Debugger
19
Bug Classification
Bug Dispatch
Debug
Verify
Bug
FAQ
Y
N
?
BugsBugs
20
3D Graphics API 2D API Input Device OS API
3D Scene Mngmt 2D Sprite Gamepad NetworkAudio
Terrain Collision Character UIDynamics Sound FX
Game
Game PlayLayer
EngineLayer
SystemLayer
Game software systemGame software system
Graphics APIGraphics API– DirectX GraphicsDirectX Graphics– OpenGL 3.0OpenGL 3.0
Input DeviceInput Device– DirectX SDK – DirectInputDirectX SDK – DirectInput
AudioAudio– DirectX SDK – DirectSound / Direct3DSound / DirectMediaDirectX SDK – DirectSound / Direct3DSound / DirectMedia– OpenALOpenAL– NetworkNetwork
21
System Layer – APIs (1/2)System Layer – APIs (1/2)
OS APIOS API– Win32 SDKWin32 SDK– MFCMFC
NetworkNetwork– DirectX SDK – DirectPlayDirectX SDK – DirectPlay– Socket librarySocket library
RakNetRakNet““RakNet is a cross platform, open source, C++ networking engine for RakNet is a cross platform, open source, C++ networking engine for
game programmers. A lower level framework powers higher-level game programmers. A lower level framework powers higher-level features such as game object replication.”features such as game object replication.”
Source: http://www.jenkinssoftware.com/Source: http://www.jenkinssoftware.com/(last visited: 19 Feb. 2011)(last visited: 19 Feb. 2011)
Development environment .NET 2003Development environment .NET 2003
22
System Layer – APIs (2/2)System Layer – APIs (2/2)
3D scene management system3D scene management system– Scene graphScene graph
ShadersShaders 2D sprite system2D sprite system Audio systemAudio system GamepadGamepad HotkeyHotkey MouseMouse TimersTimers NetworkNetwork Driver development kit ( DDK ) interfaceDriver development kit ( DDK ) interface
23
Engine Layer (1/2)Engine Layer (1/2)
TerrainTerrain Advanced scene management – space Advanced scene management – space
partitionpartition– BSP TreeBSP Tree– OctreeOctree
Character systemCharacter system Motion blending techniquesMotion blending techniques DynamicsDynamics Collision detectionCollision detection SoundFXSoundFX User interfaceUser interface
24
Engine Layer (2/2)Engine Layer (2/2)
NPC (Non-playable characters)NPC (Non-playable characters) Game AIGame AI
– Path findingPath finding– Finite state machineFinite state machine
AvatarAvatar Combat systemCombat system FX systemFX system Script systemScript system Trading systemTrading system Number systemNumber system
25
Game Play ModulaGame Play Modula
Visual C++Visual C++– .NET .NET – Visual C/C++ 6.0+ SP5Visual C/C++ 6.0+ SP5
DirectX DirectX or OpenGL or OpenGL NuMega BoundsCheckerNuMega BoundsChecker
http://en.wikipedia.org/wiki/BoundsCheckerhttp://en.wikipedia.org/wiki/BoundsChecker
A memory checking toolA memory checking tool Intel vTune (Intel vTune (效能分析器效能分析器 ))
http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/
3D tools3D tools– 3dsMax/Maya/Softimage/Blender/3dsMax/Maya/Softimage/Blender/
In-house toolsIn-house tools26
Game development toolsGame development tools
http://www.cs.nctu.edu.tw/~cswingo/teaching/http://www.cs.nctu.edu.tw/~cswingo/teaching/3DGamePro/3DGamePro/
27
Course HomepageCourse Homepage
DoxygenDoxygen
-Use doxygen to document ALL programs:http://www.stack.nl/~dimitri/doxygen/
download.html
\3DGameCourse_Ogre_vc_9_v1-7-1 \3DGameCourse_Ogre_vc_9_v1-7-1 – \boost_1_42\boost_1_42– \lib\lib OgreMain.dll, OgreTerrain.dll, etc.OgreMain.dll, OgreTerrain.dll, etc.– IncludeInclude \OIS, \OGRE\OIS, \OGRE– mediamedia– \programs\programs
» gameSkeletongameSkeleton demo_hello.slndemo_hello.sln \media \media \\ stores fonts, textures, scripts, etc\\ stores fonts, textures, scripts, etc \release\release \debug\debug \source \source \\ cpp files and .h files and other\\ cpp files and .h files and other \bin\release\bin\release \\ binary, DLLs\\ binary, DLLs docsdocs \\ documents\\ documents
29
The File Structure of Game SkeletonThe File Structure of Game Skeleton
OGRE3DOGRE3D http://www.ogre3d.org/download/sdkhttp://www.ogre3d.org/download/sdk OGRE 1.7.1 or up Visual C++ .Net 2010 (32-OGRE 1.7.1 or up Visual C++ .Net 2010 (32-
bit)bit)
Course: Course: http://sourceforge.net/projects/ogre/files/ogre/1.7/http://sourceforge.net/projects/ogre/files/ogre/1.7/
OgreSDK_vc9_v1-7-1.exe OgreSDK_vc9_v1-7-1.exe
2010-04-25 52.3 MB 2010-04-25 52.3 MB