Creature Corp - Movie Game Contest Entry

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

Previous topic - Next topic

Derron

#30
(This is a copy of the post in the compo-thread)



Linux: https://www.gamezworld.de/files/CreatureCorp.linux.7z
Win32: https://www.gamezworld.de/files/CreatureCorp.win32.7z

Some unneeded stuff removed (png files) - for the low-bandwith-dudes of us:
Linux + Win32: https://www.gamezworld.de/files/CreatureCorp.Linux_and_Win32.7z

(if the game is not running on your lowres-display: open up config/settings.xml and adjust resolution)



GameTitle: Creature Corp
OS: Windows + Linux
Based on: "Saving Mr. Banks" or "Time and Again" (documentary about Jim Henson)

While the game is far far far ...did I say it already? far... away from completition the base idea was to have some company running which solely purpose is to create cartoons, effects - and after some research also CGI movies.
As time was running out (and gui interaction stuff got pretty complex) it is more of a techdemo-kind than a real game (albeit I tried to plug in some stuff in the last two day's evenings).



So start the game and hire some applicants to do the work for you. As there is no "custom production" now you can only use the auto-created "contract production".  With the money you have you can buy new devices (just click on the paper-boxes laying around to open up the buy-dialogue).
To sell stuff you click on the devices and hit sell ;-)



To fire dudes: select them and there they go.
With "tab" you could enter into some debugview, but there is not much to see.

With cursor keys you could move around on the map.


So this means:
CURSOR KEYS: move camera (if desired)
KEYS 1-4: adjust speed (time and movement)
LMB: confirm actions
RMB: cancel actions




The game was written in BlitzMax (and should compile with NG). It features a person name generator for various countries, and a tile grid system written for this game (never done before).
As I always want to learn something with the competitions I tried something new this time:
- grid system
- sprite-split to automate sprite splitting from a "rendered whole item" into "grid pieces" for proper z-indexing/hiding
- automate stuff in Blender via python scripts (wrote some to render the various figure animations, item-views...)
- randomize stuff in Blender (variable hair/skin/cloth color)


Excuse again for this "tech demo" without sound/music ... you could add one via config (game is aware of playlists) but I thought it is not really needed to add SFX/music now - as the game lacks so much gameplay already.


bye
Ron

Derron

While the game lacks many game play aspects (custom production, "unit->device" filter/limitation, "produced production point"-bubbles and so on) it already contains a lot of stuff just not visible yet.

Maybe I made it overly complex already (with constant-getters, productionDeviceItems extending layerItems extending layerEntities ...) but somehow I think this is needed to avoid "includes" or mega-sized-main-files.


As mentioned I found some bugs in Blender which ate a bit of my sparetime: if you update objects via Python scripts the representation within Blender is no longer "up to date" (even with scene.update() calls). So elements appear as if they were rotated - moving them (grab/rotate) and aborting it (escape key) corrects it. Nonetheless I had some issues with the auto renderer sometimes rendering borked stuff.


With "low" rendersettings (576 samples) I rendered the "desks" in about 30 seconds for each frame. So each desk (4 directions in 2 states) rendered in about ~4 minutes. Render times for the characters were a bit shorter (at the end I was at about 20 seconds per frame). ~70 frames (avatar + animation) in 12 characters = 840 frames, .... think you get the render time.

Glad I automated much of this stuff. I also prepared some more items (plants, decoration stuff in the building) but after fiddling around with the "blocks seat-spot of desks or not"-checks time was running out. So sorry, no book shelfs, colorful flowers or other small things (power sockets for the walls, wall lamps ...).

The game is prepared to have "shadows" rendered in extra steps but I think with the current light-setup this is not needed.


To be able to render the figures _sitting_ at a desk I would need to split the sitting animation into "below" or "above desk" (via an "hide out" plane in Blender). This is the only way to allow an flexible rendering of "x chars vs y desks" (the other approach would be to render the desk with the figure as animation).
Hmm, maybe standing is already "good enough".


bye
Ron

Derron

I just recognized that I forgot adding another character I prepared... but nah, no worries ;-)


Meanwhile I want to share with you some details about the character animation + rendering.



