 | Homura Game State Management SystemHomura's game state managment system facilitates the separation of game-logic into easily manageable and interoperable blocks. The extensible, Object-Oriented game state system provides a
simple mechanism for the encapsulation of common states (GUI, 3D Scenes, 2D Scenes, Physics-based Scenes, Networked Games etc) through inheritance and composition. The managements system
is completely customisable allowing you to control the flow of your game application, whilst maintaining a common access point for rendering, input and scene manipulation. |
 | GLSL Shader SupportHomura supports a programmable graphics pipeline within its Scenegraph API, allowing for enhanced rendering functions to be carried out on the GPU, through the
incorporation of GLSL Shaders within the Scenegraph. Homura features an introspection system for detecting the capabilities of the Client's hardware and GPU extensions,
allowing your games application to balance performance with looks and scale across a variety of desktop hardware specifications, in an unobtrusive manner. |
 | Extensible Set of Common Development TechniquesThe API features OO-encapsulated solutions for a variety of common game development tasks, such as the integration of normal and bump mapping; water rendering; Terrain generation;
dynamic sub-pixel filtering algorithms; cartoon, bloom, depth of field and sketch effects; 3D Picking; GUI Systems; Collision Detection and many more. This features can be easily
plugged into your game application at various levels (e.g. Game State, Entire Scene, Individual Nodes, Multi-render Passes etc), allowing you to control the granularity of the desired effect. |
 | Powerful 2D/3D Particle Effects SystemHomura integrates two particle effects system's (jME and JOPS), along with each of their bespoke editing tools. This allows effects to be constructed using a simple GUI interface and integratead into
your game applications as first-class members of the scene-graph (with complete control over transforms, rendering effects, animation control etc). Homura is distributed with an extensive collection
of pre-built effects for a variety of common particle uses such as Smoke, Explosions, Fire, Dust, Clouds, Spell Effects and many more. |
 | Abstracted Physics IntegrationPhysics Integration is provided with Homura as part of both the Game State system and the Scenegraph itself. This allows you to construct global physics properties which act upon an entire scene (Wind, Gravity etc), whilst also
constructing scene elements which exhibit individual physical properties (mass, tension, acceleration, friction etc). Homura abstracts the Physics system, providing integration for the popular Bullet and ODE Physics APIs, yet allowing for the
custom integration of your Physics API of choice, without impacting on the application code itself. |
 | Pluggable Environment SystemHomura incorporates a pluggable, component-based environment system which provides animated Sky effects for your scenes (as SkyBoxes, SkyDomes, SkyPlanes etc). The system features components for astronomy, weather, day-night cycles, as well as an effects
interface for the custom production of your own environmental effects. The system fully integrates with the lighting and fog sub-systems of Homura's renderer for the creation of dynamic lighting effects based on the properties of the environment. |
 | AWT/Swing ConsolidationHomura provides a simple interface for the consolidation of Swing components and Homura's OpenGL based rendering system. This is a two-way system, with either Swing as the primary sub-system with Homura acting as a Swing canvas, or Homura as the primary
sub-system with Swing components acting as scene-level elements. The second mechanism supports the use of Swing components in a 3D fashion, with the 3D Picking input system used to trigger UI events. Several uses include: using Swing as a GUI system;
incorporating 3D rendering directly within Swing applications; utilising open source Swing components for video rendering, vector graphics etc. The possibilities are endless. |
 | Homura Sprite APIWhilst Homura provides advanced 3D rendering functionality, it is equally as adept at handling 2D graphics. To this end, Homura provides two different systems for the management of Sprite objects within your scenes (one lightweight for tight develop control
over the Sprite manipulation, one more heavyweight mechanism which provides automated methods for common sprite uses). Sprites are a first-class member of the Scenegraph, and as such can be used in a variety of rendering modes (Perspective and Parallel
projection for the manipulation of Sprites in a three-dimensional manner - i.e. Billboarding, Orthographic projection to use Sprites in a two-dimensional way). |
 | Runtime Statistical ReportingThe Statistical Reporting system within Homura allows developers to visualise the performance of their application during runtime. The system reports details such as texture binds, vertice counts, frame rates, allowing for the analysis of the culling efficiency
of the scene, use of textures, poly counts of models and many more. The system is bound to the application in such a manner removing the system and its overhead when converting from development to production builds is as easy as turning off a light. |
 | Runtime Debugging SystemThe runtime debugging system of Homura visualises hidden elements of the scene that typically impact on the execution of sub-systems such as collision detection, lighting, physics etc. This includes information such as Normals, Tangents, Bi-Normals, Joints, Physics forces, Bounding volumes and many more.
The debugging system also includes methods to alter the current scene renderer settings such as a wireframe-rendering mode, global ambient lighting, camera perspective changes etc. The debugging system can be utilised with the game state system using composition and inheritance, which, similarly to the reporting system,
makes it incredibly easily to remove it when switching between development and production-ready application builds. |
 | Extensible Game Console SystemHomura's Game Console System provides a Quake-style system for the manipulation your application's parameters at run time. The system is extremely flexible through its command processor interface, which allows you to create your own processors to handle input commands. The system is distributed with several pre-built processors
: integrated support for run-time Java code execution; JSR-223 Scripting support for JavaScript; a system to execute external scripts upon scene objects; a logo-like command language and many more. |
 | Reflection-based Scene Introspection and ManipulationHomura utilises and extends the jME Scene Monitor to provide a Swing-based, thread-safe GUI system for the run-time introspection and manipulation of the scene graph. The monitor allows you alter characteristics of the scene-graph such as Render States (Textures, Shaders, Lighting, Materials etc), Transforms (Translation, Rotation, Scale) and
detects and injects additional API properties such as the Physics system through Java's reflection capabilities. The scene monitor is highly configurable, allowing the integration of custom properties, parameters and event listeners to further extend the capabilities provided. |