The permanent (Devlog)

A big one

  • by Logane Ramez
  • Janvier, 2021

As said in the title, this page will be entirely devoted to a Devlog. I am currently working on a game alongside my studies. And this game, I want it to become big. Really big. And on top of being big, I want to permanently work on it. Because unlike other projects on this portfolio, this time I believe I have reached a good-enough level to create in a sturdy way what's on my mind.

Now that the introduction is done, it's time to get into it.


What's the game about?

The main battle mode will be a 1vs1 (at first) where each player has to destroy the enemy's base beyond a certain threshold.

The view will be a top-down view.

  • Now, you may think that this game doesn't have anything specific to it. And you'd be right. But the principle idea is that you can reach the goal your own way. Anything in the world that surrounds you, can be interacted with one way or another. For example, You could grab light-weight items around like your opponent's body, barrels or a shield, and use those at your convenience ; either you need the grabbed-item to protect yourself, or as fuel for a fire. Another example would be that if water is spilled somewhere, the area would get slippery. The snow would melt into water, the dried out dirt near that snow would then turn into mud which in turn would make player movements slower ...

It's all about trying to mimic real life interactions. The player has one goal, and he can do whatever he wants to achieve it.

The great thing about a high-interactive world is that you can create several game modes without THAT much work. Because once you're done with the programming, you can add a game mode into which you have to drag an item (or carry it) from point A to B and protect it. It wouldn't take long to do since everything would have already been programmed.

  • Another major idea is that the game will require you to outsmart your opponent through mechanics that will require wit. For instance you could have a radio that could trigger remotely-capable devices such as upgraded traps. You would need to set up the frequency you want to control those traps with such as trap A : 3.2 Ghz. Now on your radio-transmitter, if you set it to 3.2 Ghz and hit "Send 1 packet", your trap A will receive that packet and trigger. It means you can set up several devices at 3.2 Ghz and control them all at once, or change their frequency to make them independently controllable. But if you do so, it increases the odds of your enemy to find a frequency that will trigger your traps.
  • The game will be server-based multiplayer and not host-based multiplayer for security and stability reasons.

Things to take into account

Before diving preemptively into the programming It's good to think that since the game will be about the high-interactivity with the world, the programming will have to be as modular as possible.

And for the online part, I won't be working with plugins such as Photon or Unet since I planned on releasing the game on the large scale. And those plugins offer host-based multiplayer. Since I want to learn how to create server-based multiplayer, I will be doing my own system from scratch.


Devlog!

Interaction system

I first started working offline using Unity. I created the base for a modular interaction system :

On the left, you can see me grabbing an object with the mouse cursor. While on the right, I grab an object with the player as if the player had an arm.

The interaction system is composed as so : (These are the scripts of the right gif above)

I'm gonna explain how does it work.

  • The first script up top manages all communications between all the scripts below
  • The "Text Popup" script is what happens when the condition to interact with the object is met, in that case the "Range Detection" is the condition
  • The "Grab" Script is what happen when the way to interact with the object is done. In that case it's the "Key Press"

All the scripts can interpreted as such : "When I'm within range of the object, a Text is shown, and If I'm within range AND press the E key, the object is grabbed by the player" (The E key comes from my home made custom key binding profile)

And now I can change any of those script such as instead of grabbing the object, it explodes, and instead of showing a text, it turns green. Very modular!


Inventory system

Here, nothing really interesting, I added the inventory system. I haven't yet put all the shortcuts in-inventory like in Minecraft but most of them are already implemented. Whenever a Chest or any object that contains an inventory is opened, both the player's inventory and the object's inventory are put side by side.

I don't show it in the gif but the inventory layout and the programming behind are so, during the game, the player can add slots to the inventory via items such as a bag.


Weapons

Well this one is gonna be quick and except the sniper bullet that seems to be stopped in time there isn't anything interesting. (I was too lazy to fix it)

Tag:

Other projects

First Unity Game
Awww look at him <(°-°<)
C++ with Cocos2D engine
Unity workflow in c++
A failed attempt
Masonry!