As wrote earlier, I created the stuff in Blender. I set up a new .blend-file containing a basic grid (so you could add some stuff and render "including grid tiles") - it also helps to layout stuff on it (center on grid tile, size it so it fits to 2x1 tile etc.). There I also do the light stuff (adding a sun, some lamps defining the shadows, ...). Most important: I added some shadow catcher, so there is alpha-transparency shadow instead of having a shadow on a fixed underground color/grid-tile. There is also an "alpha hideout"-plane added which hides the whole grid/tiles from the render. For which reason is that needed?

Ok, all my grid tiles were modelled in a "expose ground/below surface" way. But as I was not sure how I finally implement stuff in the grid engine, I rendered most of them "without" that part (eg. to avoid "texture bleeding" when rendering them at floating point coordinates). But at least I learned how to do that stuff and was prepared to use it to my advantage.

So I had this basic scene setup and were ready to fill it with stuff. Blender has the nice "link object" ability. In essence you have two files and link one object,group,light... from file A into file B. File B only contains a reference then and when you update stuff in file A, file B will represent the changes then. It is a bit limited, you cannot link an armature from file A to C and a character/model from file B into C - and bring stuff together there. Nope. Does not work yet (waiting for many years now).
Ok, basic scene setup... I created another file with some basic character model for "man" and one for "woman". In Blender you animate armatures rather than the model itself. The characters were "rigged" (assigned to the armature and then the vertices were weight-paint-assigned to the armature's bones). Both character bases were using the same armature. This is needed, as the "animation" is stored for the armature. I did not want to do things multiple time (for each character) and am not yet knowing how to handle all the NLA-stuff (non linear animation). You store your animation ("move hand from x at frame A to y at frame A+10") in blocks but hmm...something to learn next time.



Now I had 2 nude characters (nipples anyone? ;-)). I modelled some clothing: sakko, shirt, pullover, throusers, skirt, shoes, glasses, ... and also modelled the hair. So one could call this "props". These elements were also added to the basic armature (and weightpainted). So I could copy/duplicate them along and just alternate the materials to create some different "looks" already.
For each individual character I "linked duplicated" the models if possible. Means if I changed the original model, it changes the duplicate mesh data. But I was still able to adjust material on this copies.



Using some "random" material created a new skin-tone/shirt-color variation on each "linked copy" of the character/clothes object. Dunno how to "randomize" on command, but for now I just did it another time if the skin tone was not how I liked it to be.
I added this stuff to the clothing to. Created some "procedural material" for the pullovers, shirts ... to avoid use of textures.




At the end I created 12+ character variations - woman with long hair, pigtail, baldy man ... And I added some simple shape keys to the character model so I could adjust ear size, nose size, breast size... . Basically you create a "base shape" (store current mesh) and manipulate the mesh then (eg. resize ears). Then you can morph between "base" and "new shape" (only changed vertices are taken into account - so you can mix shapes).


Finally I linked in all the characters to my "main scene". Rendering them out now would become tedious - bringing a character to the right render layers, renaming output file, setting which frames to render and what to skip for this kind of animation (rendered every 3rd frame when walking...). So I wrote the scripts I talked about earlier. They automated most of the stuff - at least once I "finished" them.

I extended the script to also change to a "avatar camera", change light setup ... and render "faces/portraits" of the chars. They are used in the person-datasheet (applicants, employees).



Enough of the insights, dunno if someone was even interested in it.


bye
Ron

Matty

A lot of work went into the animations and graphics it looks like. I read your posts above but havent played it yet...writing this on my phone.

iWasAdam

the modelling and animation is extremely well done - I love it.

Derron

So people here seem to like the visual representation and the basic/described idea ... so I ask you:

- what would you like to be able to do in the game
- how much of the tasks should be done automatically (searching "useful" working shifts, the right device for a persons skills ...) and what should be done by the player
- how "difficult" should it get?
- singleplayer - and if multiplayer, competitive play?


bye
Ron

Steve Elliott

Well to kick this off, I think 2 of us saw Theme Hospital when looking at the visuals and animation.  A possible route to take.
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

Qube

When I first saw this I thought "Cool, a computer shop simulator". That's the direction I'd take with this. There is loads you could do for a computer shop simulator. If you don't fancy it then I may have to do one :P

If we're taking the above idea then there is 3 key areas :

1.. Sales people
2.. Technical people
3.. Stock management people

