So ARIAT started in the *Punk Jam from June 2020, and I couldn’t resolve to release a version of it at that time, as i over-scoped it in huge amount. I kept working on it in the meanwhile, and I do share GIFs from time to time on the discord server, but I forgot to keep track about it here.
True to its origins, it is still a cyberpunk game taking place in a post-apocalyptic world inside a huge dystopian city named Amethyst City. You will control Clementine, a cyborg woman who takes on (mostly) delivery missions inside a tank across the city.
Note - although this page looks like a manual, there is no demo yet - eventually one shall be available, hopefully this month.
Amethyst City is one of these large walled cities, lively dots in the general wasteland that became Earth. While these wastelands aren’t devoid of life, there are contaminated with a greygooished matter nicknamed XM (for eXotic Matter), which was slowly spreading decades before and eventually collapsed entire ecosystems and countries all alike. XM slowly deconstructs organic matter, which induces a range of diseases to almost the entirety of living things, including plants.
Through the use of technology, special shields were erected to disrupt XM and to protect individuals to entire cities from contamination, but have to be consistently readjusted as XM seems to have some adaptation capabilities in its never ending hunger.
Cities are linked through a range of huge underground roads which run across continents. It’s much easier to protect underground places against XM, and more cost-effective, even when considering the drilling and maintenance costs, as XM circulate much easier on the surface.
In this context, Clementine, after failing a waitress job due to “anger issues” (or rather, an especially annoying client), ended up landing a delivery job at Lagrange Workshops. She is, like a significant part of the population, a cyborg, as the outcome of a severe industrial accident. Because nothing much worse can happen, she accepted delivery these dangerous packages.
It takes inspiration a lot from Metal Gear 1/2 (especially the MSX version), as well from Link’s Awakening and the GTA series.
(I just saw that there is a game released in 2011 named Unmetal which seems to be a homage to the old MG games, got to check it out !)
So most of the gameplay revolves around you controlling Clementine or vehicles trying to sneak past people or sometimes fighting them off with weapons.
- Dir Pad will usually move you around.
- A will use the current Item/Weapon/Turret (for vehicle).
- All weapons automatically reload.
- B will have various effects depending on the current Style.
- Manual-Aim - B + Dir Pad will move the Crosshair.
- Auto-Aim - B sticks the Crosshair to the next closest enemy.
- C shows the inventory and menu.
- Inventory can be used to change the current item.
- Style can be changed here as well.
- Weapons & Items
- Very short range, high damage, silent.
- Helpful to vandalize stuff and to dispatch humans sneakily.
- Low damage, mid-range, noisy.
- Standard weapon of most guards.
- High damage at close quarter, less damage otherwise, loud.
- Some guards have one, and are quite dangerous.
- Restore some health.
- Maintain A until the gauge is filled to use one.
- Pokitto, Battery, Package, Cards…
- Cannot be used, but some NPCs will want you to show some of these items (e.g. when you deliver a package).
- Some weapons have a reload system:
- When the weapon is depleted, a reload happens immediately, which makes the weapon unusable for a while.
- When not using a weapon for a while, it’ll also be reloaded automatically under the same rule. Maybe it’ll be optional. I need playtesting.
- Health & Damage type
- An entity that takes damage will blink white.
- Currently there are 5 types of damages:
- Heavy/Blunt (When you receive a direct shell before it explodes)
- Grind (knife, running over something with the tank)
- Medicine (medkit)
- (Later there’ll be Electricity and Fire damage)
- Every damageable entity has 100% of health, but has a damage profile which rule what is the ration of health taken out (or recovered)
- Each entity has a damage profile which rules how they react to these; for instance:
- Cyborgs such as Clementine is general sturdier than guards.
- Knife can take out guards in one hit, but it’ll take a lot more to destroy vehicles.
- Enemy AI
- Enemy will currently look at a given direction. If you walk in front of them, the alert mode will fire.
- In alert mode, currently, all enemies will be restless by looking quickly around them.
- If an enemy spots you, they’ll get closer until their weapon is at range.
- If an enemy cannot see you anymore, they’ll try to reach your last location.
- Alert mode eventually turn off if you’re not detected and don’t hurt anyone.
- Most tiles are damageable, in a similar fashion than with Rooms.
- There is a multi-map system, with “portals” between them.
- Each map has a script which spawns entities, events, objectives info, and so on.
- Some entities can be marked as persistent, so they survive map loads (like Clementine and other important ones).
- Some other entities will check a persistent flag when dispatched, so they don’t spawn the next time a map is loaded.
- Damaged tiles will be restored however.
- Scripts are actually compiled into bytecode, and embedded into maps. A small VM which can yield/reexecutes the same instruction is then taking care of executing them. The whole is quite light compared to the equivalent in c++ (calling something like
function(10, 40)costs 4 bytes, including 3 bytes for pushing 10 and 40 constants into the stack before the actual call), and allows me to load behaviors from SD to RAM.
- Maps have sloped tiles, and they’re handled much better than the
The AI isn’t too smart for going back to their guard position.
- I need to add a path system.
- Their initial angle can be important, but it gets messed up with a single alert inside the same map.
The AI doesn’t patrol yet.
- It’d make sneaky takedown much more interesting.
Alerts doesn’t trigger reinforcement
- There are no reinforcement system either.
- Alert is lifted whenever a map load happens.
- I’ve been composing some simple musics but I haven’t implemented a system
Loudness isn’t implemented yet.
- Right now you can make a sneaky takedown with a shotgun.
- Alert should be triggered at the point you’re triggering explosion or any loud noise.
Weapons with ammo don’t have reload time.
- This is fine for NPCs but not for the player, since managing ammo is going to be important.
Low/high light maps are also rising/lowering the light of the UI.
- That’s because I’m (lazily) using the map transition as the “low/high light” mode.
Fun with knife
Machine gun - unlimited ammo vs limited ammo
Events, dialogs, portraits
Manual-Aim vs Auto-Aim
Shotgun guard and Medkit
“Low light”, shotgun and chain reaction.
Triggering and escaping some ambush. Lightened and darkened areas. Looks a lot like a bullet hell!
I want to put up a fun and chaotic demo, with more interesting maps and release it this month, so I’ll work toward that! There are so much I wanna add, but I need to iron out the bugs.