Orisphere Playground aims to be an experimental game built on Orisphere.
When designing Orisphere, which aims to be a 3D modeling editor and renderer using analytic signed distance functions, the idea of implementing a simple explorer marble came up because it was a simple and cool way to interact with the created SDF (i.e. exploring a world map). I then realized that more interesting mechanics could be implemented with the same workflow used for rendering by designing SDFs specifically for the gameplay (the game editor would be an extended version of the Orisphere editor). The elegance of using the same method for the gameplay and the ability to experiment with the creation of world SDFs for more interactive purposes was too good to not make a game about it.
The game is about creating, sharing and playing levels. The player plays a marble and the levels can implement different gamemodes, e.g. a jumping puzzle, a race, a search and collect (easter eggs), or they can just be a way to explore a map. Some conscious inspirations are Marble Marcher, Kula World and TrackMania. The game doesn't aim to be an engine or general sandbox; the gamemodes are builtin and they will mostly be about getting from point A to point B, with a timer as a score, with limited mechanics and no scripting.
At first, it will only be a solo game, but in the long term, I may implement multiplayer with dedicated servers for an eventual community of people wishing to play together.
Ideas
Basic Physics
- Do continuous collision detection on the marble's velocity.
- Expel the marble from the level SDF. This may not give amazing results with animated objects, but it should be good enough for many obstacle ideas.
Gameplay Mechanics
- Killing surfaces, e.g. a laser.
- Magnetic surfaces (with good camera support).
- Boost surfaces, for races.
- Bumpers, as deflectors or in the direction of the normal.
- Damping or elastic surfaces.
- Accelerators: volumes with constant acceleration in a defined direction.
- Gravity modulations.
Sound Design
- For some ambient sounds related to a surface, use a SDF to modulate their amplitude.
- Do some ray casting on the level to improve the spatialization of sound effects.
Noteworthy Rejected Ideas
- Use multiple volume SDFs to modulate some properties of the rendering or physics by using the marble position to sample the interior. Unfortunately, with unions, the interior of the SDF will be a lower bound and will prevent smooth transitions. Constant properties for a given volume should work (as for the accelerators idea).
- Use the position of the marble as a parameter of the level, e.g. a surface will move or shine when close, an object will change shape, etc. It increases complexity, especially for the multiplayer mode.
Constraints
- The level SDF should have an exact exterior. This is very important for correct physics and rendering performances. But, experimentation should be allowed.
- At first, the levels will be experimental and people are responsible to trust the sources. But, in the long term, to share them and for multiplayer, work should be done to make it safer. Also, rendering performances are an important concern; automatic or manual ways to keep the experience fluid with third-party levels are necessary.