Each of those would have a whole heap of individual tasks to do and that leads on to quite a nice management sim if done right.

I know this is not what you are aiming at but a specific shop sim could work really well.

QuoteSo people here seem to like the visual representation
Very much so. Immediately you wonder "What's this all about?" and that's a great catch.
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.

Derron

#38
@ "The Crazy Computer Corner"
I am pretty open concerning the theming - as long as the "mechanics" are nearly the same - or equally "extendable".
This is my main concern with "computer shop". Ok, so you start with eg. one employee (you - or you + buddy).

You have multiple "stations" in the store:
- storage racks where people take the items they buy
- info points: people could inform about stuff there
- cash-point/check-out where people pay for the stuff
- repair point, where people bring in their stuff for repair
- background: stock management
- optional: "lounges" showing cinema speaker-setups, big screens ... increasing a modifier for "buy item X" (above a level and figures will buy it)
- optional: advertisements: walking by them, raises interest in something ( more about in the next sentences)
- optional: ...

So people would go into the store "looking what's where" or "have to repair something". They lurk around the storage racks. For each potential buyable item they have some kind of "interest level". Interest levels are raised by moving buy a storage full of that items, by "lounges" - and by talking to people at the info points. Once a specific level is reached, that (and maybe only that) item is tried to get bought. So "customer" takes an item (lowers availability) and brings to cash-point. As soon as the item is taken from the shelf some kind of "impatience timer" is starting. As soon as this is running out without having paid for the item, the customer brings it back to the shelf!
Why? Because this way you are enforced to always have enough cash-points so to avoid long queues at them.

Ok, your employees would have "stats" (trainable, improvable by "excercising" it). So cashiers get faster (modifying "cashing time" by up to X percent) and so on.


So far...so good. BUT back to what I initially planned to write about (but first needed to explain what I think you were trying to "sketch out"): how to scale endgame? You could increase "storage area" (bigger store), hire more employees ... and then? Is the whole game about "store management" or is there something "more"?
Of course you could add "phone orders" (talking about the 80/90s) or later on "online shops" but they have different "game mechanics" leading to something totally different. Or they just look "grafted". Just think of 1-2 extra sections/departments in the store. There you can add computers and hire people to code the shop, then you have a section for "order management/shipping" ...
Another solution would be "multiple shops" but I think "simulation" will become pretty cpu-heavy (except you "simplify" stuff then, so people wont actually "walk" bout just wait a second and then do something "random task")

In "Creature Corp" the endgame would be to produce your own movies and to research tech to be "ahead of the competition". So in essence: what would be the endgame of the "Crazy Computer Corner" game ?


bye
Ron

iWasAdam

I had to fire this one up again to get a feel for it.
I love the look and the little people. mechanics (the top bar, drop downs, windows i thought could be (hmmm) better, simpler, that sort of thing.)

ok. me thinks for a while.
I like the little people and the style. and I really like the concept of a computer 'repair' shop. it speaks to the geek in me. oooooh. "Speak To The Geek" has a nice ring about it for a title?

if you take the general concept of transport tycoon and rollercoaster tycoon. you have a (general) goal and try to get to it - time, money, people, etc.
E.G.
you have 12 weeks to fix 12 computers
you must employ 5 people at end of week 3
you must have 24 people come into the shop in one day
you must make 1000$ in one week

so...
that means you have money, a timescale (days), people, things to buy/mend and must manage them.

lets assume it is a computer repair shop.
it need 2 things:
1. the front of the shop - how many people can be served in it, possible displays to entice people in, counter to serve people at. wall with door to back of shop where the computers are fixed
2. the back of the shop - here you have desks where things are fixed. you need to buy in parts, fix things and send them out. antivirus would need someone skilled in software, etc

There's legs in this concept :)



Derron

#40
So your gameplay would consist of the "management part" (hire/fire/... and buy spare parts) + "missions" ?
I think "bigger games" need some bigger - or harder to achieve - targets. With harder to achieve I am talking about stuff which is required for a target but is only available once you did something (eg. you need to research something first, or you need to have employees with "software programming" skills of lvl 10+ ... or such a thing, and level 10+ is only reachable once you sent the employee to some kind of studying course ... and the likes).

