<
current screenshots >
UpdateI am currently unable to continue work on this project due to my employers non-compete agreement. If anyone is interested in taking it over, send me a message.
Project DescriptionExtensible object-oriented C# game engine using XNA 4.0, based on a design philosophy of data-driven, reusable COM-style actor components and event based communication between engine services.
The current focus is on 2 and 2.5D games, using Farseer Physics Engine for collision and physics simulation. Full 3D is supported, but collision and physics do not have built in support yet.
SobrietyEngine was designed with extensibility in mind, using Event based communication and a data-driven COM design to create maximum reuse of the core engine. Every object and class is designed to be extended and modified. The projects main focus is for my personal projects, but hopefully its being written in such a way others can make use of it or learn from it. Current development is being done on windows, but there are plans for xbox testing.
Current Development InfoProgress will be slow for the next couple of months, due to time constraints and other projects.
note : Undergoing heavy refactoring and development.
Warning : All progress is accomplished in an agile way (read: features added and fixed as my projects require it).
Beta will be released once I have cleaned up and documented all code, as well as completed at least one or two small games as examples. This will likely happen early 2012.
Recent Major Progress
- Displaying of older Doom style sector floors, walls, ceilings, including concave/convex sectors with arbitrary number of holes.
- Simple mercury particle engine integration
ExamplesThere are currently no official example projects, however, a testbed game project is included that is use for testing, and will continue to be kept up to date.
The example game can be found at:
CheckoutDir\ExamplesAndTests\TestGame\VoidGame\
Latest ScreenshotLatest development screenshot:
Screenshot showing a random Mesh obtained from google sketchup warehouse with 8K faces, auto generating farseer static geometry. The grey circles and green lines are farseer debug drawings of active physics objects.
Currently Supported Platforms
- Windows 7
- Plans to allow Running in: Silverlight, Winforms, 360, Windows Phone
Currently implemented features (in varying stages of completeness):
- Event system: Components and game services subscribe and throw events to communicate and respond without tightly coupling objects. In cases where performance is required, direct accessing of systems and components is possible.
- Level / Scene creation: Current implementation allows loading of a 3D level mesh, slicing it by a 2D plane, and creating 2D level geometry (static farseer physics edges) based on the cross section.
- Object GUIDs: creates and handles unique guids for game objects - allows for specific naming and retrieval of objects by user defined names or by use of run time created GUIDs. Allows for quick comparison between objects without having its specific instance.
- Actor Game Service: handles loading and creating of actors from actor template files (actor definitions).
- Actor Template Editor: (in progress) - editor for actor template files, linked to actor components and populated with customizable component parameters for easy editing
- Actor Components: COM design for actors, handles components used to define and build actors. Components currently include: Animations, Life, Movement, Collision Bodies, Responders, Physics Bodies, Sound Effectors, User controllers, Collision Responders, Post Processing shaders, Model components, textured quads, cameras
- Scene game service: Manages game scenes. Scenes handle storing, updating, rendering of actors. Currently there is a simple Scene that stores actors in a list. Plans include adding scene graph examples.
- Input Handling: Event based system to decouple input from actions in game, allows for easy creating of various input devices. currently supports Xbox360 controller and keyboard
- Screen management: Screen based menu/gameplay system
- Texture Management: handles loading and tracking of used and unused textures for sprites
- Animation Management: Components and animation library for animations of sprites
- Farseer Physics Engine integration: Actor Components and physics system for use of farseer
- Sound and Music Management: event based sound system