Escape from blocky planet

Community Forums/Showcase/Escape from blocky planet

TheoTheoderich(Posted 2014) [#1]
Hello together.

Heavily inspired by Terraria and Minecraft I´m trying to develop my own 2D blockgame.

- Escape from blocky planet -

You are playing a space fighter pilot who was shot down and crashed to a planet of blocks.
On the face of it this world looks friendly and harmless, but you are feeling alone and you don´t want to stay here.
Now your job is to survive and to get away from this planet.....

Starting with some simple items you should develop better tools until reaching a tech level wich allows you establish contact with your comrades in space.



The game is still in an early Alpha stage. There is no download available.
All graphics is done by myself, so please do not expect an high GFX game.

Until now the game has no sound or music. But hopefully this will change later.
A lot of stuff and graphics is not final.
Game content will be added regularly, by now there are no enemies for example.

Language: BlitzMax

Platform: I am aiming a Steam-release for Windows, MacOS and Linux

Please excuse my bad english, it is not my native language ;)


Here are some (ingame)-screenshots (in the game all pixel are double sized):




...a nice, little campfire and water pressure (water gfx not final)




...underground lava and collecting and placing lava with a bucket



...digging around and some crafting stations




...a small mushroomcave and deleting an item by use of the trashcan




...a poison basin - cooking and eating (in a very early stage)




...much more underground lava




...hey, i found an old watchtower




...some mushrooms can be dangerous - a nice little place to live inside the hill




