Creature Corp - Movie Game Contest Entry

Started by Derron, March 14, 2018, 14:07:38

Previous topic - Next topic

Derron

(2018/04/11: Edited thread title from "Compo: undisclosed game" to "Creature Corp - Movie Game Contest Entry", also added the logo to the start of the thread)




Some weeks ago I planned a game and started creating a grid map system on that weekend in february


Since then I did not have much time - just a few evenings on another weekend to introduce basic tile-object interaction (do not want to disclose too much yet).

While my weekends were pretty much stuffed with buddy/family time I got some time since monday and fiddled a bit with problems I needed to tackle.
So I plan to have items being spread across more than one single grid/tile. For this I added "dummy tiles" which just redirect their stuff to the parent but am there so the underlaying tile system does not need to know about differences - it just sees "there is a tile and I know how to handle this stuff".

Ok, but then I came across what most iso-tilemap-developers will come across somewhen during development: painting order.

For single-tile approaches this is not thaaat hard: sort by some kind of "x + y + zHeight"-fake-ZDepth (so the more bottom right an item starts, the later it will get rendered. But I wanted to have multi-tile objects. How to tackle them? No problem if you have your images/sprites split correctly already. But this can get pretty tedious if you have to do this over and over.

Welcome to automation land.

So the last days I wrote some kind of "tile extractor" which extracts "subtiles/cells" from a sprite. Give it an image and describe the amount of cols/rows defined there.

The system then creates some polygons (according to some rules on how to "cut"), uses these polygons as shape and cuts individual segments out of the base image. Then it tries to merge single segments together if needed (eg. you have a not-all-tiles-using object with some graphical overhang). Means when using the above "fake z-depth"-approach it will work again with less problems (else you will see multi-tile-objects overlapping other items which they shouldn't).

Afterwards the single images are put into a spriteatlas and some sprites are created for convenient access.



As you see I have to fight some problems with corrupted memory - surely some pixmap offsets are incorrect - had trouble with "PixmapWindow" these days ;-)

bye
Ron

iWasAdam

#1
ooh. sounds complex  :P

But I really like the choice of colors and the subtle shading - still looks very nice though :)

It was about this time that I gave up on isometric in 2d and moved everything into 3d for this sort of thing. The clipping and sorting is all automatic and you don't have to think about it.

Naughty Alien

..you guys really cooking something nice..i really like this..is this a game or tool to make a game ?

Derron

Engine for the compo entry game.
Engine code will be added to my FOSS blitzmax framework Dig.


@ subtle colors
The final images will be in all glory colors ;-).

Yeah the 2d part makes it hard. Think with a static camera (orientation wise) one could even use 3 objects aligned to the camera...similar to hundreds of parallax layers.

While 3d has plenty of benefits I am not sure about performance once you do some detailled models. Animations and the likes are of course more cool..as dynamically addable instead of using prerendered images.


Bye
Ron

Steve Elliott

This looks interesting, keep us posted.
Win11 64Gb 12th Gen Intel i9 12900K 3.2Ghz Nvidia RTX 3070Ti 8Gb
Win11 16Gb 12th Gen Intel i5 12450H 2Ghz Nvidia RTX 2050 8Gb
Win11  Pro 8Gb Celeron Intel UHD Graphics 600
Win10/Linux Mint 16Gb 4th Gen Intel i5 4570 3.2GHz, Nvidia GeForce GTX 1050 2Gb
macOS 32Gb Apple M2Max
pi5 8Gb
Spectrum Next 2Mb

RemiD

Nice to see you create something else than "tv tower", keep trying ! :)

Xerra

I like the look of how ron's game is going. Should be some interesting entries to look at by deadline day.
M2 Pro Mac mini - 16GB 512 SSD
ACER Nitro 5 15.6" Gaming Laptop - Intel® Core™ i7, RTX 3050, 1 TB SSD
Vic 20 - 3.5k 1mhz 6502

Latest game - https://xerra.itch.io/Gridrunner
Blog: http://xerra.co.uk
Itch.IO: https://xerra.itch.io/

Qube

Oo, nice looking iso game ;D - Look forward to seeing it.
Mac Studio M1 Max ( 10 core CPU - 24 core GPU ), 32GB LPDDR5, 512GB SSD,
Beelink SER7 Mini Gaming PC, Ryzen 7 7840HS 8-Core 16-Thread 5.1GHz Processor, 32G DDR5 RAM 1T PCIe 4.0 SSD
MSI MEG 342C 34" QD-OLED Monitor

Until the next time.

Rick Nasher

Wow, that certainly looks interesting..
_______________________________________
B3D + physics + shaders + X-platform = AGK!
:D ..ALIENBREED *LIVES* (thanks to Qube).. :D
_______________________________________

