General note for demo and test applications
The CS::Utility::DemoApplication and related classes provide the basic functionalities for Crystal Space's demo and test applications. Most demos, tests and tutorials would want to use this class in order to simplify their code, make it more pertinent for the user, and unify the graphical and general layout between all applications.
Those classes can be improved with the following functionalities:
- scene management: define several scenes per application + ability to define them at startup
- threaded loading + loading screen
- more camera behaviors: collision actor, the 'free cam' from AresEd.
- use the iModifiable class to define the set of options available
- improve the textual HUD display
- CEGUI version of the HUD display
- add a help menu where to define a description of the application
TODO list for the CS demo applications
CS has currently two main complex (or planned to be complex) demo applications:
- csbias: a medieval first person shooter (in apps/demos/bias)
- csisland and its CEL counterpart cellifesim (resp in CS/apps/demos/island and CEL/apps/lifesim)
These two demos are setup with their basic configuration and assets, but they need to be enhanced by adding visual effects and details. Here are listed some ideas of improvements that can be made.
The island
The csisland demo contains only the basic level and its objects, while the cellifesim version adds more advanced behaviours and artificial intelligence.
The island level can be enhanced mainly by the very large amount of assets of very good quality of the YoFrankie project.
A first set of artistic work may be made in order to improve the appearance of the environment, this work would however be greatly facilitated if a dedicated CS terrain editor would exist:
- the terrain needs a finer texture set (to be made probably in PnP Terrain Creator)
- add grass, mushrooms and small foliage (to be made with the texture-base feature of the mesh generator)
- add trees and forests
- put some wind in all of that
- add other props and objects from YoFrankie (bridges, rocks, etc)
- the volcano should receive a moving material for the lava, some lava particles around it, and some smoke leaving the volcano
- put some particles here in there: lava splits and smoke at volcano, water falls, rivers, flies, footsteps of living entities
Other functionalities can be added:
- Use physics2 and add some physical effects such as a car example
- add some waves in the water. Ideally this should be made using the watermesh once it is working OK
- add environmental sounds
- lens flares & halos when looking at the sun or other light sources
- night & day cycle. There is already the 'environment' CEL plugin for that, although it can be improved (for example, the transitions between nights and days are missing).
- moving clouds
- weather effects
- underwater:
- better fog effect
- particles for air bubbles
- animated diffraction of the view
- special sounds, splash when going in/out
The cellifesim version of csisland that resides in CEL should be improved:
- More complex behaviors should be defined through the behavior trees: the sheeps should stop running away at some time and should have a 'stress' barometer, their wandering behaviors should be improved, the rams should protect the sheeps and fight with other rams, the Frankie's should attempt to throw the sheeps that are catched into the water, entities in the water should be eaten by the piranhas, the rats should try to build cooperative behaviors.
- Some path finding should be used, eg for steering behaviors or for the Frankies willing to find a path to the sea in order to throw the sheeps in the water.
Bias
Some functionalities eg for AI are probably interesting to be added at the CEL level, so a CEL version may be needed.
- convert collision detection to physics2
- use physics2 actor classes
- use more physical effects:
- create a physical model of the animeshes of the monsters (ie, a iBodySkeleton)
- put the monsters in ragdoll mode when they die (+ directional force), they can petrify to rock after some time
- when the monsters finally explodes in rock pieces, create a iRigidBody for each rock piece and add some particles
- arrow projectiles of the crossbow (most of it can be made by extending iPcProjectile):
- true ballistic: separate the arrow object from the weapon at the end of the 'fire' animation, then simulate the trajectory of the arrow & test its collisions at each frame. See the code of the physical particle effector.
- mesh effect for the trajectory of the arrow
- if it hits a monster: create a socket on the monster and add the mesh of the arrow to the socket + put a decal with blood on the animesh
- if it hits the environment: add particles around the impact + normal mapped decals for the impact on the environment surface (-> create a CEL material propclass holding the sounds and decals to be generated when colliding with a given CS material)
- improve the entity behavior/motion
- add more behaviors for the NPC's: flee, wander, ask for help
- two alternate weapons? sword for ragdoll effects, and crossbow for ice effects?
- add a loading screen + threaded loading
- add ambient particles: dust, flies
- add the walktest's terminal
- use CEL's region management
- player's death animation: ragdoll?
- add sounds: monsters, fights, footsteps, environment (music?)
- add a 3D inventory
- shader transition when the monsters are icing
- post-process effect when the player is hit
- behavior trees & path finding for the monsters
Previous demo ideas
There are several demos that we need in CS. These demos will all be made available as separate binary downloads so that people can try them out without needing the source of CS. Also we will make these demos a lot more visible so that people can find them easily. Here is a list of demos that are needed (some of them already in progress):
- Restricted castle map (indoor only) for inclusion with CS/SVN: this one is nearly ready and will replace flarge as the default level for walktest (flarge will remain but has to be started manually).
- Full castle map (extended indoor and outdoor). This will be a separate download and also with a static compiled walktest so that people can download it and walk in it. An extension of this demo is to use a 3rd person camera with Kwartz as a model. This will be made available somewhat later.
- Full castle map + small demo game. This will be a small game using CEL (using celstart system) which will feature the full castle and the kwartz model. This will also be a separate download.
- Restricted castle map with Kwartz moving on it. This will be made part of CEL and will replace the current level that is now used by celtest.
- A set of separate downloadable demos showing Crystal Space features. These will be demos using celstart (so one binary required) and show features like: terrain (perhaps current terrainf map?), imposters, animation, ... The idea here is to have small demos that only show a single feature. Here is a small list of possibilities:
- A big room showing different Kwartz statues with different shaders (parallax, bumpmap, reflection, glow, specular, ...)
- An animated gmeshanim performing different animations in sequence.
- A landscape level with foliage.
- Several smaller games and demos also using celstart (bouncy, boulderdash, old celdemo, ...)
- The big python demo that was shown by Hristo on the conference.
