A custom 3D Engine that draws it's graphics to the Windows console and a game loosely based on Elite. Fully written in C#.
Elite not very Dangerous is a simple game made in my custom 3D Engine that draws it's graphics to the console. The game is very loosely based on the original Elite. Everything was made by me except for the really low level console interactions. Those were all adapted from Stackoverflow
All of the assets were also created by me. The sprites were made in Slate, the models in Blender, the sound effects in SFXR and the music in MuseScore.
It isn't really a game, it's more like a tech-demo.
https://www.youtube.com/watch?v=vIm_7NbgviA
- Uses the Windows command prompt
- 2 Enemies and a Boss with detailed models
- Mouse and Keyboard controls
- Short distance warp ability
- Pew pew!
- Planets
- It looks relatively good
- Space!
- Full HUD
- Difficulty scaling
- Soundeffects and music!
- Score saving
The music is a highly questionable fugue that I wrote in one hour
After I finished making an Asteroids clone for the Windows console I thought "What if I now made Elite in the console". First I dismissed it as I thought that I was far to incapable to do something like that. After a while of thinking about it I decided to do some research. I quickly stumbled upon OLC's 3D Rendering Engine tutorial. Though it was a tutorial for C++ it was pretty easy to convert the core concepts to C#. After a lot of tinkering I finally had a functioning renderer (rotation did take some time to get fully functioning). After that finishing the rest of the engine and game was relatively simple.
It was a very fun, challenging and educational project and I'm very happy with the result.
For the best experience use the Square font
If you want to use a different font, modify the Font option in assets/Settings.txt
You can either compile it from source yourself, or download it from the Releases tab just make sure that the assets folder is located in the same directory as where you launch the executable from.
I suggest you take a look at assets/Settings.txt for things like graphics or mouse settings before playing.
- Space / LeftMouseButton - Shoot
- W - Forward
- S - Backwards
- A - Left
- D - Right
- LShift - Up
- LControl - Down
- X - Break
- C / RightMouseButton - Short distance warp
- Q - Roll left
- E - Roll right
- LeftArrow - Yaw Left
- RightArrow - Yaw Right
- UpArrow - Pitch Up
- DownArrow - Pitch Down
- MouseMovementLeft - Yaw Left
- MouseMovementRight - Yaw Right
- MouseMovementUp - Pitch Up
- MouseMovementDown - Pitch Down
- M - Free mouse
- Escape - Exit
- R - Restart
The Engine uses a basic object oriented approach.
Though the Engine and the game are pretty closely integrated, you could definitely extract the engine (if you really wanted to for some reason).
The Engine itself lacks some pretty important features,
mainly true object layering and occlusion. I decided not to implement these feautures because
I was too lazy it wasn't necessary for this project and because it would cause unnecessary lag.
Actual frustum culling would be nice though...
Features:
- Fully written in C#
- Runs in the Windows command prompt
- Keyboard and Mouse support
- 16 colours
- Rotation based on forward and up vectors (is this really a feature though?)
- Object oriented architecture
- PNG and OBJ support
- Custom font support
- Basic line box collision detection
- Easily accesible settings
- Basic lighting
- Sound support
- Basic LOD support
If you have any tips, optimisations, balance changes, etc. Please either message me or make a pull request.
The game code is still very messy so any help with that is also greatly appreciated. The engine code is much cleaner, but still not that good.
Sadly the performance really isn't great. It will probably run on most computers at around 30-60 fps but you will have to tinker a bit with the settings. The biggest cause for the performance problem is probably the fact that all graphics are drawn to the console, which is kinda sad.