meems

in my mind i simplify it to a top down 2D map. Then the map is a maze, with balls placed by the user, and an auto pathfinder from A to B.
but I don't see what the game is.

Xerra

Quote from: meems on March 16, 2018, 18:06:52
in my mind i simplify it to a top down 2D map. Then the map is a maze, with balls placed by the user, and an auto pathfinder from A to B.
but I don't see what the game is.

It's not the game. That's a demo of the game engine.
M2 Pro Mac mini - 16GB 512 SSD
ACER Nitro 5 15.6" Gaming Laptop - Intel® Core™ i7, RTX 3050, 1 TB SSD
Vic 20 - 3.5k 1mhz 6502

Latest game - https://xerra.itch.io/Gridrunner
Blog: http://xerra.co.uk
Itch.IO: https://xerra.itch.io/

Derron

Thanks Xerra ...you were faster with your reply.


I do not want to expose much of the game "idea", which is why I only posted the technical stuff. The isometric display is just my choice to represent some visual stuff which would not be needed for the game - could do everything with lists, selected items and some buttons + tooltips.

But I want to use such compos to create something "new" in regards to not having done such a thing before - might be "player profiles" and "casual games" like in the autumn compo, or here: something with an isometric grid.


bye
Ron

Derron

Finally found some time do tinker with the project:

Friday evening I created a simple character and played a bit with animations in Blender



Saturday was family time so only tinkered a bit on how to render tiles with shadows but "tileable". Was not able to come up with a proper solution. Materials have this slight gradients on them - not much, but putting them next to each other makes them pretty hard visible.

I thought of using an "emission"-hack. Means setting the material of the walls to be emissive. I would get rid of the shadows but especially in corners you would not have shadows as well and this looks pretty odd.
Think I will have to fire up my painting programme at the end and manually make them "tileable".
Only other noteworthy result for that day was a simple spriteatlas-generator (takes directory's images and puts them onto a spriteatlas + exporting an XML file readable by my Dig-frameworks registry.spriteloader-class). It does trimming but Cycles renderer left some "fireflies" on the images, so there are pixels with 1/255th alpha stopping the auto-trim - could add a tolerance-thing to the algorithm, but for now that's ok.



Today my wife was nice enough to take the son and visit her grandmother (I am there on Easter weekend, so I can skip todays visit :-)). So I played a bit with Python and the scripting capabilities in Blender. Why?
I have rigged a character and animated it (walking, stair climbing, ... what  I was interested in trying out). Now Blender isn't that friendly when it comes to reuse stuff on other characters. Also linking these characters into my main scene (where I have my lights setup, some basic tiles, multiple cameras according to the tile-size of the objects...).
Ok, my game should not use so much file space. This is why I only render every 3rd frame - and also I do not need every animation. Also I need the whole stuff rendered from multiple directions.

So during my tests I adjusted start,stop,frameskips and object rotation manually. Means with walk + idle I already had 8 adjustments, filename changes, ... and breaks until I hit "render".  Filenames were also a bit "uncool" (frame instead of "frame rendered"). All in all it became more and more obvious: this is a tedious job if I plan to have 10 different characters (visually more attractive).



So I wrote a little script which handles the stuff for me:
- defined "to render" characters, animations (name, start, stop, framestep ...) and so on
- iterating over them:
- - making the character of choice visible in "layer 0" of the scene
- - setting current animation stuff (start, stop, ...) (optional as I do single-frame renders)
- - rendering the animation frame by frame (skipping inbetweens as desired)
- - rotating the object (keeping lights etc on their position)
- - rendering again ... rotating again ....

While the script is a bit heavy now (cannot just abort stuff, so it runs except I "kill" Blender or it finishs the script) I am still satisfied to have learned a tiny new piece today.

Even with a single sprite rendering in ~10 seconds (I should really lighten the materials a bit, no need for pixar-style eyes and their exhaustive material setups ;-)) it takes a while "per character" (36 sprites for walking, 32 for current idling animation).
But once I finished doing the animations, the little variations in the characters ... I can execute the script, drink a cappucino and after a big while all the character sprites are rendered.



bye
Ron

iWasAdam

Looks very VERY nice! :o The character have a definite personality about them.

Qube

Oo, er!, looks pretty unique :) - Is it some sort of sims / computer shop game?
Mac Studio M1 Max ( 10 core CPU - 24 core GPU ), 32GB LPDDR5, 512GB SSD,
Beelink SER7 Mini Gaming PC, Ryzen 7 7840HS 8-Core 16-Thread 5.1GHz Processor, 32G DDR5 RAM 1T PCIe 4.0 SSD
MSI MEG 342C 34" QD-OLED Monitor

Until the next time.