Biome, demo game on Godot

Collected a small demo for win and linux. This experimental prototype focuses on top-down play and the implementation of the infinite level system in the Godot engine. Biomachines included.





Project Biome is conceived as an arcade journey through the open world / worlds, on a biological or technological vehicle. Specifically in this game, the camera is fixed on top and various game mechanics are designed for this angle (although I sometimes use a non-standard view for recording video and tests). In addition to the purely technical pros and cons of using different cameras, different angles imply a slightly different approach to organizing gameplay.



Layer architecture





The prototype implements an infinite-level system (so far only along one axis). At the moment, one level is available, along which you can endlessly drive in two directions, and the others are blocked by two walls.



A couple of words about how it works (in principle, pretty basic things, no special revelations). The current game world consists of two zones (conventionally green and blue), each inside itself is divided into 4 sections. When the machine touches the trigger of a certain area, the level checks whether it is necessary to shift one of the zones so that all exits from this area lead to other areas, and not to the void.





The player touches the area, passing which will take him beyond the outer boundary of the level, and the second zone is shifted in the direction of the player's movement so that he is again surrounded by other accessible areas.



This implementation is somewhat redundant for the current partially infinite level bounded by two walls, it was possible to make only 2 sections in each zone, but this is a groundwork for possible completely infinite levels that continue in all directions (as if you are traveling on a certain planet).



After the tests, we additionally had to correct such a nuance that the triggers of the sections are tightly adjacent to each other and a situation could occur when the machine only touches the new trigger, without leaving the old one (that is, the zone is shifted by the new trigger, and the old one was not activated). This moment was corrected by the fact that triggers began to take into account both the entry and exit of the car, shifting only when leaving the trigger zone and only when the exit happened not from the same zone that was just touched (thereby eliminating the problem of touches). In general, using zone triggers in Godot is, of course, far from the only way to implement such a level transition, but one of the relatively simple ones.



A completely infinite level in such an implementation will already mean 4 zones, where a couple of certain zones are shifted at a time.





The player touches the area of ​​the blue zone that is currently outside. Then the red and green zones are shifted to a new position.





Such a solution may also have some nuances, such as the fact that the trigger on a diagonal, in real conditions, will suddenly work before the other two, but this can be solved within the framework of the same mechanism, for example, by breaking the triggers of zones into more parts or adding zones central trigger.



In order to optimize the level, both of its zones consist of a certain number of tiles, which are displayed in the editor as simple rectangular tiles (among other things, saving the editor's memory), and at the start of the game they load the desired piece of the surface.





In the script of each tile, an ID is set, by which it will pick up the desired fragment.



A game





Now more about the gameplay itself. At the start, the player picks up one of the cars and appears in the game world. Cars can jump, strafe, and shoot if they pick up a special living weapon running around the map. If the machine is destroyed (from enemy shots or contact with explosive mushrooms), then a soul (immaterial immortal entity) remains in its place, which can move into a new shell. The machine carries conventional loads (green boxes) that can be picked up or thrown away.

Jump and strafe in cars are limited as follows: you can use no more than two such actions at a time, after which this opportunity will go away not for a short reload. This way you can do, for example, a strafe plus a jump or a double jump. The soul and spindle have no limits, so if you want, you can break the level shift by flying above the triggers.











There are two special hideouts on the map, where the buy / sell interface stubs are displayed. The first two items from the inventory can be "sold" by exchanging for a specific "currency" - "freshness" (the second "currency", "dust", is not yet used, it can simply be increased by clicking on the lowest item). When leaving the shelter, the day changes to night (or vice versa).





Video cutting with the moments of the gameplay of the demo version. The game engine used is Godot engine 3.2.3, rendering gles3.



You can download the demo for your OS (windows 64 - .exe, linux - .x86_64) on the itch.io page (archive size about 60MB):

https: //thenonsense.itch. io / biome Control



tips are shown in the game when you press the Enter button, inside the opening inventory.



WASD - movement

mouse - partial aiming (and influence on the auto camera)

Space - jump

Left mouse button - shot

Q, E - strafe

1 - turn on / off auto camera

2,3 - zoom in / out the camera

PgUp - a random impulse



Also left are special options for testing, which normally should not be in the player (marked in red in the in-game tooltip):



4 - a large degree of camera zoom

Home - turn into a soul or into a basic car

End - create an enemy

PgDown - create a living weapon



Bonus



A flying vehicle that has recently appeared in the prototype is the spindle.



There is also a video from another prototype on the Unigine engine, with an earlier version of this biomachine:




All Articles