Skip to content

Releases: thetawavegame/thetawave-legacy

v0.1.7 "Organization"

16 Jul 19:19
4153baf
Compare
Choose a tag to compare
v0.1.7 "Organization" Pre-release
Pre-release

The primary focus of this release was to organize how source files are categorized into directories and modules.

Organization

  • Divided project into thetawave_lib and thetawave_game workspaces
  • Removed components directory
  • Removed resources directory
  • Removed systems directory
  • Removed entities directory
  • Added boss directory/module
  • Added misc directory/module
  • Added motion directory/module
  • Added phases directory/module
  • Added player directory/module
  • Added spawn directory/module
  • Added spawnable directory/module
  • Added store directory/module
  • Added visual directory/module
  • Added weapons directory/module

Misc

  • Added blast range for mobs and players
  • Added Timer for managing periodic events
  • Added Health for managing health of players and mobs
  • Began adding comments for everything in the game

v0.1.6 "Loot"

20 May 02:28
42716fb
Compare
Choose a tag to compare
v0.1.6 "Loot" Pre-release
Pre-release

Items

  • Blast Repeller
  • Tractor Beam

Mobs

  • Money Asteroid

Misc

  • Fixed bug: index out of bounds error when there are less than two phases in level
  • Added Modifier enum for implementing item and consumable effects
  • Items and Consumables are now a collection of "Modifier" enums
  • Added DropRolls for defining how many loot rolls a mob has and different drop tables to hold different types of loot odds
  • Consumable drops from enemies now have random initial movement and spin
  • Items and consumables now attract to the player when nearby

Controls for playing the game are here.

v0.1.5 "Formations"

15 Apr 15:10
Compare
Choose a tag to compare
v0.1.5 "Formations" Pre-release
Pre-release

Focus

The focus of this release was to organize how Spawnables are spawned into the level. Previously, levels only contained a phase of randomly spawning enemies and a boss. In the Formations update there are four types of phases that can be used to construct a level:

  • InvasionRandom
  • InvasionFormation
  • Rest
  • Boss

The InvasionRandom phase takes in an InvasionRandomPool parameter and spawns Spawnables from that pool at random. Below is an example of an InvasionRandomPool called Level1Easy defined in spawner.ron.

Level1Easy: [
            (
                spawnable_type: Some(Mob(Enemy(Drone))),
                weight: 1.0,
                period: 1.5,
            ),
            (
                spawnable_type: Some(Mob(Enemy(Pawn))),
                weight: 0.9,
                period: 2.0,
            ),
            (
                spawnable_type: Some(Consumable(Money1)),
                weight: 0.2,
                period: 0.3,
            ),
            (
                spawnable_type: None,
                weight: 0.5,
                period: 0.3,
            )
        ],

The spawnable_type property is the type of spawnable in the pool. The weight property is how likely the Spawnable should spawn relative to other Spawnables. The period property is how long the spawner will wait before spawning something else.

Similarly, the InvasionFormation phase takes in an InvasionFormationPool parameter and spawns a vector of Spawnables with positions from that pool at random. Below is an example of an InvasionFormationPool called Level1Easy defined in spawner.ron.

Level1Easy: [
            (
                formation_spawnables: [
                    (
                        spawnable_type: Mob(Enemy(Drone)),
                        position: [150, 310],
                    ),
                    (
                        spawnable_type: Mob(Enemy(Drone)),
                        position: [180, 300],
                    ),
                    (
                        spawnable_type: Mob(Enemy(Drone)),
                        position: [210, 310],
                    ),
                    (
                        spawnable_type: Mob(Enemy(Pawn)),
                        position: [100, 390],
                    ),
                    (
                        spawnable_type: Mob(Enemy(Pawn)),
                        position: [260, 390],
                    ),
                ],
                weight: 1.5,
                period: 10.0,
            ),
            (
                formation_spawnables: [
                    (
                        spawnable_type: Mob(Enemy(Pawn)),
                        position: [110, 390],
                    ),
                    (
                        spawnable_type: Mob(Enemy(Drone)),
                        position: [150, 370],
                    ),
                    (
                        spawnable_type: Mob(Enemy(MissileLauncher)),
                        position: [180, 300],
                    ),
                    (
                        spawnable_type: Mob(Enemy(Drone)),
                        position: [210, 370],
                    ),
                    (
                        spawnable_type: Mob(Enemy(Pawn)),
                        position: [250, 390],
                    ),
                ],
                weight: 0.8,
                period: 12.0,
            ),
            (
                formation_spawnables: [
                    (
                        spawnable_type: Mob(Enemy(StraferRight)),
                        position: [180, 300],
                    ),
                    (
                        spawnable_type: Mob(Enemy(StraferLeft)),
                        position: [180, 320],
                    ),
                    (
                        spawnable_type: Mob(Enemy(StraferRight)),
                        position: [170, 340],
                    ),
                    (
                        spawnable_type: Mob(Enemy(StraferLeft)),
                        position: [190, 360],
                    ),
                    (
                        spawnable_type: Mob(Enemy(StraferRight)),
                        position: [160, 380],
                    ),
                    (
                        spawnable_type: Mob(Enemy(StraferLeft)),
                        position: [200, 400],
                    ),
                ],
                weight: 1.0,
                period: 8.0,
            )
        ],  

