This copy of the source code is under GNU LGPLv3 and introduces a significant number of changes over prior revisions.
Well here it is, v2.0 from almost a year ago now. There's been enough progress made since that I think it's probably fair enough to release this older copy now.
Not sure if I'd stated anywhere before but all new releases inc. this one will be under GPLv3, and I realise some of you might not be happy with having to make your own changes open-source on release as per the terms of the license, but I feel like it's fair game we all help each other out I guess?
To make things a little easier too, I've also gone ahead and included the third-party dependencies this time round. Last time was just a bit of a drop and dash, sorry about that.
Keep in mind that there's a lot here that's not finished (surprise) and a lot of really really dumb decisions made implementation-wise - this was pretty much thrown together for a jam. Since this version a lot of it's been pretty much gutted or overhauled too, so don't expect me to be able to provide much help on getting anywhere with it right now (though I expect things to settle more as the engine matures).
Below is a fairly rough list of changes on what was introduced here since the last release.
- 'platform' has been split up into 'plcore', 'plgraphics' and 'plmodel'
- 'yin' has been split up into 'common', 'launcher_sdl2', 'game' and 'engine'
- Binaries are now under runtime/<platform>/
- Content is now stored under either game-specific sub-directories and/or packages
- Console interface, which can be pulled down via ` key
- .node configuration language, for both serialisation and deserialisation
- User modified variables are now automatically saved/restored
- Discord integration (currently disabled)
- WAD replaced with new 'pkg' format, with support for compression
~ Introduced 'pkgman' command-line utility for packaging content
- New memory manager
~ Automatic garbage collection based on references
~ Debugging functionality for tracking memory usage
- Scheduler, allowing multiple concurrent background events
- Introduced first iteration of Yin World Editor
- New World format for storing sectors, portals, level meshes and more
- Significant improvements to collisions since last version (i.e. they exist now)
- Audio via SDL2 Audio
- Support for additional graphics APIs via plugins
- Shader programs are now registered in via .node files provided under materials/shaders
- Materials are now supported; can specify specific shader, multiple passes, blend modes
- World and actors are now culled based sector/portal vis
- World geometry is now all batched, alongside any additional sub-meshes
- PNG, TGA, JPG, BMP and GIF image support
- Introduced own GFX image format which provides some reasonable compression
- MD2 and PLY model support
- Post-processing pipeline
- Supersampling up to 2x display resolution
- GLSL shaders are now pre-processed on load, with support for #include directive
- Texture-blending via blend and blend_3layer shaders
- Normal-maps are now supported; tangent/bitangents are now generated alongside normals for world
- There's now support for variably sized bitmap-based fonts
- Toggable debug overlays are now available for profiling
- Actors are now spawned by an id string, rather than by index
- Simple particle system
I was hoping to finish v3.0 this year but it's looking like that's not going to happen. Lots going on life-wise right now and little motivation. Anyway below is a teaser of what’s in the works.