Note: The two images are intentional false positives I did for the purposes of demonstrating the bot and to verify its behavior.
Hey guys! I've been busy for a few days working on a side improvement to the engine code base that I want to share with you all. It is closely related to the SDL changes fundies recently announced as well as us adding support for Direct3D11 and modern OpenGL ES. We have basically extended our continuous integration to perform an image analysis on graphics tests to improve graphical fidelity both between the graphics systems as well as between ENIGMA and GameMaker. This is still a work in progress but I just this morning got it fully working to where we can successfully screencap the game in the Travis CI virtual machine (minor bug in our test harness taking the screenshot directly after game start and before any draw events were processed).
You can see what we're up to on the pr here:
https://github.com/enigma-dev/enigma-dev/pull/1291We expect to have it merged soon and will then be adding drawing tests from here on out.
I've also cleaned up the tile drawing code and optimized them on top of the vertex buffer functions I added for GMS compatibility. They are slightly different though because I use an index buffer to render them more optimally as an indexed triangle list. Regardless, from my benchmarks we can see that the tiles are not only more consistent now but also build and render much faster. When me and fundies get these image comparison tests merged into master, I will add a tile drawing test to prevent future regression of the functions and finally merge in the new tile code.
https://github.com/enigma-dev/enigma-dev/pull/1238I will be following up those changes by rewriting the model classes as well:
https://github.com/enigma-dev/enigma-dev/pull/1289The whole point of this changeset is to have less duplicate code by using proper abstractions of vertex and index buffer concepts, while essentially providing both to the user. This not only improves what ENIGMA already provided, but will bring new features and functions that users have desired. With all of that in place it will be super easy to finally have OpenGL ES working again as well as Direct3D11 because building a graphics system then simply consists of making each graphics system have working vertex functions.
I hope everyone likes these changes and will find that it's going to significantly improve the project. Open to comments/feedback/suggestions as always.