GaryV(Posted 2014) [#2]
Damn! Extremely impressive!!


Steve Elliott(Posted 2014) [#3]
Nice work!


grindalf(Posted 2014) [#4]
WOW Im looking forward to this.
I love minecraft but never really got into Terraria(I got if for my tab 3 but it makes my tab overheat so I cant play it)

Looking forward to this


Who was John Galt?(Posted 2014) [#5]
This looks to be shaping up nicely. I think the idea of building tech to get out into the big black is interesting. Love the toadstool bomb and from the looks of it your fluid simulation p***es all over Minecraft's!


Blitzplotter(Posted 2014) [#6]
I really like it ;)


Pingus(Posted 2014) [#7]
Sounds promising ! I like the water mechanic :-)


*(Posted 2014) [#8]
Bloody brilliant can't wait for a demo :)


Krischan(Posted 2014) [#9]
Looks promising. Reminds me somehow of this old DOS gem: Miner VGA


TheoTheoderich(Posted 2014) [#10]
Thank you very much for your motivating posts :-)

Edit: 18.11.2014
- Added: Some plants on the surface are waving in the wind




- Changed: Slightly improved mining particles




...and yesterday i forget to show you the crafting window (wich is not final i think)




Chalky(Posted 2014) [#11]
This looks seriously cool - demo please!


TheoTheoderich(Posted 2014) [#12]
There is no demo at the moment.

It is not enough content in the game a for a demo...and many features are still missing.

Game progress is not very fast due to "full-time-real-life-job" and family.
But I am still very motivated :-)


Derron(Posted 2014) [#13]
But I am still very motivated :-)


This will change from time to time ... especially with the more complex bug reports coming in (if you chases bugs for a week you will know how motivation can get low periodically :D).


@Plants
they look really "light"/fragile compared to the player sprite... is this intentional to emphasisze/focus the controlled character?

I like the craft items ... animating them will be a fun job.


bye
Ron


degac(Posted 2014) [#14]
Well, it seems very complex project! I like it!

Any video to show it in action?


TheoTheoderich(Posted 2014) [#15]
This will change from time to time ... especially with the more complex bug reports coming in (if you chases bugs for a week you will know how motivation can get low periodically :D).


I know...
I am working on this project since 2012.
Sometimes every day, sometimes with a time lag of several weeks.

I am a hobby programmer, so I am writing a very complicated code :-/
Bug-finding can be very hard and frustrating...especially debugging multithreading in BlitzMax is a pain in the ass. Due to my limited coding skills multithreading is absolutely essential.

But corresponding to the creator of Minecraft "Notch":
- never rewrite your game, no matter how messy your code is written -

So progress will be slow, but steady :-)


@Plants
...to be honest...I did not thought about it. I like to pixel small images for plants and the colours should fairly look some kind of "realistic".
But for other biome darker plants are planed (Forest for example).

@Crafting Items
Up to now there are no crafting animations. Only the smelter has some particle effects.


@degac
I have no new video, only very old ones on YouTube (with many, many content missing, compared to the actual version)
If I will find some free time in the next weeks, I will create an actual one.


Derron(Posted 2014) [#16]
I wouldnt cite someone whose fame is based on a game which really seems to be a kind of "mess" (because of its bad performance).

Rewriting should be done as soon as you recognize that you do not longer write a "prototype".

The more advanced the code progress is - the harder the refactoring will get (splitting classes to avoid circular dependencies, modularized behaviour for types with dozens of descendents etc.).


I never thought of having to redo maaaany things ... but in >10 years of developing my/our game, many things had to change to make them work how it was intented.
Especially things needing to communicate with each other will create some kind of trouble (dependencies). A needs to know about B, but B needs to know about A - and both need to be in different files just for another reason (may it be organization/structure).


But as long as you do not have to halt / stall somewhen, there is no problem and you might come along with your "complicated code" (I too have still some portions of code which seem to do "magic", should have written more 'comments :D).


Good luck, viel Spass.

bye
Ron


TheoTheoderich(Posted 2014) [#17]
@Derron

You are right. But in many years of programming I learned it is better to have a functional messy code than a cleaned up inoperative code.
Some of my own games failed, because I wanted to have "a better" code..."TheoTown" for example :-(

I am trying out and learning with BlitzMax since 2003 and had been playing around with BlitzBasic since Commodore-Amiga times...but every time I am programming I am learning some new things about coding.
So this game has gone a long way from single-core jump´n run with fixed tiles and less items to a multi-core "Terraria"-like game with many types and lists and most of the item data stored in external files and so on...

...and in some modules there are much more comments then code in it ;-)


Derron(Posted 2014) [#18]
Hope you plannet savegames already - with "external files" in mind.
Which means: user could have configured things differently since savegame. Means you have to store all configurations, relations to other objects - and on load restore dynamically created sprites (eg player colorized sprites), relations etc.

A simple jumpnrun with fixed collections isnt that hard to have proper savegames, the more "dynamical" things get, the more complex the whole savegame gets (in my opinion -- I still struggle with savegames in TVTower).
Also the state of your AI has to get serialized somehow (for savegames) ... maybe LUA allows to save its whole "machine" ... hmm ...offtopic :D.

If you have multiplayer in mind ... you should consider thinking/planning it the earlier the better as plugging in things at a later stage will surely create some mess (missing things to sync, handle "latency", split "action" from "input" etc).

I came accross "TheoTown" some weeks ago ... but saw it is no longer in development.


@water/lava / wind movement
Did you think of splitting the tiles in vertical or horizontal cols/rows and moving them using Sin() ? As this is performancewise not the best, you could create this images out of the basic sprites - this way you could even draw them -1,+1 offset and with alpha 0.x (depending on the offset created by sinus) for some kind of "anti-alias"-effect.


bye
Ron


Who was John Galt?(Posted 2014) [#19]
To give an alternative perspective- DON'T CHANGE THE PLANTS!!!!

I like the graphical style of the plants. In fact the graphics overall aren't bad, but there are 3 things that stand out as 'worth improving'-

1) The player character. Probably the hardest one to fix, but worth the effort since he's on-screen 100% of the time.

2) Tree foliage- make it more solid rather than all individual bunches. Create a few different blocks to give variation.

3) Rock/earth- lose the shading at the edges which gives a sharp delineation between blocks.

2/3 alone are pretty quick fixes that could seriously improve the look. That said, I realise you said the gfx are work in progress.


Why0Why(Posted 2014) [#20]
Just to chime in, I REALLY like the look and feel of this. Great work and keep it going!


TheoTheoderich(Posted 2014) [#21]
Thanks for the answers...

@Derron
Saving / Loading the game is already build in. All important data is saved in external files using WriteStream...including all items, plants, liquids, game-resolution etc.
To make it short...if you save and leave a world and load it again, all is like before (...ok, it could be that some small plants and grass changed there look or frame, but that is unimportant).

Multiplayer is not planed...it is fully focused on single player gameplay.
Sometime ago I wrote a multiplayer space action game for my friends and me and I realized Escape-from-blocky-planet would never be finished with multiplayer gameplay.

@water / lava / wind movement
Water and lava did not use any sin or cos function. Only the plants movement is calculated using sin(). But this is not calculated every frame, only at a "tick" and only for the visible screen area. So this should not be a "framekiller".

@John Galt
1) I like the look of "my" player :-)
What would you advise to improve the player sprite?
Info: The blue clothes are his space pilot uniform.

2) Trees will be reworked sometime. In this version they already look much better than a few weeks ago.

3) I don´t think that I will change that. This "shading" is part of the gamestyle. The game is called "Escape from BLOCKY planet" ;-)
I did not want to have the look like in terraria. Technical this would no problem....but I did not want that :-)


Derron(Posted 2014) [#22]
Maybe the first thing to adjust is the black outline of the character.

I know -- the icons on the mouse cursor have this "outline" too - but all "world items" seem to avoid outlines at all.
This makes the character "stand out" instead of blending in.


@savegames
Ok then you have less references within objects than I thought ... good for you ... I really fight hard to store some of the generated data ... currently replacing TList with TMap to remove doublettes just by having generalized GUIDs instead of automatically assigned IDs).

bye
Ron


GaryV(Posted 2014) [#23]
To give an alternative perspective- DON'T CHANGE THE PLANTS!!!!


Or an even simplified perspective, just ignore Derron and any advice he may give.


TheoTheoderich(Posted 2014) [#24]
@Derron

@player sprite
I think you are right. It is too dark. The borderline will not be removed, but I am going to change the colour and adding a shading.

@savegames
I did not really know, what you are meaning with "references" :-/

My reference to other types usually is the object itself or the typ.ID.

I give you a short example how I am saving tileitems in the game.
With tileitems I mean for example mined tiles or things the player throws away and which are laying around in the landscape until the player collects them or until they disappear.

All tileitems are stored in types. And these types are added to a "tileitemlist".
In my save function I have a filestream which writes the tileitems to the items.save file.

Only the variable data of a tileitem is saved. Not such static things as images and imagesize.

FileStream = WriteFile("save/" + world + "/items.save")
' saving items
' counting items in itemlist
FileStream.WriteLong(CountList(TileItemList))
Local Num:Long
Local TI: TTileItem 
If Not ListIsEmpty(TileItemList)
	For TI= EachIn TileItemList
		If TI
			FileStream.WriteInt(TI.ID)
			Num = Num + 1
			FileStream.WriteFloat(TI.Alpha)
			FileStream.WriteInt(TI.ColR)
			FileStream.WriteInt(TI.ColG)
			FileStream.WriteInt(TI.ColB)
			....and so on...			
		End If
	Next
End If
' closing file stream
FileStream.Close()



To load these items I have the following code in the Loading function:
FileStream = OpenFile("save/" + world + "/items.save")
' cllearing the itemlist
TileItemList.Clear()
' clearing the lightlist
LightList.Clear()
' read the number of items to load
Local ItemsCounter:Long = FileStream.ReadLong()
' loading items
Local Num:Long
For Local X:Long = 0 Until ItemsCounter
	Local TI: TTileItem = New TTileItem
	TI.ID = FileStream.ReadInt()
	TI.Alpha = FileStream.ReadFloat()
	TI.ColR = FileStream.ReadInt()
	TI.ColG = FileStream.ReadInt()
	TI.ColB = FileStream.ReadInt()
	...and so on...
	' the item image is not stored in the save file
	' we got it directly from the master item data type
	TI.img = SelectItemImage(TI.ID)
	' adding the read item to the itemlist
	TileItemList.AddFirst TI
Next
FileStream.Close()



Derron(Posted 2014) [#25]
With references I mean things like "parents / children / ...".
Sometimes I think you cannot avoid that multiple parents have children referenced (... think this is a sign of bad design ...which is why I use more singleton classes now -> collections and then collection.Get(GUID) to avoid circular dependencies).

I replaced the "binary stream"-savegame with Bruceys TPersistence.mod (and some extension so a {nosave}-metadata does not get serialized, the ) but the problematic parts were things like the creation of adjusted images (during game start I create playercolor-adjusted images for room doors, elevator signs etc).
Maybe going "partially" back to your (or the "traditional" approach) is a better thing - also regarding synchronization over network.

For me the problematic part was, that sometimes "containingList.clear()" is not enough, because there might be objects running around, holding "old references" (particles, old tiles, ...). Just utilizing an "ID" (autogrowing) did not solve the problem as you just will forget resetting them in some cases :D.

Hmm, somehow I cannot come up with a real-world-example now for a problem with savegames I had during the last months.. maybe the most trouble came from the missing code split of "new game / loaded game" (so when starting a game I triggered certain things - which would not be needed if the game is a "loaded one" - like spreading around start items, or so).

So savegames are no problem for you - good thing.



@outlines
No I did not want you to remove the outlines - I just suggested it, as the background is smooth, the "tiles" are smooth, items like the crafting tools have smooth/faded outlines.
I understand that things like "selected tool"-symbols could have a outline but in your screenshots the character is a bit "heavier looking" - maybe your recoloring (or adding some "lighting/gradients" on the jacket/throusers) changes the appearance.

@plants
I just compared "plants" to the rest of the items - and if they have no use except "decoration" it is a good thing to have them in the "background", but as soon as they get useable in some way, they should be emphasized a bit. In my previous post I even did not suggest to change it ... I just asked if this was intentional or not ... so I do not get why the old man above quotes something from another one and puts my person into that context.


@poison basin
is the glow effect done using some kind of post processing - or just some tiles overlaying the whole thing?


@Character
Somehow he reminds me a bit on the "Hauptmann von Köpenick" (Heinz Rühmann). Maybe its the color of the suit .... NASA colors? Maybe you could "dirt" the suit later on ... it gets used, a bit dirty, broken, ... .
Like John Galt said: the player figure is the one you will see almost all time (same for earth tiles etc) so it needs more attention.


bye
Ron


TheoTheoderich(Posted 2014) [#26]
@Derron

@outlines
...I totally agree.

@plants
Some plants are decoration, but some plants are useful.
For example I have a potato-plant. If it is grown up, the player can take potatoes from it.
The same with reet or some high grass. But the player won´t get any visual info if the plant in front of him is useful or not. Escape-from-blocky-plant is a survival game and it should not too easy to survive :-)

@poison basin
The glow effect is done by layering two images on top of each other.
The front image is a simple 16x16 pixel image with alpha value of 0.6.
Behind that there is a rect image with a gradient drawn with SetBlend Lightblend. It was inspired by a "Metaball"-Demo I looked at some weeks ago.
The same technique is used drawing the lava. To have a better look lava is using some additional lights and particles.
I am not at home, so I can´t show you the gfx used by me.

btw. I am using the standard BlitzMax, without any mods or something.
So shader or real postprocessing effects are not possible for me.

@Character
It is planed to have some different clothes for the player. But he starts with his pilot uniform, because he bailed out of his spaceship just before gamestart. Later in the game you maybe find his crashed spaceship and perhaps you find some advanced tools and clothes ;-)


Derron(Posted 2014) [#27]
Hmmm ... If "winter" comes to "blocky planet", you might need some fur (stoneage-style) or other "keep me warm" clothes. Ok, that you then should be able to build igloos (without an "axe" or other tools) is another story.


@plants
good thing, players have to "try and error" a bit.

For potatoes you should "hint" the player with "white blossoms" ... so indicate that it might be a potato plant. Same for things like "alien carrots" (you know ... the purple-colored ones ... with more antioxidants like the one in red wine) :p.

Do not forget animals in the water ... you surely remember how your teachers told you right before summer holidays: do not jump into unknown waters.


@Lava / Water
Ok, I assumed that - as there is no animation seen, I think you surely "scale" the glow up and down a bit (pulsating).


bye
Ron


Who was John Galt?(Posted 2014) [#28]
I would make the character a bit more realistic- i.e. head less than 1/3 the size of his body. I think that would improve the character of the game and make it more 'serious', but of course this is only personal opinion.


Mainsworthy(Posted 2014) [#29]
the liquids in a block game are something very unusual and good!


MathyDude(Posted 2014) [#30]
Good job on the liquid simulation!
Hmm, don't the ingots on the original post look like Minecraft's?


Hardcoal(Posted 2014) [#31]
Looks great