Caffeinated3D - Blitz with OpenGL & Vulkan! - New Video!

Community Forums/Developer Stations/Caffeinated3D - Blitz with OpenGL & Vulkan! - New Video!

cysis(Posted 2016) [#1]
Hi everyone,

I'm the lead developer for a software that has been in development for just over 2 years and it's something that may interest all of you! One of the major struggles with Blitz3D while beautifully simple it lacked power in DirectX7.

So I wanted to show off our upcoming technology Caffeinated3D!

This is a brand new programming language which captures the true essence of simplicity with power. Much like the BlitzBasic languages, Caffeinated3D lends itself to a very easy structure so that developers with little or no experience can jump straight in and be able to create complex programs with the same power as c++ without all the headaches. Backed up by the OpenGL & Vulkan APIs for advanced rendering, Caffeinated3D can create beautiful real time graphics that rivals modern game engines!

Here are a few screen shots showing off the engine and it's tools!

Over the past several Months we've been preparing the introduction of PBR rendering and while it is still very early in its mechanics, we asked for a famous shader programmer from the NuclearBasic community to have a go.

Caffeinated3D is still being developed but is closer than you think to release! The public Beta will be starting in mid 2017 but if you want to get involved already, then there is a way!

The Stage 1 Alpha has already started. We opened the doors for 10 developers to get a head start and help us find all the bugs. On January 1st 2017, Alpha Stage 2 begins! If you want to get involved simply Join up to the forums and when the time comes you'll be able to get started!

Want to track our progress? We release patch notes on our IndieDB page every month, showing off our latest updates! So if you are interested, make sure to follow our project!

Please feel free to ask any questions on here or the Official Caffeinated3D forums and we'll do our best to answer in as much detail as possible!

Thanks for your time! :)

