top of page

Emergence de l'idée

Plus de détails sur le concept

Travail effectué

Ether

Solo project | 1 person | ~1 month

Context

Ether is a "game" made for a programming exercise.

This project was carried out entirely alone.

 

In reality, it’s a concept I had noted for some time and it was an opportunity.

Emergence of the idea

Being in a period of rogue-like discovery, the concepts I created at that time were mostly rogue-like, and Ether is one of them.

 

It’s the mix of a rogue-like and a mode I’ve been in for quite some time, the PVE against zombies, more precisely that of Call of Duty.

 

I wanted to test the mix between zombie mode, which I really like, and a genre that I enjoy just as much.

More details about the concept

The player must defend against waves of zombies. The player can decide when to start a new round and at the end of the 10th round, a boss appears, allowing him to have a rare item as well as move to a new room.

​

Over the eliminations, the player receives money; he can spend this money on several things:

- A random Item

- A random power (player’s active)

- Of life (not max health but just health)

​

He also gets a random free item every 5 rounds.

The player can change weapons if they manage to get more, but they can only have one weapon on them.

​

Other elements are also present 

- Secret rooms

- Jokers

- Traps

Work done

Game Design

Secret rooms

Secret rooms are available in round 3 and round 6.

​

So 3 doors appear; only one is the real one allowing access to a room containing the reward.

If the player does not choose a door in round 3, only the real one appears in round 6.

​

Several contents are available:

- 2 Items

- 2 Power

- 2 Weapon

- 1 Item, 1 Power, 1 Weapon

- 1 Item that changes all the Xs.

​

Each point is a room iteration and the player must choose only 1 element; once taken, the others/the other one disappears.

Jokers

​Jokers are cards that are given to us when we obtain [X] number of Item in a category.

The goal of Jokers is to "break" the game even more than objects.

​​​

Item categories are present only on objects with major changes.

​

Major-change items are items that trigger an effect at a time X; it’s not just an object that changes the player’s statistics, it’s an item that has an effect on the player’s actions.

​

Like healing him when he kills an enemy, making an explosion during reloading etc...

image.png

Traps

In the room, different traps can be present, they are paid but offer the player unique effects to kill enemies easily.

Programmation

Here is the list of concepts I worked on:

- States Machines

- Delegates

- Interfaces

- ScriptableObject

- Coroutines

- Dev Tools

- Animator

- Cinemachine

States Machines, Animator & Cinemachine

During the creation of the game, I was learning State Machines, so I implemented State Machines in order to practice them. I kept some rather simple states:

​

- IdleState

- LocomotionState

- Jump State

​​

Animations are played out when the player enters a new state, so I ran a 3D model on those states.

Also, I used the Cinemachine to make an FPS camera.

Delegates

I had already done a few tests on the Delegates before the project, but it is on this project that I have a rather advanced functioning of the Delegates.

​

I used Delegates for everything that item triggers , here is the list:

Player

- playerShoot

- playerReload

- playerBulletDestroyed

- playerDealDamage

- playerKill

- playerTakeDamage

​

- PowerActivation

- ObtainItem

- BuyRegenLife

- BuyBox

Game

- GenerateRoom

- EnterRoom

- EndRoom

- Begin Round

- EndRound

​

- EnterSecretRoom

- FailSecretRoom

- ExitSecretRoom

Interfaces

I discovered the interfaces at the same time as States Machines, however unlike States Machines they are much easier to use.

​

In this project, their main use was for interactive elements, giving them the IInteract interface, allowing any interactive Item to implement an empty interaction function that I filled out according to the needs of the interactive object.

ScriptableObject

Having quite a few numbers to manage, I passed the values of the objects into ScriptableObject; it’s much easier to change its values later but also to manage all the variables. Here are the settings: 

​

- Item Name

- Icon

- Rarity

- Category

- Description

- [All the other Floats changing the game’s stats]

Like all rogue-like games, a lot of values are modifiable, influencing the game

image.png
image.png
image.png

Dev Tools

I spent quite a bit of time making things easier for myself, here are some tools I created:

Quick Object Creations

image_edited.jpg

Simple shortcut to be able to create object ScriptableObjects.

Quick Choice of when to trigger the Object

This allowed me to choose in which Delegates the object was going quite easily from the inspector.

image_edited.jpg

Similar functions

image.png

In case I had similar functions, I could directly choose the related function.

No more need for case-by-case operation of objects.
I was just setting the function and it assigned the function at the moment (Delegates) and as soon as the Delegates was triggered, the function started

The End

bottom of page