Skip to content

richchurcher/a_cloud_of_hexlings

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Cloud of Hexlings

Bevy Game Jame #4 entrant, 2023.

Elevator pitch

You are a hexagon. You spawn many hexlings. These are your drones. You are helpless without them. They are helpless without you. Together, you must survive the hostile geometric darkness.

Inspiration

Homeworld

homeworld2

Love those fighters drawing paths through the void with their drive plumes.

Factorio

Construction_robot_entity

Bots are an intrinsic part of the mid to late game. A cloud of bots surrounds you, travelling away from you and toward you, completing tasks.

Assassin's Creed: Origins

aco_senu

Bayek and Senu's symbiotic relationship adds a wonderful dimension. Importantly, she is his eyes and ears, but can also engage his foes. She dispells the fog of war and acts as his advance scout.

Starcraft 2

carriers

Carriers are just fun to play. They take a long time to build up to full strength, but are devastating to certain enemy types.

Player experience

In a roguelite style, the player moves through "rooms" in an uncertain environment, obscured by fog of war. They must depend on their growing relationship with their spawned hexlings, learning more about them and their capabilities as they progress.

Platform

Web (WASM), Linux, Windows, MacOS.

Development software

  • Bevy Engine: rendering/ECS/etc
  • Neovim: code and debugging
  • Bitwig Studio: music and effects
  • TODO: credit crates

Genre

Story-driven roguelike.

Target audience

People who like an off-beat concept, and who appreciate story provided alongside their mayhem might enjoy this game. Also, geometry.

Concept

Gameplay overview

Initially, the player spawns a single, tiny hexling. They discover they are entirely dependent on it to survive. In turn, it must be "fed" raw materials. It follows the player, and can be sent forth at a distance or recalled to "home base".

As the story develops, the player sees text updates without interrupting gameplay. The number of hexlings will gradually increase, and they will discover the need to "feed" them in order to progress. The hexlings may gain abilities such as shield or additional firepower.

Boss fights will present themselves (probably in the form of giant geometric constructs... the dreaded Octagonal Orofice, the monstrous Metagon whose number of sides cannot be rationally comprehended, and so on).

Jam theme and how we interpret it

That's a LOT of Entities!

I interpret the theme as the player's dependence on a cloud of hexlings, ever-growing, against swarms of enemies that threaten to engulf them. Nothing too complex or esoteric going on here. We'll see if various CPUs hold up under the strain.

Primary mechanics

Rooms and corridors

For some reason, the player is inside. "Inside where?" is a question we do not necessarily need to answer. However, they're contained, and they cannot pass through walls or doors so collision detection required.

Fog of war

The player cannot see far past their own nose. In order to progress, they need to rely on their hexlings revealing the local environment. This will lead to a claustrophobic experience, and heavy dependence on their symbiotic relationship with their hexling friends.

Charge and recall

The hexlings are in one of three states at all times: orbit, charge, and recall. The player orders a charge (at which point we signal this state by e.g. flashing the player mesh), and can immediately reverse the hexling's direction by recalling them. This may lead to some interesting micro with quick changes between the states.

Movement

The player can move freely within the environment constraints. How? Trigonometry, of course.

Feeding

The hexlings must be fed to recover their strength. A hungry hexling will still function, but at a degraded level. They will eventually expire if not fed.

Feeding consists of ordering them to charge close enough to a resource-rich cluster of "food". They eat green triangles.

Secondary mechanics

Traps

Either the player or their hexlings may have their movement restricted or their abilities curtailed by fixed traps within the environment. An evolution of the hexlings' powers could include heightened "detect traps" ability.

Art

Entirely "programmer art". We may be able to add skins to meshes if there's time, but gameplay definitely has to come first.

Audio

Music

We call this style the ad-hoc number 8 wire cobbled together genre. Recorded sounds on mobile phone, pasted into tracks. Ideally, it would be nice to use devices like 6/4 time, six-tone chords, etc. to reflect the nature of the hexagonal beast.

Effects

There is an attempt to make sounds within the game musical. Use of harmonics, ringing tones, percussive notes etc. as events occur. Consistency in charge and recall effects e.g. a player should start to automatically listen for the recall sound which will assist them in managing the rather unconventional control scheme.

Perhaps boss fights can adopt more of a discordant approach. Bosses could use metre consistent with the number of sides. We could also lean into harmonious, melodious content when the hexlings are at rest or feeding.

UI/UX

Consistent location of text updates, large enough to be easily read but unobtrusive. Fades after a short time. Triggered by game events.

Controls

  • WASD: player movement
  • Space: switch between charge and recall states
  • Left Shift: spawn hexling(s)
  • Escape: pause, with menu option to quit
  • M: toggle soundtrack
  • +/-: overall sound volume