BlitzSupport(Posted 2016) [#2]
Interesting... and not just the colour scheme! :P

Good to see more straightforward "entity"-based 3D engines in the world.

RustyKristi(Posted 2016) [#3]
"Blitz3D using OpenGL & Vulkan API"

Sorry for being direct but the title is kind of misleading because it has nothing to do with Blitz3D or any Blitz Products. Technically Yasha already created bOGL which is Blitz3D/B+ using OpenGL.

You also have SoftPixel which is 99% Blitz3D command set and runs with Blitz3D and both DX11 and OpenGL, only downside is this is now discontinued.

and on top of that there you have a stiff competition here with BobySait's BigBang engine and BRL Monkey2 (FREE) which is now the flagship product and has plans for a 3D engine (rumor says).

Well best of luck anyway..

Yue(Posted 2016) [#4]
What price do you have to the public?

popcade(Posted 2016) [#5]
Unicode and HTML5 support please.

Ian Thompson(Posted 2016) [#6]
This looks very promising, I'll pop over and have a peek when it's available.

MadJack(Posted 2016) [#7]
I'd be up to taking a good look into this - I'll join the forums.

Zethrax(Posted 2016) [#8]
Signed up for the forum.

I'm looking forward to seeing how this product plays out, but after buying Nuclear Basic I'm very wary of these products.

The core product will need to be solid with emphasis placed on properly working and well documented core features and functionality. Having thousands of commands like Nuclear Basic did doesn't do any good if those commands are a buggy undocumented mess.

The code-test-debug cycle needs to be streamlined and respect the user's time and workflow. Blitz3D, Purebasic, etc do a good job of this. Nuclear Basic leaves me with the need to close redundant popups for each code, compile, and test cycle.

I guess what I'm saying here is that Nuclear Basic sucks. Don't be another Nuclear Basic.

For the language, one issue that I've always had with Blitz3D and other procedural languages is that eventually you hit a point with your program complexity where you need to manage lists and arrays of structured objects in a dynamic and versatile fashion. The object oriented approach BlitzMax takes to this removes pretty much all of these issues. Some of the things I'd like to see in the language are:-

> Being able to create arrays and linked lists on the fly as objects that can be attached and detached to variables and structure fields (as pointer values).

> Being able to move objects from one list to another list. For example, to move a character or item object from the list used to store the contents of one room to the list used to store the contents of another room.

> Being able to store different types of objects on polymorphic lists. A plate, a sword, and a character would all be different types of objects but they may all need to be stored on a list that holds the contents of a room.

Generally it's possible to work around these limitations, but it limits what can be done with programs that have these limitations. Often you need to downscale your ambitions for what you want to do with your project because the complexity becomes unmanageable when doing workarounds.

It's also important to have a way to connect entities with the custom data objects that hold data for them. If a collision occurs between a bullet entity and a character entity then I need to be able to use the entity handles or pointers returned by the collision system to find the data objects for the bullet and character so that I can apply the stored damage amount for the bullet to the health value for the character.

Naughty Alien(Posted 2016) [#9]
..for me this is interesting..ill keep my eye on you.. :)

cysis(Posted 2016) [#10]
@BlitzSupport Glad to hear you like our approach :)

@RustyKristi No need to apologise, i should apologise for misleading you, that was not my intent. The title was chosen simply because when you exclude the new functions in Caffeinated3D the remaining functions are almost identical to Blitz3D with the idea of "if you can code with blitz, you can code with Caffeinated3D". Other than the programming side, our technology has a whole engine slowly being developed to support your projects. Environment Editor, Interface Editor, Atlas Mapping, Animation keyframe wizards... etc all integrated into the IDE for your ease of use :)

@Yue We have discussed licensing however we are still deciding on how we want to handle it. Licensing and pricing will be revealed at the start of Stage 2 Alpha

@yoko From what i understand you are asking for the #FFFFFF colour support as well as RGB? You can make a feature request on our forums to make sure we don't forget but we are planning to include this!

@Ian Thompson Looking forward to having you around in the future!

@MadJack Glad to hear it! If you have any questions please feel free to ask away, one of the developers will be happy to answer!

@Zethrax After NuclearBasic i don't blame you, it was a great shame to see such an excellent project fade away. Just to re-assure you, here's a preview of how our development pipeline goes.

New Function created -> built into C++ SDK -> tested in C++ -> Exported to Compiler -> tested in C3D -> fix all problems we find -> release update to Alpha -> fix all bugs you find.

We have a fairly rigorous testing system, since the last thing we want is buggy functions which will cause you headaches when you cant figure out why things are going wrong. As for your Lists, Caffeinated3D can create lists with multiple different object types and i think we've managed to achieve what you are asking but i will pass on your requests to the rest of the team and we can double check and let you know! :)

@Naughty Alien Already seen you've been active on our forums :) Welcome to the family!

Krischan(Posted 2016) [#11]
Looks promising. Will the language be more simple like Blitz3D or is it possible to create more complex, object-oriented structures like in BMAX, and for example include C/CPP sources and modules?

Steve Elliott(Posted 2016) [#12]
Congrats on producing a computer language and engine - and choosing Vulkan. DirectX 12 and Vulkan are the future.

And Gabor is very talented.

cysis(Posted 2016) [#13]
@Krischan it's sort of a blend of the two. Blitz3D certainly had more influence since that is where we started and we really like the simple approach, but where Blitz lacked in power we've buffed it to try and perfect an awesome idea with much more modern tech. As for C/CPP files im afraid that is a no, however we have got a fairly stable C# interpreter system working (still needs some time though) which will allow you to import C# scripts into your project. This will be particularly helpful for people coming from Unity, though they'd still need a little tweak :)

@Steve Elliot Thanks for your kind words! We were very fortunate to get Gabor's help, he's certainly been speeding up development for our 3D systems! :)

Rick Nasher(Posted 2016) [#14]
Interesting developments these days..

Yue(Posted 2016) [#15]
Much anticipation, as I have always thought that the best option to improve Blitz3D was another dead project called Xors3d.

Yue(Posted 2016) [#16]
Rendering images with C3D Api Vulkan.

Caffeinated 3D GaborD Programming Team

Blitzplotter(Posted 2016) [#17]
since that is where we started and we really like the simple approach, but where Blitz lacked in power we've buffed it to try and perfect an awesome idea with much more modern tech.
Sounds interesting indeed.

@Yue - looking good ;)

KronosUK(Posted 2016) [#18]
@Yue it would be nice if you credited the guy who actually made these.

Yue(Posted 2016) [#19]

This is done with the caffeinated3d video game engine.

cysis(Posted 2016) [#20]

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!

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.

Face Culling
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!

Re-Draw Updates
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.

New Functions
(See full Function List: )

Fixed Functions

Removed Functions
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)

Bug Fixes
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.

What’s Next?
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!

Rick Nasher(Posted 2016) [#21]

degac(Posted 2016) [#22]
Nice images.
I haven't found any video of it. I would really like to see it in action!

cysis(Posted 2016) [#23]
We are currently in the process of getting post processing to work with our dynamic lighting system so with the next patch notes we'll be releasing some videos showing off real-time rendering with performance comparisons on low to high spec gpus as well as releasing the demo scenes as .exe's for you to download and test on your own pc to see for yourself what the engine can do :)

If you want to have a go early, make sure you sign up to the forums ( ) before 1st January and you are enrolled into the Alpha starting on 10th January for free! :)

Yue(Posted 2016) [#24]

We are expecting. :)

degac(Posted 2016) [#25]
OK, 2017 seems to start with some good news :)

KronosUK(Posted 2016) [#26]
@Yue I just meant give GaborD some credit for making those screenshots thats all.

Naughty Alien(Posted 2016) [#27]

Yue(Posted 2016) [#28]

Okay, I do not speak English and the translator sometimes does not help much.

Edit Post images.

Steve Elliott(Posted 2016) [#29]
Then why re-post other peoples work?

Simply a compliment would do.

Yue(Posted 2016) [#30]
@Steve Elliott

I can not understand, what I wanted with these images is to show what can be done with the Caffeinated3D engine, in no reason was my intention to say that I made those images in the engine.

I put the reference to that it is developed in Caffeinated3D and it is understandable that the engine developers between those GaborD, are behind the programming and the design. GaborD is in charge of Shaders, and is a Beta Tester.

Steve Elliott(Posted 2016) [#31]
Post 16 you posted a few images that weren't produced by you, now you have edited.

Just say the guys have done a great job! Not post what other people produced because it causes confusion :)

Yue(Posted 2016) [#32]

video here. :D

Chalky(Posted 2016) [#33]
There's something really weird going on with the perspective in that video. It looks wrong - though I can't put my finger on why - and at the end the two metallic spheres are stretched out of all proportion.

Yue(Posted 2016) [#34]

I think they are the remains of an extraterrestrial arrival to the place.

cysis(Posted 2016) [#35]
We think we've already fixed the perspective problem and we'll leave you guys to judge in the next video :) Do remember that this has still got a long way to go!

For anyone wanting to become part of the community and take part in the next Alpha, simply sign up to the forums before Jan 1st! :D

cysis(Posted 2016) [#36]
Hi everyone!

Don't forget to join up to the Caffeinated3D forums before Midnight on January 1st to become an alpha tester! We've already had several developers from various engines join up eager to get started, so come join the family and get started early or just explore what the engine can do :)


AdamStrange(Posted 2016) [#37]
no macOS version?

cysis(Posted 2016) [#38]
Not yet, it is a work in progress. Currently working on Linux and Windows

Vane Brain(Posted 2017) [#39]
Do I will be able to port games from Blitz3d to this engine?

cysis(Posted 2017) [#40]
The Syntax is very similar but there are some changes along with a plethora of new functions Blitz3D never had but depending on the complexity of your Blitz3D project it wouldn't be that difficult to convert it to Caffeinated3D

Imperium(Posted 2017) [#41]
Wow this looks impressive.

How well does this package scale to older machines? My vanilla Blitz project runs very happily in only 8mb of Vram. When I was looking into different languages and engines I was very unhappy with the performance of Unity and how it scaled. I even tried the UDK but quickly decided it was overkill for my project. The command set looks very similar to Blitz, I got my eye on you Cysis! :)

Pfffft no one games on Mac! LOL!!!

Steve Elliott(Posted 2017) [#42]

Wow this looks impressive.

I was very unhappy with the performance of Unity and how it scaled.

Agreed on both counts, although regards Unity I've upgraded my system since then.

Pfffft no one games on Mac! LOL!!!

lmao, yes just photoshop and 3d modelling isn't it? ;)

cysis(Posted 2017) [#43]
The engine is very lightweight and the games created with it in terms of performance and memory management is all down to how you build your systems, but we'll introduce new systems and functions over time to help you optimise your projects to the max without interfering with things. An example of this already being done is the automatic Multi-Threading in the Main Loop!

In a different topic we've been playing with material blending recently and produced some awesome results! :D

We are currently making final preparations for the alpha which was supposed to start 2 weeks ago, but just like everything in life, new problems came up and we had to delay xD
Fortunately we are only a few days away from finishing, but if you are still interested in trying it out then just sign up to the forums before we do launch the alpha, and we'll be happy to let you guys go nuts with it!

Yue(Posted 2017) [#44]


SabataRH(Posted 2017) [#45]
Interesting project. I do hope it's one that finally sees the light of day. I visited the forums but no real recent activity; my question ;is alpha still delayed and does signing up on the forums still guarantee a slot?

cysis(Posted 2017) [#46]
Yeah we are allowing more to come on board due to the delay. Having said that we are only a few days away from finishing the alpha build providing nothing else goes wrong so make sure you sign up as soon as you can! :)

MadJack(Posted 2017) [#47]
Standing by with interest.

I like how virtual mud - which would only evince disgust in real life - is awesome when it's virtual ;-)

cysis(Posted 2017) [#48]
In case anyone signed up for the Alpha was not yet aware, we have released it and you can now start testing out what we have so far!

Download links are available to all users who signed up for the Alpha, if you didn't sign up but still want to take part, then make sure you register on the forums and the next time seats are opened you'll get priority! :D

cysis(Posted 2017) [#49]
We started playing with the rendering pipeline of Caffeinated3D before switching to full Vulkan so that we can see the performance differences. Here is a small detailed scene in OpenGL 4.5 running at an average of 284 fps

Stanley then wanted to visit the garden!

BlitzSupport(Posted 2017) [#50]
Certainly looks the business!

Ian Thompson(Posted 2017) [#51]
Yup, looks good, how's the animation code developing? I would be good to see that robot move.

cysis(Posted 2017) [#52]
We are close to releasing v1.1 to the alpha testers which will bring the start of FMOD audio, much more efficient compiler and full Vulkan into the Engine. Animation has been started but turns out its much more tricky than we anticipated so that will be introduced around the v1.2 patch along with dynamic lights and the groundwork for physics :)

Hotshot2005(Posted 2017) [#53]
Register your website had been problem because when I register it and I should be expecting email from you and I havnt got it for ageeee...

Steve Elliott(Posted 2017) [#54]
This is looking very impressive for 3d coders...A tad expensive though.

cysis(Posted 2017) [#55]
@Hotshot the registration systems seems to be fully operational, please be sure to check your spam folder in case it accidentally fell in there.