Why am I asking for such a thing? It can and will get repetitive to soon if you cannot "explore" something new during playing the game. It wont be a 5 minute-per-session thing so you need to provide some variation, motivational stuff for the player. Which is why many games add "events" (desasters anyone? ;-)) and some kind of tech-tree (which limits the beginner-stages and provides "individual development"). The limitation of a "repair shop" should somehow become "realistically" overcome. So a tech tree "repair mouse -> repair keyboard -
> repair complete computer" sounds as if you took the player not serious ;-). With repairs the only limitations are things like: to reprogram a bios you need to have a bios flashing utility. The steps to do that are the same for installing windows then. So this is what makes me a bit "uncertain" if it works. - in other words, such issues need to get tackled before as you else start creating something which then does not work at the end.

In short: how would the game "evolve" while playing, what would get added as available functionality later on, how to keep "continue playing" motivation up?



@ GUI
Yes, I wasn't satisfied either. I think the datasheet visuals itself are OK and look well suited for a "manager sim" while the top-hud was something I put together in < 10 minutes just to learn how to properly "cut out" layers from others in Photoshop while maintaining editability and not creating complex shapes (boolean combined vector shapes) - as I wanted to be able to colorize the "input areas" (the "cut outs" and underlayed parts). Also instead of "lists" for items you could have some kind of "area".
In TVTower I did it this way - and would do that in such a game too, if the items are "limited":


(these images are vector based ones - as this fit more to TVTower now, but I would of course render things out to keep style consistent)

So this would work for eg. 10 "fixed" items but of course not in a dynamically sized list of employees, applicants, supply companies ...


PS: I am not against coorporating in such a thing with somebody "equally" (or better - like you and qube) skilled**. I do not want to assist someone doing his first game so there need to be a bit of knowledge in handling things, squashing bugs, .... I also would not really mind if someone wants to use another language (so acts as a coder) as languages are exchangeable - or learnable ;-)

Edit: with ** (equally skilled) I mean should know their "profession" a good bit. So if you hardly finished your first pong clone but created cool renders or music, you are still "equally" skilled (or even better than me). And if you cannot do anything of it you might be suited for social media interaction or finding game play ideas / writing texts / ... there is always a lot to do in such game projects - even tool writing is required here and there (thinking of my python scripts...ouch).


bye
Ron


iWasAdam

There is one area (which I know you are very keen on): Linux development of my apps.

My problem is I have no experience with linux and it always ends with me shouting quite a bit.
The other is monkey2 - I have given up with Marks version and attempting to keep up to date and went my own way - so I am using a custom monkey2 which works really well.

How would you feel about me giving you my version of monkey2 and seeing if we can get them to completely cross compile?


Derron

I would need to make me a bit comfortable with m2 (so it works on linux). Next thing would be to make it compile your version (so we get native linux binaries) - and then making your stuff work - which I assume is the most complex part (for me) as it involves the OpenGL stuff and the likes.

IF you do not care exposing your m2 changes, you could create a new thread (worklog or so) about your m2 version - so others could tackle potential problems too. That way we get your m2 more probably running on linux (or other platforms).
Same for your engine: if you intend to open source it, create a worklog (engine + simple sample) for it and people could try to make it run on Linux/Windows with less problems. If you do not want to disclose the source, this parts could be done - of course - via email too.
That "simple sample" is useful to avoid to scroll over hundreds of project specific lines - and other things which _might_ have trouble on linux (asset loading and the likes - dunno how mature "[your version of] monkey 2" is in that regards).

So yes, I could try to get it run on linux - but no guarantee that it will.

Nonetheless it is always a good idea to install VirtualBox and create a VM in which you install Ubuntu - or Linux Mint (so one of the most popular distributions). For normal libraries you would find a big pile of tutorials on how to install stuff or tackle trouble.

bye
Ron

iWasAdam

QuoteUbuntu - or Linux Mint
I did both and couldn't get anything to operate properly :/

My version of mx2 compiles without flaw on both osx and windows... with the same code and no changes!

Derron

"without flaw": I was talking about to first get m2 running here (did not try yet) and then this would be used to compile your m2 on the linux box then.

As said - if you want to do that "publically" then create a new thread, else send the stuff via mail (ron @ gamezworld.de). Take your time, am out for today (helping brother + BBQ and drinks)


bye
Ron