The formation_spawnables property is a vector of spawnable_types paired with an x y coordinate position. When a formation is spawned, each spawnable in this vector is spawned at the same time at its position, creating a formation. Formations also have a weight and period that works the same as in the InvasionRandomPool.

The release makes adding a formation by far the most straightforward contribution a contributor can make to the game.

Change List

  • New InvasionFormationPhase
  • InvasionRandomPhase updated to use periods and weights
  • Minor refactors of the PhaseManager
  • Add spawner pools defined in spawner.ron
  • Strafer enemy divided into variants: StraferLeft and StraferRight
  • Add parent SpawnableType for enemies and allies called Mob
  • Data ron files now included in the binary
  • Config files now generate at runtime

v0.1.4 "Foundations"

16 Mar 01:03
72dcc0a
Compare
Choose a tag to compare
v0.1.4 "Foundations" Pre-release
Pre-release

This is the first release since @tigleym joined the project! Together, we have been working hard to refactor the codebase to be more conforming to ECS, and more accessible to new contributors. You can learn more about the revival of this project from our RustFest Global talk. Along the way, we have also added some more fun features! Here is a list:

Items

  • Blaster Size Enhancer
  • Frequency Augmentor

Consumables

  • Armor

Enemies

  • Missile
  • Missile Launcher

Misc

  • Generalized store to sell any kind of spawnable entity
  • Giblets!
  • Enemy thruster animations
  • Blast hit animations
  • Cursed scrolling background
  • Barriers at the arena borders
  • New sound effects
  • Started writing a game/contribution guide

Controls for playing the game are here.

Release 0.1.3

25 Sep 04:03
444e146
Compare
Choose a tag to compare
Release 0.1.3 Pre-release
Pre-release
  • More items (view readme for full list of item effects)

    • quadrupedal tentaclover
    • defense satellite
    • double barrel
    • yithian plague
    • spice
  • Items are now purchased from store

    • store restocks with 3 items every 10 seconds (I intend to increase this in the future to about 60 seconds)
    • items can be purchased by using the 1,2, and 3 keys corresponding to the top. middle, and bottom slots respectively
    • when purchased the item is removed from the item pool and spawned at the top of the arena at the same x coordinate as the player
    • skipped items will have their weight of appearing again halved
  • Sound effects added

  • 3D background with GLTF sun and rotating earth

  • Sprites separated into different sprite sheets by category

Release 0.1.2

28 Aug 15:37
Compare
Choose a tag to compare
Release 0.1.2 Pre-release
Pre-release
  • Updated to Amethyst v0.12.0
  • 1x and 5x currency drops
  • Hauler ally added
  • "Phase" system added

This release has one level containing the following phase map:

8 second Rest -> 60 second Invasion -> 8 second Rest -> 300 second Invasion

Release 0.1.1

12 Jun 15:40
Compare
Choose a tag to compare
Release 0.1.1 Pre-release
Pre-release
  • Health and Defense drops added
  • Minor status bar fixes
  • Refactor status bar code

Release 0.1.0

10 Jun 08:23
5538d0c
Compare
Choose a tag to compare
Release 0.1.0 Pre-release
Pre-release
  • Core mechanics
  • Enemies
  • Items
  • Stats display panels
  • Status bars
  • Collisions
  • Shooting
  • Barrel roll
  • Pausing