First BlitzMax screenshots of new engine

Community Forums/Showcase/First BlitzMax screenshots of new engine

ImaginaryHuman(Posted 2005) [#1]
I hadn't realised I could easily put the pictures in this thread as well as the worklog, so here they are for easier access..








It's a new engine, early stages yet, with realtime graphics generation based on blobby objects. Runs fullscreen 1024x768 well over 25fps here (Mac 1GHz G4 - nVidea GeForce4MX).

Let me know what you think, good or bad.


Beaker(Posted 2005) [#2]
Looks very interesting. The images look pretty as well.

Be interested in seeing it all moving.


BlitzSupport(Posted 2005) [#3]
Nice... very 'auroral'...


ImaginaryHuman(Posted 2005) [#4]
Thanks. They are meant to look `auroral`, kind of etheric. I just uploaded the proper hires screenies so they are now 1024x768 - see my worklog again.

It moves really nice but I think I will wait until it starts to look more like a game before I release a demo.

I'm a little undecided about exactly what sort of game it's going to turn into so maybe you can offer some suggestions :-)


jfk EO-11110(Posted 2005) [#5]
Very nice effect. How did you do that? Is it 2D or 3D or are you making use of some kind of string theory with unlimited dimensions?


ImaginaryHuman(Posted 2005) [#6]
There's no string theory involved ;-) lol but there are some definite influences of looking like auras and representing energy fields.

To me there's really no such thing as 2D, all 2D is at least in some way a little bit three dimensional even if it's flat. But in traditional terms, yes it's a 2D engine. I will probably eventually have 3D elements ie screenwipes and such but moving in the Z dimension in 3D is not going to be part of the gameplay. I'm not a very big fan of 3D gaming, to be honest.

This is done with custom OpenGL programming within BlitzMax using bglCreateContext and various OpenGL calls. It doesn't use any other Max2D except for loading pixmaps and making sure they are the right size/format. It's not a fancy pixel shader or using any special extensions, just basic OpenGL 1.2 stuff. It'd be cool to do more fancy things with pixel shaders but it looks too complicated right now.

At its most basic you're seeing a blobby-objects/metaballs technique. It doesn't do any calculations for the balls with the CPU, it's all done with the GPU where instead of calculating the area of influence for each pixel relevant to each object, I just use pre-generated images which hold all that data as color intensities. For those of you that don't know what blobby objects are there's a number of good resources on the web (see google). There are different kinds with different ways of defining the `dropoff` of intensity, some refer to it as metaballs, some blobby objects, soft objects, etc. ... but for a quick overview of blobby objects...

Usually when you render a graphic image you see it `as is` and what you see on the screen is what was in the source image. With blobby objects, you don't render the object itself - or at least you don't end up seeing just that. First you `pretend to render` or invisibly render all the objects using an additive blend mode similar to LIGHTBLEND, so that you end up with a screen or array full of several objects superimposed over each other. Generally the color maxes out at white, which is useful for defining a threshold. The objects together make a `field` or what they call an isosurface (jargon!). You then look at this field and you render certain intensities as certain colors, usually anything over about half intensity is thought to be inside a blob and anything less is outside. Also naturally you can change the threshold to whatever value you like to render other `bands` around the blobs in different colors or whatever. Ideally. It's not quite so flexible with the basic GPU an OpenGL because it really doesn't have fast enough remapping.

In my engine I don't quite have as much control as that -remapping isn't fast enough on a per-color basis, so I do some fudges and apply some full-screen blending passes to manipulate the blob field itself. The standard circular blobs as in my third screenshot are drawn in separate red green and blue channels. The `aura` around them is the gradient of the actual blob objects representing the accumulated intensity of their `energy field` past a certain threshold, ranging in intensity from about half down to zero. Anything higher than half has been turned into black space and then later filled with another texture to represent the blueish textured area inside the blobs.

The reason the other two images look much more irregular is because there's nothing stopping you from changing the shape of the blob object image from circular to any kind of variegated shape. Doing that computationally ie working out the change with a math formulae is much more difficult than just messing around with the images in Photoshop or such. The image is just a representation of the blob's energy field intensities so you can make it whatever shape you like, even animate it. :-) So long as it's based on the same gradient curve (something like based on x^2 or something, I don't recall) it still acts in a blobby way. Linear gradients are odd in that they form immediate connections between blobs rather than gradual ones, so you have to generate your basic blob image using a special gradient.

It all wraps up together with some extra passes to intensify the colors which also acts to shrink the gradients into a closer border, forming sharper edges. What I really wanted to do is have realtime fractals outside the blobs that change and reshape dynamically according to the blob image. Nothing to stop me doing that except the speed is very much not there. I'm happy with how it looks.

The game, eventually, is going to have metaphysical themes such as sychronicity, the law of attraction, probably lots of lighting effects, of course blob-object particles and other wacky realtime effects (rainbows?) lol
But of course that's just the candy and atmosphere, the gameplay itself is in early design yet.

It also looks much cooler when it moves :-)


jfk EO-11110(Posted 2005) [#7]
This is real impressive. "The only Limit is your imagination" says the Blitz Box (well, Blitz3D, but anyhow). It seems you have just beaten even that limit.


ImaginaryHuman(Posted 2005) [#8]
Thanks for the compliments! I'm definitely trying to be imaginative and different. You have to go out on a limb to reach the fruit of the tree.


ImaginaryHuman(Posted 2005) [#9]
I added another screenshot and further comments to my worklog (see sig) Here is the pic..