Awesome
<p align="center"> <img src="engine_logo.svg" width="300"/> </p> <h1 align="center"> <a href="https://github.com/MrcSnm/HipremeEngine/wiki/Getting-Started">Getting Started</a> </h1>The engine maintains some global options which you can modify it on source/global/opts.d:
- HE_DEBUG -> Use that for creating a debug version for the engine only
- HE_NO_LOG -> Disable the global logging functions
- HE_ERR_ONLY -> Maintain only error logging
Current features
- Input handler and text input with selected keyboard layout;
- Xbox One/Series Gamepad implementation;
- Minimal Matrix/Vector implementation;
- Asset packing, appending, updating and reading for faster performance(less IO);
- Multi threaded asset loading and decoding (image).
Platforms
Almost all of those platforms can be built by using the hbuild project.
If you have D installed already, the hbuild can be got by running
dub run hipreme_engine:hbuild
If not, you may go to the BuildAssets page and select your system. Both the language and engine will be installed locally by using them.
Build System Showcase
- Xbox Series (UWP): build/uwp
- Android: build/android/
- Browser (WebAssembly): build/wasm
- PS Vita: build/vita
- MacOS : build/appleos
- iOS: build/appleos
- Windows: bin/desktop
- Linux: bin/desktop
Requires libgl1-mesa-dev for opening X11 window and OpenGL
Features
- Simple build system
- Virtual File System
- Centralized asset locator with caching
- File reading with progress notification
Rendering
- Metal 2.4
- Direct X 11
- OpenGL 3
- OpenGL ES 3
- OpenGL ES 2
- WebGL 1.0 (OpenGL ES 2 emulated)
- HipRenderer (abstraction)
Features
- Sprite
- SpriteBatch
- GeometryBatch
- FrameBuffer
- BitmapText
- Shader
- Material
- Tiled maps
Audio
- AVudioEngine
- OpenSL ES
- OpenAL
- XAudio2
- WebAudio
- HipAudio (abstraction)
Features
- Streaming
- 3D audio
- Low Latency on Android -> See flags at config/opts.d
HIP_OPENSLES_OPTIMAL
andHIP_OPENSLES_FAST_MIXER
Decoding
- Images: PNG, JPG, BMP, TIFF and maybe others via arsd-official:image_files
- Audio: MP3, OGG, WAV, FLAC via audioformats
- Tiled: TSX and TSJ parser
- TextureAtlas: JSON, ATLAS, XML and TXT(Spritesheet) parser
- Font: FNT, TTF, OTF
- Pack: HapFile(Hipreme Asset Packing File)
- Settings: INI/CONF, JSON (HipremeEngine own's implementation that simulates std.json but faster) and CSV
Coding
- Scripting:
- D ( check api module for reference )
- Filewatcher for recompiling the script
- WebAssembly server reloader
- Live reload ( no engine restart for coding )
State is not saved, it is a simple restart, but all the assets are also cached, so, it is still way faster than reopening.
- Lua (outdated)
- May be subject to removal
Next steps
- GLSL to HLSL transpiler
- Multi threaded audio decoding (currently only single threaded is supported)
- Create a proof of concept
Issues list
- You can't spawn an Object from within an interface without calling
hipSaveRef
orGC.addRoot
. This is a bug on DLL implementation which doesn't actually add the new object spawned from an interface as a leaf.