With the integration of the visual editor, we’ve started bringing it to life starting with the interface editor! You can now easily manipulate your game interface with a WYSIWYG editor which generates all the code for you, saving a lot of time better spent elsewhere in your projects. The timing of this is also perfect since we have just completed the 2D mechanics of Caffeinated3D!
ANNOUNCEMENT - Stage 2 Alpha
With the success of the first Stage 1 Alpha we were able to fix a lot of problems with the engine which would have driven users nuts. Now that all of the major issues that were found have been fixed it's time to prepare for stage 2, which will start on 10th January 2017 at Midnight! If you want to take part in this second alpha, all you need to do is register an account on the forums before January 1st!
ANNOUNCEMENT - Caffeinated3D Wiki
With the next round of testing starting very soon it was time for the Wiki to go live! It will act as the mobile version of the engine documentation, filled with examples, explanations, tutorials and general knowledge about game development that will let you create your games with ease!
ANNOUNCEMENT - Licensing
We’ve had a lot of questions regarding licensing for Caffeinated3D and we’ve finally come to a decision in terms of license types and cost!
These costs will be starting as off the first Public Beta around March 2017.
NEW FEATURE - Physically Based Rendering
This is something that people have been craving for from the start and it’s finally a reality. While there is still plenty of improvements to make we think we’re off to a good start, but we’ll let you be the judge of that.
NEW FEATURE - Interface Programming
Aside from all the fancy Rendering we’ve also been working on the start of Caffeinated3D’s interface system. We’ve created several new functions to build your interface with, and while the list is still quite small, we have lots of plans to expand it as time goes by. For now it supports all the basics that will allow you to get started, and for the more impatient, allow you to build your own custom widgets by merging together existing Widgets!
NEW TOOL - Interface Designer
Interface is a core part of any game, it needs to be fluid, easily accessed and look good! With the completion of the Interface Functions, it was time to introduce a fully functional Interface Editor, to save you time and help those who aren’t so good at programming understand how the Interface Functions work. This tool generates about 90% of your interface code for you and allows you to see exactly what it will look like in the visual editor without needing to re-build your project every time you make a slight adjustment. This is a convenience tool and is completely optional to use. Since it generates Caffeinated3D code you are perfectly able to build your interface entirely yourself in the code editor.
The interface designer is still a work in progress and while it is very close to completion, we want to introduce it to the engine along with the world editor. Aside from this, the interface functions themselves need some work as they have to be perfect. For these reasons, it will not be included in the Stage 2 Alpha. However all working interface functions will be, along with full documentation on how they work!
UPDATED - Asset Repository
Previously we announced the introduction of the Asset Repository as a means to add your assets a lot more efficiently. Now that has become a reality as we have integrated it into the engine. The Asset Repository is essentially your Asset Manager for your entire project. You can Import/De-import, Manage, Connect everything in your Project. It is also the tool required to set up Real-time Collaboration in-engine however this feature won’t be introduced until later in the future (but we’ve already made good progress with it :D)
UPDATED - Rendering Performance Enhancements
(The above graph is results from a basic scene without much content to show to general improvements to the rendering speeds)
MSAA was running off the window. This was very inefficient, and so we've switched to an FBO based method. This allows for a blit to the backbuffer, which resolves the MSAA. In other words, the blit will blend the texel samples, and this blended color is what is written into the corresponding pixel on the backbuffer.
We then took it a step further to use 4 frame buffers each in control of a quarter of the screen working independently but in sync to do the same thing as before but now it’s essentially using ‘multi-threading’ in your GPU resulting in much faster calculations.
This is probably the least exciting performance patch to the renderer. Simply put it stops rendering polygons on a model facing in the opposite direction. This cuts the amount of triangles to draw by half and while polygon count is not exactly a problem anymore these days, it’s good to still reduce them as much as possible!
An error was made when constructing the renderer looping system where we decided that it would be a terrific idea to update the client per frame. This was a really stupid move. To explain: if you are running at 90fps that means you are running the main loop of your game 90 times a second, which is fine if your fps didn’t change because if that then increases to 120fps you are now running your loop 120 times a second, which means stuff like a camera will start moving faster as it's being updated faster as well as unnecessary. So to fix this, the main loop now runs on a constant timer that updates every 30ms so now the main loop updates 34 times a second. This is completely unnoticeable to the user however the fps increased as a result.
This is something that every game needs so that it can perform at its highest potential. The Multi-Threading system is automatically integrated into every game made with Caffeinated3D using the provided MainLoop functions. Meaning you don’t have to set up Multithreading at all! For those unclear about what Multi-Threading is, it is the process of assigning tasks to your cpu cores individually. This means that several tasks can be done at the same time, the perfect example of this would be a loading screen, one core would display an overlay image with a progress bar, while the others use their power to load the scene behind it.
UPDATED - Client Output
Last patch notes we revamped the compiler output so that you could see and reach the cause of errors in your code much more easily. This turned out to prove incredibly useful for the testers and as a result they also requested a similar system in place for the Client Output. So that's exactly what we’ve done. It is not able to notify your of errors but most importantly Warnings, which can help identify memory leak issues or redundant code.
- SetFinalUpdateFunction (Redundant)
- LoadImage (Redundant)
- ReleaseImage (Redundant)
- CreateImage (Redundant)
- ScaleImage (Redundant)
- LoadAnimImage (Redundant)
- ImageWidth (Redundant)
- ImageHeight (Redundant)
- SaveImage (Redundant)
- ResizeImage (Redundant)
- RotateImage (Redundant)
- SaveFrame (Redundant)
- AttachWidget (replaced by Set/Get Parent WidgetFunctions)
- Fixed bug where the engine would automatically reload files when you didn’t want it to. This feature was introduced so that if you have made changes to your files external to the engine, the files inside the engine would automatically update. However this lead to a clunky system that started to cause a lot of problems. So we’ve simply removed it and added a new Refresh button!
- Fixed Bug where saving a file would add a blank line to the end. This wouldn’t cause any problems in your project but was fairly irritating so it’s thankfully been fixed.
- Fixed Interface Update Bugs, on the rare occasion the interface would refuse to update correctly. This was a strange bug that only occurred on Windows but has now been fixed.
- Fixed bug where a blank line was being added after each output from the compiler
- Fixed bug where some of the outputs from the compiler we’re being blocked and was simply returning a corrupt file error, when it wasn’t the case.
- Fixed bug where Atlas Mapper tool was unable to load .dds image files.
- Fixed Bug where window tracking in the Engine was counting the number of windows twice instead of once.
3D & Rendering is far from completion but has come a long way in quite a small space of time. We will be continuing to work on this system constantly as there is always room for improvement. Last patch notes we also spoke about moving onto Audio sadly we haven’t been able to start that yet but it is getting very close to the top of the task list.
Encryption is our next priority. The main issue finished projects have is finding a method to encrypt their projects and while there are a few softwares available, the free ones are insecure and the secure ones are very costly. We’ve already started developing a system for when you are making a Release version of your game to include an optional 512-bit encryption system. The way it works is converts all your art files to c3dm, c3dt, c3ds & c3dms files which no other program can read. Not even the engine itself. Unless you have the Cypher that you choose when encrypting your project, these files become unreadable for any software in the world!