The Cyclone Game Engine is an in-house cross-platform 2D/ 3D game engine built from the ground up in C#. It comes compatible with the XNA and MonoGame Frameworks to help make it easier and save time creating games for developers utilizing these libraries. MonoGame is used as the back end allowing it to be multi-platform across PC, MacOS, Linux, iOS, and Android. The engine is built with a large degree of flexibility in mind. Due to its highly extensible and adaptable comprehensive code, it can easily be customized to suit the creation of any type of game. The game engine is not perfect by any means. The game engine is still in its infancy stages of development which is why I haven't made it available yet to the community. Its primarily built to serve the needs of Steel Cyclone Studio's game projects. Once it is further developed, I will release it. I am curious to see how others will use this tool one day; possibly in ways I never thought or imagined. This is the studio's first attempt at creating a first-person shooter from the ground up. The Engine Facts Sheet will be updated over time so stay tuned.
Below is a brief description of some base aspects/elements of the engine, alongside with my thoughts on development, and the source-code used. Some of the codebase for many core elements is taken from various sources which have been modified, optimized, and extended to fit my needs. I hope this will be of any help to all the struggling XNA and MonoGame indies out there, and give you some basic ideas and guidelines. This is not a tutorial, and I cannot go into technical details of implementation. However, if you are looking into building your own games and or game engines in XNA, MonoGame and or MXA, I highly recommend checking out the Developer's Survival Kit.
Below is a brief description of some base aspects/elements of the engine, alongside with my thoughts on development, and the source-code used. Some of the codebase for many core elements is taken from various sources which have been modified, optimized, and extended to fit my needs. I hope this will be of any help to all the struggling XNA and MonoGame indies out there, and give you some basic ideas and guidelines. This is not a tutorial, and I cannot go into technical details of implementation. However, if you are looking into building your own games and or game engines in XNA, MonoGame and or MXA, I highly recommend checking out the Developer's Survival Kit.
RENDERING & GRAPHICS | |
|
Effects, Lighting & Shaders | |
Shaders |
|
Lighting |
|
Shadows |
|
Water |
|
Particles & Weather | |
|
Plants & Vegetation | |
|
ANIMATION & MODELS
- Giff Animation Library
- Xbox Avatar Support
- XNAnimation 4.0 Library (Modified) - One thing that is really frustrating at first glance when making a 3D game in XNA 4.0/ MonoGame is the fact that you can only load a single animation with your model by default. The content pipeline simply won't import more. This was probably the biggest weakness of 3D in XNA. The Cyclone Game Engine fixes this with a modified version of the XNAnimation library. The importer supports more than one animation take within a single .fbx file. If you want an unlimited number of animations, you can export a bunch of models, each file containing one animation, and the content processor takes them all and combines them into one asset.
- Robot Animation Processor
- 3D Model Types: DirectX, FBX and Obj (Collada file support is in the works)
PHYSICS | |
The reason why some physics engines do not work in XNA is that most physics libraries are coded in C++. Examples are Havok, Ageia, as well as Newton; although I think their might be a conversion of Havok's library for C# but I could be wrong. Even if you have a C# wrapper, it can be very difficult to deploy these C++ libraries through XNA. Popular C# physics libraries you can use for your XNA and or MonoGame projects are JigLibX (Jiggle Library X), BEPU, BulletX, Digital Rune, Henge3D and Farseer. Check out the XNA Developer's Survival Kit for more information. You can also check out more physics libraries here. To handle the 3D physics, the Cyclone Game Engine uses JigLibX which I am extending and further modifying. JigLibX is a C# port of the C++ JigLib physics engine which was originally developed by Thorben Linneweber. JigLib is essentially a well matured C++ library for doing Rigid Body Dynamics. To learn more about JigLibX, click here. |
|
|
Character Physics |
|
Ragdoll Physics |
|
Vehicle Physics |
|
- Water Physics (WIP)
- Farseer (handles the 2D collision)
AUDIO
- 3D Sound Positioning
- Microsoft XACT is a great tool to implement sound into the game but I am also exploring new techniques with sound
GRAPHICAL USER-INTERFACE (GUI)/ LEVEL EDITOR
Because XNA and MonoGame exists less as an engine and more as an extremely robust, superbly usable library system, there is no "XNA look" or "MonoGame look", as there are with other game engines. To save time, the engine for now can essentially use a modeling program as its level editor. The engine tracks where the models are located and positioned in Model Space in an object editor like Autodesk Maya or 3D Studio Max, and displays them in-game exactly how you had them placed in Maya or 3D Studio Max. In general a Level Editor is a piece of software, we can use to create or design levels, games, maps etc..
- Neoforce by Tom Shane: This will be used as the GUI (Graphics User-Interface) for the editor
- Object Scene Management: Rotate, Scale or Translate objects along any of the three axes either individually or by a group (Work-In-Progress)
- Terrain Engine & Editor (Work-In-Progress): As of right now, the game engine can render a simple terrain that can be scaled at any size. A height-field bitmap is used to describe the terrain. The height-map processor which is the custom content pipeline for the terrain converts that bitmap image into geometry. The engine extracts the triangles from the terrain and creates collision for it.
GAMEPLAY
Cameras
- First-Person Camera: this camera is a simple FPS camera with spring physics that is attached near the player's head level. The camera is a perspective camera used to see the game in 3D. The first-person camera also includes shaking functionality. This is a great effect to used to increase immersion when sprinting, shooting in this perspective and to simulate an earthquake effect.
- Chase Camera: this is a third-person camera is used to follow vehicles as the player controls them. The chase camera has spring like physics as well.
- Ammo Count
- Weapon Selection Menu
- Radar
- Timer (for online play)
Inventory System
Split-Screen Support
ARTIFICIAL INTELLIGENCE (AI)
- Obstacle Avoidance using Steering Behaviors
- Path-Finding Navigation using A-Star
- Chase & Evade Functionality with Turn-2-Face Algorithm
I made a sample program that will be placed in the engine soon. It utilizes both steering behaviors to avoid obstacles that are enclosed in bounding spheres and path navigation through a graph to avoid obstacles that are enclosed in bounding squares.
INPUT & STORAGE
- Mouse & Keyboard
- Xbox 360 Controller
- EasyStorage
PLATFORMS
MonoGame allows the engine to support multiple platforms
- Android
- Linux
- Mac
- OUYA
- PS4 (Have to be registered through Sony to obtain their dev kit)
- PSVita
- Windows XP, Windows 7, 8, 8.1
- Windows Phone 7, 7.5, 8.0
- Windows 10
- Xbox 360
- Xbox One (Have to be registered through Microsoft in the ID program and obtain their dev kit)
With MonoGame 3.4 (which is the continuation of XNA 4.0) for Visual Studio 2015, it is now possible to create a game for Universal Windows Platform (UWP). This also makes it possible to get your XNA project to run on Windows 10 with UWP. Since the Xbox One dev kit supports UWP, you can get a MonoGame project running on it. - Zune (XNA 3.1 version of the game engine)
PROGRAMMING & NETWORKING
- C#
- XML (Used to define particles and quite possibly levels in the future)
Visual Studio 2010
- C# Express
- Professional
- Premium
- Ultimate
Visual Studio 2012
- Express for Windows Desktop
- Professional
- Premium
- Ultimate
Visual Studio 2013
- Express for Windows Desktop
- Professional
- Premium
- Ultimate
Visual Studio 2015
Visual Studio 2017
Visual Studio 2017
PERFORMANCE & OPTIMIZATION
- Multi-threading (WIP)
GAME STATE MANAGEMENT
- The engine comes built-in with a 2D/ 3D Menu System with transition effects, splash screens, loading screens and a pause screen. Networking functionality for online play is still currently in the works. The menu system displays an animated busy indicator whenever a network operation is in progress. In multiplayer, once in the lobby, a list of gamers is displayed along with icons indicating who is currently talking and who has marked themselves as ready. When all the gamers are ready, the game will load the map.