Tetra/Agon
A downloadable game for Windows
Introduction
You find yourself alone in an industrial district. A strange metallic box floats nearby. You're posed with a puzzle in a strange script, and a choice on what happens next.
You're being tested. What for? Who is testing you? Will you ever find out?
Tetra/Agon is a puzzle/action FPS game. In it's current v0.1 form it's a single-level demonstration of enemy AI, weapon handling and puzzle gameplay.
Instructions
WASD or arrow keys - Movement
Space - Jump
1-4 - Select weapon
Left mouse - Shoot/press button
Right mouse - Interact
Hint: Some weapons are better choices against different enemies. If you get stuck, remember that the checkpoint is saved before you pick your new weapon upgrade so you can go back and try a different weapon.
Why Tetra/Agon?
Tetra/Agon is the first 3D project that I've added to my profile here on Itch. There were a number of specific elements I had in mind at conception:
- First person shooter: As a massive FPS gamer, I've been looking forward to getting stuck in to building a FPS game myself. A major consideration for me here is having a selection of weapons which are all generally useful but varied in meaningful ways.
- 3D dynamic path finding: I wanted enemies that have full 3D dynamic path finding, which I don't think I've seen in any major FPS game. In other games I've encountered flying enemies they're either "fake" flying (i.e. hovering at a set height using 2D navmesh path finding), following preset paths, navigating in spaces without obstacles, or relying on "sliding" along obstacles to get to targets.
- Puzzle box: I wanted a "puzzle box" feature, a type of non-repeating puzzle that could be included easily multiple times. I wanted this to be under time pressure (after the first "learner" box) to bring the challenge of switching between the kind of thinking required for fast FPS action and for logic puzzles under time pressure.
- Pattern of four: I had a vision of the patterns of four throughout the game - four core challenges (solve, shoot, survive and strengthen), numbers in base four, four parts to each puzzle, four puzzles to each puzzle box, four weapons, four enemies. It was an interesting challenge to hold within this pattern within reason, and this sort of deep equilibrium can be useful in communicating implicitly with the player.
Learning points
- Deterministic gameplay - Deviating from my highly stochastic shoot-em-up games, as a challenge and experiment I decided to make this game without any random elements. Gameplay in Tetra/Agon follows strict deterministic rules and there are no random elements used to determine gameplay.
- Object libraries - I invested fully in using object libraries for Tetra/Agon: All enemies, projectiles, particles, etc are stored in object libraries so there are no objects instantiated at run time.
- A Star algorithm - I've experimented with this previously in a very early prototype 2D project, however Tetra/Agon takes it much further by implementing it in a 3D space with higher quantities of nodes. Path finding data is pre-generated and stored in the game files, so it does not need to be calculated at run time.
- 3D node map - To enable enemies that can move in three dimensions, I built a 3D node map for the A Star algorithm to navigate and code for generating and linking the nodes easily in the Unity editor.
- Finite State Machines - With Tetra/Agon I used a hierarchical FSM structure for enemy behaviour as a suitable match for relatively low enemy complexity. Enemies have Idle, Explore, Hunt, Approach and Engage states.
- Quaternions - To understand Quaternions better I avoided using Euler angles as much as possible in Tetra/Agon, instead making use of Quaternion-specific methods to solve problems.
- Explicit referencing - I have used singletons a lot in my previous games, but as they can sometimes cause problems I avoided using them at all in TetraAgon as an exercise. Every reference between classes is explicitly defined.
- Music Manager - It was interesting to create a dynamic music manager, which transitions smoothly between a selection of music tracks depending on the game state.
Future features
- Additional scenes. I used just one (pre-generated) scene for v0.1 as my primary focus was building the AI and gameplay. I could expand Tetra/Agon to have multiple scenes and with events triggered as the player moves through the scenes as well as adding more depth to the story behind them.
- Models and skins. Currently the models used for weapons are combinations of simple primitives, and the skins used are minimal. Visuals could be improved here fairly substantially.
- Additional puzzle types. I'd like to add some additional types of puzzle between waves, such as puzzles with pattern matching, moveable puzzle pieces, or that require rotating and inspecting the puzzle.
- Improved enemy AI. The AI does have some flaws at the moment. The biggest one is that it sometimes chooses poor positions to attack from where projectiles will hit obstacles.
- Additional enemy strategies. Though the enemies have a decent amount of variety in behaviour, there are some more advanced tactics (e.g. hit and run, hiding, attacking from behind, attacking while moving, coordinating with other enemies) that I'm interested in implementing in their behaviour.
- Boss-type enemies. Occasional enemies with combinations of weapons, multiple damage stages and advanced attack patterns would bring an interesting change in gameplay pacing.
- A deeper story. I have a lot of ideas for narrative, cutscenes, main character depth, and other immersive elements that are out of scope for this basic demo.
Credits
Game design, development and coding
Joseph Norris/CoSeph Games
Level design
Gameplay scene - demo scene from RPG/FPS Game Assets for PC/Mobile (Industrial Set v2.0) - Dmitrii Kutsenko
https://assetstore.unity.com/packages/3d/environments/industrial/rpg-fps-game-as...
Code samples and tutorials
Outline script - Chris Nolet
https://github.com/chrisnolet/QuickOutline
Stair climbing - Cobertos
https://cobertos.com/blog/post/how-to-climb-stairs-unity3d
Finite state machine - Mina Pêcheux
https://medium.com/c-sharp-progarmming/make-a-basic-fsm-in-unity-c-f7d9db965134
Fonts
Graalen - Pixel Sagas - Neale Davidson
https://www.1001freefonts.com/graalen.font
Alien Ravager - Darrell Flood
https://www.fontspace.com/alien-ravager-font-f78813
Models
Low poly space craft assets - Trockk
https://trockk.itch.io/collection-of-low-poly-space-craft-assets
Textures
Free PBR Metal Plates - Yughues
https://assetstore.unity.com/packages/2d/textures-materials/metals/yughues-free-...
Sounds
Running sound - Albert Balbastre
https://freesound.org/people/bulbastre/sounds/103965/
Landing/jumping sound - Sean Porio
https://freesound.org/people/SeanPorio/sounds/519262/
Various effect sounds - FreeSFX pack from Kronbits
https://kronbits.itch.io/freesfx
Various sound effects - Prunus Productions Scifi Sound Pack
https://prunusproductions.itch.io/scifi-sound-pack
Music
Space Music Pack - Goose Ninja
Download
Install instructions
Extract contents of the zip file to your preferred directory and run "Tetra-Agon.exe".
Development log
- Tetra/Agon first release!Dec 29, 2022
Comments
Log in with itch.io to leave a comment.
I really tried my best but I didnt get these puzzles for a while and I have no idea how to take care of all of the robots that start spawning. I like the movement of the game so far.
Thanks for the feedback.
I didn't put a time limit on the first puzzle so there's no pressure at the start to work out the symbology.
Regarding the enemies - can you be more specific about what trouble you have with them? Are they too deadly? Or too hard to hit? Too fast moving? Any specifics would be really handy for thinking about future versions.
So the timer for the riddles is a bit too tight for me and the drones arent too deadly they are just like annoying to fight. It might be cooler if the gun could load itself up for a short boost or if the drones fall to the ground at some point. I dont know thanks for your answer!