Version 1 (modified by jo, 15 years ago) (diff) |
---|
=How to create a new gametype=
I just want to share my experiences from creating Dynamicmatch as a c++ and orxonox newbie. Creating a new gametype is not very difficult - although you produce valuable content for Orxonox.
==Where are the concerning source files?==
../src/orxonox/gametypes
All gametypes are stored in this folder. The most important source files are Gametype.<cc/h> All gametypes inherit the Gametype class. So most of your coding work is just to rewrite some functions.
==Strategy== Don't reinvent the wheel - try to copy and modify as much code from other gametypes as possible. #Know what kind of gametype you want to create. #Play existing gametypes and check which parts you want to adopt. #Search in the concerning source files for code you can adopt. #Start with the basic concept and add features later. (A Todo-List for the features would be nice.)
==Gametype-Level== *Level are stored in "../data/levels". You need a level to test your gametype. *For testing purposes just copy an existing Level and rename it. *Don't forget to set "gametype = YourGameType" in the <level> tag. *Put "create a level for my new gametype" on your todo list Later you should try to create a level that is optimized for your new gametype.
==Change the AI-behaviour== *The concerning file is in "../src/orxonox/controllers", called "ArtificialController.cc". *You can make the bots stop shooting at certain targets by adding some lines of code in the "bool ArtificialController::sameTeam"-function as displayed above. The function should return true, if a bot shouldn't attack a certain target. (Since the AI-player is in the same "team".)
==Miscellaneous== *Don't forget to add your gametype to the CMakeLists.txt or it won't compile. *Compiling with the terminal. Go to the folder of your orxonox branch. The command for compiling is
cmake -j3} }}. *Don't forget to backup your code via svn. Open a terminal, go to your orxonox branch-folder and type {{{ svn ci -m "reason for commitment or summary of latest changes" }}} . *Gamecommands: to add 2 new bots enter "addbots 2", to remove one of them enter "killbots 1". To display the scoreboard hit "F2". == Important functions inherited from Gametype == ||'''Function name'''||'''Effect'''|| ||allowPawnHit||Whenever a player would recieve a hit this function is called - if the function returns false a hit is not possible|| ||allowPawnDamage||Whenever a player would recieve damage this function is called - if the function returns false damage is not possible|| ||allowPawnDeath||Whenever a player would die this function is called - if the function returns false death is not possible|| ||playerEntered||what should happen, when a player entered the "battefield"?|| ||playerLeft||what should happen, when a player left the "battefield"?|| ||setConfigValues||interface for menue - to set the config values; ConfigValues are stored in a log file|| ||tick||this function is called whenever a new frame is rendered; dt is the value how much time has passed since the last frame|| }}}