If there's time:

  • R/Q: fine-tune the hexlings' direction of travel, perhaps in an arc?

Timeline

Setup

Complete by: now-ish

  • Game design document
  • Create template repo
  • Update to latest Bevy
  • Remove/edit/personalise
  • Add MIT/Apache2 dual licenses

Deploy early

Complete by: end of day Sunday.

  • Bare-bones title screen
  • "Hit space to begin"
  • "Hit escape to exit"
  • Space leads to playing gamestate with player drawn
  • Escape leads to pause gamestate with menu
  • Second escape hit exits
  • Space in pause state returns to playing
  • Resurrect simple CI
  • WASM builds and can be published to itch.io
  • Linux builds and runs locally
  • Windows builds and runs locally

Simple player movement

Complete by: end of day Sunday

  • Player can move WASD
  • Player can animate X axis flip (for charge and recall states)
  • Charge state changes color

Simple environment

Complete by: end of day Tuesday

  • Procedural generation of rooms according to set dimensions?
  • Draw a room with an exit
  • Player collides with walls but can pass through exit

Simple hexling spawns

Complete by: end of day Wednesday

  • Holding down left shift prompts a simple spinning animation, and a hexling appears!
  • Hexling follows player
  • Multiple hexlings can be spawned
  • Hexlings collide with environment, and each other, but not with exit
  • Hexlings do not get close enough to player to collide i.e. orbiting
  • Hexlings move out of player's way (perhaps scatter like bowling pins?)
  • Hexling charge (recall should just work?)

Simple audio effects

Complete by: end of day Thursday

  • Charge harmonic
  • Recall harmonic
  • Spawn hexling harmonic
  • Enter game harmonic
  • Pause screen taps

Deploy all

Complete by: end of day Thursday

  • WASM
  • Linux
  • Windows

Some mild refactoring, which is good for the soul

Complete by: end of day Thursday

  • Re-scale all entities to support smaller screens
  • While you're doing that, refactor all magic numbers
  • Fix pause/play bug

Spawn single enemy in initial room

Complete by: end of day Friday

  • Itch viewport works seamlessly with fullscreen button
  • Fix D key not working on Itch
  • Enemy has shape and orbits around a fixed point
  • Viewport follows player
  • Enemy will attack on proximity (either player or hexlings)

Enemy interaction

Complete by: midday Saturday

  • Enemy will seek to attack player, which reduces player health
  • Hexlings can damage enemy by colliding with it, which reduces their health also
  • Enemy despawns once destroyed
  • Enemy disintegrates into a cloud of entities once destroyed
  • Player likewise creates a barrage of entities when they are destroyed.
  • If player is destroyed, game over state displays.
  • In game over, enter restarts
  • In game over, escape exits

Very simple soundtrack

Complete by: end of day Saturday

  • Don't reach for magical, we need quick and dirty
  • Recorded and attached to playing state

Music controls

Complete by: Sunday morning

  • Stops in pause state
  • Press M to mute soundtrack
  • If it's simple, add key controls to change volume
  • Add enemy sound effects (harmonic or harsher/discordant?)

Fog of war

Complete by: midday Sunday

  • Player can't see beyond r radius
  • Player can see radius around each hexling
  • Fog... looks like fog? If there's time.

In-game text

Complete by: midday Sunday

  • Text events can appear based on in-game triggers
  • Text eventually fades
  • Basic story development and triggers for first room

First level design

Complete by: end of day Sunday

  • Say, four rooms with boss at end
  • Distribute enemies throughout
  • Distribute food for hexlings
  • Hexling colour degrades to grey when damaged
  • Hexlings can feed to regain health
  • Ensure hexling damage is function of health
  • For the purposes of the theme, allow a lot of hexlings? But also a lot of enemies, for balance.
  • Story development and triggers for first level

Deploy all

Complete by: end of day Sunday

  • WASM
  • Linux
  • Trial MacOS build?
  • Windows

More music

Complete by: end of day Monday

  • If you've gotten this far (nice work!) allow yourself the luxury of working on another music track, or making the first one more polished.
  • Consider a brief title track or theme
  • Add or polish sound effects
  • Consider altering music during conflict
  • Consider a boss fight track

Second level design

Complete by: end of day Monday

  • If complications haven't arisen, add another level
  • Reduce hexling and enemy numbers in first level to provide growth
  • Create another boss fight
  • Create a portal or transition to the new level
  • Consider adding a success/win screen

Deploy all

Complete by: Monday night, probably laaate

  • WASM
  • Linux
  • MacOS
  • Windows

SUBMIT

Complete by: Monday night

  • Update itch.io description
  • Links to all builds
  • Ensure documentation and crate credits are provided
  • Final checks and play tests