Game Project Implementation - DevLog


Game Implementation:

The current version of “Codename: Rune Caster” game overall differs notably from the specifications written in the concept document particularly in terms of the mechanics, animation, level length, level blocking/art, enemy diversity, and puzzles. Below are included listed envisioned versus to-date product comparisons based on the categories just mentioned.

1. Game mechanics:

1.1 Attacking

In the concept document it was specified the implementation of a close quarters combat mechanic to battle particular types of enemies that could only be damaged this way and are impervious to magical attacks. The current version of the game only includes one type of ranged attack which is the instantiation of electrical runes that damage every type of devised enemy. The implementation of different types of attacks, two physical (punching and kicking) and three magical runes (electricity, water and savia/plant based), would have required individual scripted behaviours inheriting from an attack class that would be called on different keyboard inputs. Given some time constraints and further time needed to implement mechanics this was not possible. However, UI elements, animations and assets were created and available for future upgrades to match desired specifications.

The original concept suggested the possibility of implementing a base character that could collect upgrades or perks that improved persistently the strength of the magic and physical attacks, jumping height, among other characteristics. The implementation of such variety of perks requires development of a higher diversity of levels and obstacles, full scripted attack behaviours, multiple enemies, and inventory systems. The current product does not include upgrading systems due to time constraints and scripting efficiency but again, assets that include inventory systems and potential upgrades were created and are available now for future progress.

2. Animation

2.1 Player movement animations:

The current version of the game includes most different types of planned movement animations for jumping and running on desired input. However, smooth transitions between the character accelerating and decelerating these actions for a more realistic appearance were not possible to achieve with my current coding skills.

2.2 Player attack animations:

All rune instantiation animations in an eight-way style were created but not those related to physical attacks. At the current stage, only a forward magical attack animation was implemented for horizontal axis as I found challenging and time-consuming matching the mouse position input to the angle. In future development sessions this project will include such animation assets to make the project more visually appealing. An intended visual effect for rune selection, which is included in the settings menu as a background animation, is adding a short magic casting animation to give the player the sensation of selecting a different weapon. As no other types of attacks were incorporated in the current version of the project this asset was not applied to the player state machine.

3. Level length

Originally, three to four short levels were planned but only two short levels could be implemented in the given timeframe. The successfully designed levels offer different challenge experiences and different backgrounds to depict novel areas to the player. The planned stages in the concept possibly expanded this concept to alternative ecosystems including desert and coastal zones but unfortunately only a woodland ecosystem was viable in the current context.

4. Level blocking and art

The intended tile maps and art overall matched the style of devised concept: pixel-based frame drawings. As stated before, the planned landscapes included desert and coastal zones, so extra tiles depicting sand, puddles, arid vegetation and fauna are missing in the current version of the project. Also, background images of respective areas with cartoon effect to simulate the hand-drawn style were created for implemented zones and can be easily created for pending ones.

5. Enemy diversity

A particular amount of enemy types in the game was not defined in the concept, only three base types of enemies were created with slight resistance difference, movement patterns and AI, and attack structure. For an additional fun factor, and as part of the elemental susceptibility concept, it was intended to create at least seven different types of enemies with very strong unique plant characteristics. The idea was to create at least two enemies that had a single element weakness and one type that could not withstand close quarters attacks. In the current version, two enemies have unique characteristics (Pisum and Solanum) but are equally susceptible to spark attack while the last one (Rosa) is impervious to all types of attacks and only induces contact damage to the player.

6. Puzzles

The only type of mental challenge to the player at this stage is to beat platforming challenges in both levels. Not exact puzzles were mentioned in the concept document, but it was intended to create small cause-effect puzzles to unlock areas and eliminate obstacles or enemies. In future updates of the project planning, the puzzle factor is to be done and will likely include tripwire ray casting effects as core scripted behaviour.

Feedback Summary: During a peer game testing session, the most notable element to be improved was fixing a jumping issue related to ground tag detection. This issue occurred when player landed or touched untagged game objects as the scripted behaviour triggered via a switch that enabled a single jump mechanic. This fix was very easy to solve as all needed was to inspect for game objects in scene that would collide with the player and select the appropriate tag accordingly. Additional comments based on peer testing included the lack of restorative tokens for health and spark gauges that greatly limited the possibility to beat the level. To address this issue, additional tokens in the world space were duplicated and scattered throughout the scene which eased the level’s challenge.  Finally in terms of level design, the platform velocity was an important complaint from testers, so using the animation curve component attached to these I simply modified the public variable from the inspector and adjusted the colliders and sprite scales, so platforms were more easily navigable and higher room for action was achievable to fight the enemies floating. All these adjustments helped me to deliver a more stable product that had a decent introductory level of challenge

Assets list

In the table below are included all assets used in this version of the project with a brief description and role in the game:

Animations folder

Asset name

Description

Role in game

PeaHurt

Hurt animation for Pisum

When Pisum is impacted triggers animation

PeaMovL

Movement animation for Pisum

Simulates movement of Pisum body parts

TomatoAttackL and R

Attack animation for Solanum

Plays when Solanum instantiates projectiles

TomatoDying

Death animation for Solanum

When enemy health <= 0 this animation is reproduced once.

TomatoHurt

Hurt animation for Solanum

When Solanum is impacted triggers animation

TomatoMovL

Movement animation for Solanum

Simulates movement of Solanum body parts

BatteryShine

Eye-catching effect for ammo token spark rune

Shiny effect on battery rune.

GoalFlag

Animation for end of the level token

Shows “waving flag” that indicates the end of the level.

heartBeating

Eye-catching effect for health token heart

Beating effect on heart token

PlantTShine (Unused)

Eye-catching effect for ammo token savia rune

Shiny effect on plant in pot.

WaterRuneShine (Unused)

Eye-catching effect for ammo token water rune

Shiny effect on water rune.

SparkRuneBullet

Spark rune bullet expansion effect

 Simulates energy movement in spark projectile

SparkSettings

Spark rune bullet expansion effect for settings

Simulates energy movement in spark projectile for settings.

TomatoSeedBreaking (Unused)

Solanum seed breaking effect

Simulates seed cracking on collision with RigidBody

Soldier Hurt Left and Right

Simulates flinch effect from player in both left and right orientations.

When player is hurt by projectile or enemy contact it plays based on its orientation.

SoldierBreathing and L

Idle state from player when stationary.

When player is stationary a breathing animation is played based on its orientation.

SoldierDying Left and Right

Death animation for the player based on its orientation

When players health <= 0 a death state plays once.

Soldier Jumping and Left

Jump animation for the player based on its orientation

On input, the jumping animation state will trigger

SoldierMagicShoot_E

Spark rune shooting animation for player

On input, if ammo is available, player will shoot in the facing direction.

SoldierMagicShoot_N,NE,NW,SE,SW (Unused)

Spark rune shooting animations for cardinal directions for player

On input and on specific mouse position, reproduces 7-way shooting animations.

SoldierMoving Left and Right

Movement animations for player based on orientation.

On input, soldier running animations will reproduce.

SummonRune (Used for Settings only)

Animation for rune type selection (spark, savia or water)

On input, possibly mouse wheel will reproduce to indicate rune weapon changes

BatteryShineCtrl

State machine controllers for respective animation and transitions.

Will control desired animation transitions based on scripted behaviour and stated parameter conditions.

PisumController

PlantTShineCtrl

SolanumController

SoldierController

WaterRuneShineCtrl

GoalA

heartImage1

SparkRuneBulletCtroller

SummonB

Assets folder

Asset name

Description

Role in game

CastleWall

Cartoon image of stones tile for tile palette.

Tiles that simulate castle walls for Level2 blocking.

DryVegAnimTile

Scriptable tile of dry grass for tile palette.

Scriptable tiles that simulate dry grass movement for Levels blocking.

FlowerAnimTile

Scriptable tile of flowers for tile palette.

Scriptable tiles that simulate moving flowers for levels blocking.

Gap 1 and 2

Black tiles for tile palette

Tiles that simulate dark areas or pits for levels blocking.

GrassAnimTiles and UpgrTiles

Scriptable tile of live grass for tile palette

Scriptable tiles that simulate live grass moving.

GrassSprites and B and GrassSpritesUpgrade A and B

Still vegetation sprite atlas for tile palette

Tiles that simulate live and dry vegetation for level blocking.

Hollow log

Bark-like sprite used as obstacle gameObject

Sprite simulating bark from a fallen dead tree.

Rocks

Rock-like sprites used as obstacle gameObject

Sprite simulating Rock blockade.

SoilFill 1,2,3,4,5 and 6

Still ground and ground vegetation tiles for tile palette.

Tiles used in ground and filling tilemap for character landing and moving through.

UndergroundDecor

Background tiles for underground areas for tile palette.

Tiles used for level background in underground areas.

WaitingSign

Sign-like sprite used for showing text gameObject.

Sprite simulating a sign that displays a particular message to player.

TomatoSeedBreaking1 - 8

Sprite atlas for seed cracking animation.

Sprites used to create seed cracking animation for enemy projectile.

PeaSeedBullet

Sprite for Pisum enemy projectile.

Sprite used as projectile for Pisum enemy.

TomatoSeedBullet

Sprite for Solanum enemy projectile

Sprite used as projectile for Solanum enemy.

Pea 1- 5

Sprite atlas for Pisum enemy animation.

Sprites used to create Pisum movement animation.

PeaHurt 1-3

Sprite atlas for Pisum enemy animation.

Sprites used to create Pisum flinch animation.

RoseA

Sprite for Rosa enemy game Object.

Sprite used for Rosa enemy/ obstacle.

Tomato1_A-D

Sprite atlas for Solanum enemy.

Sprites used to create Solanum movement animation.

Tomato1_AttackA-D

Sprite atlas for Solanum enemy.

Sprites used to create Solanum attacking animation.

tomatoDying A-E

Sprite atlas for Solanum enemy.

Sprites used to create Solanum dying animation.

heartImage1-5

Sprite atlas for health token.

Sprites used to create the heart beating animation in health token.

Tokens_Items1-9

Sprite atlas for rune tokens.

Sprites used to create all rune types shining animations.

GoalA-I

Sprite atlas for goal token.

Sprites used to create the flag waving animation.

GrndAndMechPlatform

Sprites for platforms in levels.

Sprites used to create cosmetics for level platforms in game.

Level1Profile

Global Postprocessing profile for level 1.

Uses a faint bloom effect to simulate a sunny environment.

DarkArea Profile

Local Postprocessing profile for level 1.

Uses colour grading effect to reduce the gamma parameter and simulate darkness.

AttackMagicA,B,C,D,E,F (N,NW,NE,E,SE,SW) and Transitions

Sprite atlas for player 7-way shooting.

Sprites used to simulate all possible shooting directions for player.

SoldierDied 1-4 and Left 1-4

Sprite atlas for player death animations.

Sprites used for player death animation depending on orientation.

SoldierHurtA-C Left and Right

Sprite atlas for player flinch animations.

Sprites used for player hurt.

SoldierIddle Left and Right

Sprites for player breathing animation.

Sprites used for player idle animation depending on orientation.

JumpingA-C Left and Right

Sprites for player jumping animation.

Sprites used for player jumping depending on orientation.

SoldierMoving Left and B-D

Sprite atlas for player movement.

Sprites used for player’s Left and right movement.

Summon A-I

Sprite atlas for player attack selection animation.

Sprites used to represent rune/weapon change selection.

Free 2D Pixel Trees Kit asset bundle (Tree_01,04 and 07)

Free pixel art assets for level decoration (See references below)

3 different tree assets used to decorate Level 1 scene.

Prefabs Folder

Asset name

Description

BatteryT

Prefab for spark token.

DeathZone

Prefab for areas where player can die from fall.

GrandPisumBullet

Prefab for Level 1 boss.

GroundPalette

Prefab for Tile palette settings.

HealthToken

Prefab for hearth token.

Log

Prefab for fallen tree obstacle.

PeaSeedBullet

Prefab for Pisum projectile.

PisumEnemy

Prefab for Pisum enemy.

PlantT (Unused)

Prefab for savia token.

PlatformGrass

Prefab for platform using grass sprite.

PlatformMech

Prefab for platform using mech sprite.

Player

Prefab for Soldier player Game object.

Rocks

Prefab for rock obstacles.

SolanumEnemy

Prefab for Solanum enemy.

SparkBullet

Prefab for spark rune bullet.

SparkRuneParticle

Prefab for spark rune bullet particle system.

tomatoSeedBullet

Prefab for Solanum seed projectile

WaterRune (Unused)

Prefab for water rune token.

Background art

Asset name

Description

BackgroundLevel1

Painting filter effect of a real landscape photograph from Hobart city.

Level2Bkgrnd

Image from a castle taken online and a painting filter effect for real sky photograph used for Level 2 background design.

Skylevel2Bkgrnd

TitleScreenBkgrnd

Painting filter effect of a real rural landscape and hand-drawn art of game cover and title screen.

TitleScreenImg

GoalBkgrndImg

Painting filter effect of a real night landscape and hand-drawn art of game end scene.

GoalSceneImg

Sound effects and music

Asset name

Description

Role in game

Aguas Claras

Music for level (See references below)

Background music for Level 1

BatteryTSound

Token sound Clip

Spark token collection sound

cuatroVientos

Music for Title Screen (See references below)

Background music for Title screen and settings.

DeathByAttack (Unused)

Player’s death sound Clip

Player death by damage sound effect

DeathByFall

Player’s death sound Clip

Player death sound effect when falling in a pit.

EnemyHurtSound

Enemy damage sound Clip

 

HealthSoundFX

Token sound Clip

Heart token collection sound effect.

HurtSound_B

Player’s hurt sound Clip

Player damage sound effect

Ilalo

Music for Level (See references below)

Background music for Level 2.

PeaHurt

Enemy damage sound Clip

Pisum damage sound effect.

RuneShot

Rune instantiation sound Clip

Spark rune shooting sound effect.

SoldierGruntJump

Player’s Jumping Sound Clip

Player jumping sound effect.

C# Scripts

Asset name

Description

Role in Game

AttachPlatformToPlayer

Behaviour set to platform prefab.

Used in platforms to affect hierarchy order and make player child of platform.

BasicPlatformLeftRight

Behaviour set to platform prefab.

Used to harness the animation curve component to modulate horizontal movement.

BasicPlatformUpDown

Behaviour set to platform prefab.

Used to harness the animation curve component to modulate vertical movement.

CreateBulletCrashParticle

Behaviour set to SparkBullet prefab.

This will instantiate onDestroy a prefab particle system for bullet collision cosmetics

DestroyEnemyProjectilesOnCollision

Behaviour set to tomato and pea seed prefabs.

This script will direct instantiated enemy projectiles to destroy themselves on collision.

fadeController

Behaviour set to canvas gameObject.

Allows a pivotal control for fade out effect on scene load.

FadeInOutScript

Behaviour set to canvas gameObject.

This allows to control the alpha value of CanvasGroup class given desired time intervals.

GameOverScreen

Behaviour set to canvas gameObject.

Sets active an otherwise disabled canvas image that contains buttons and restart options when player dies.

GoalSceneSwitch

Behaviour set to flag token gameObject.

Uses the SceneManager to load the GoalScene.

HealthTokenCollection

Behaviour set to Health Token prefab.

This behaviour detects collisions with player, will access the health slider and increase by 1 its current value and reproduces a sound effect.

PlayerDeathZone

Behaviour set to DeathZone prefab.

Will destroy player gameobject on exit and sets active the gameOver Screen.

RuneInstantiator

Behaviour set to player’s grandchild: bulletInstantiator

Controls projectile instantiation, shooting sound effect, ammo, and shooting intervals.

RuneShooterScript

Behaviour set to player’s child: RuneShooter.

This behaviour controls the rotation of the instantiator object so it rotates around the player.

RuneTokenCollection

Behaviour set to Battery T prefab.

This behaviour detects collisions with player, will access the spark slider and increases by 4 its current value and reproduces a sound effect.

SceneSwitcher

Behaviour set to an OnClick or collision event.

When assigned to UI buttons, controls the next scene to be loaded.

SoldierDamageScript

Behaviour set to player gameObject.

Used to trigger hurt animation, sound effect, and reduce health by 1 when collides with enemy or its projectiles.

SoldierHealth

Behaviour set to player gameObject.

This script holds information of the health slider on player and sets its value to 10.

SoldierMovement

Behaviour set to player gameObject.

Behaviour that uses Input manager to reproduce animation changes based on floating point parameter changes. Includes jumping mechanic.

VolumePrefs

Behaviour set to an OnClick event in the settings scene.

This script is set to a preferences controller that manages the user input and translates it to the AudioListener class.

EnemyDamageScript

Behaviour set to enemy prefabs.

This script controls the hurt animation display, sound effect, and accesses the enemy’s health reducing it by 1 when collision with sparkBullet occurs.

EnemyFacing AndAttacking

Behaviour set to Solanum enemy prefab.

Once player is within detection distance, the enemy will change its local scale towards it and start seed instantiation.

EnemyHealth

Behaviour set to enemy prefabs.

This script holds information of the health slider on enemy and sets its value to 5.

EnemyPatrollingLeftRight

Behaviour set to Solanum enemy prefab.

Basic enemy AI patrolling for Solanum. Uses child object to detect collision in front of object and change its scale and velocity when this occurs.

EnemySpawner

Behaviour set to enemy prefabs.

This script is used for spawning region attached to camera that will instantiate indefinite enemies in a defined interval.

GrandPisumDetectionAttack

Behaviour set to Pisum enemy prefab.

This is a modified version of EnemyFacingAndAttcking Script for Grand Pisum boss in Level 1.

References:

The following are references for external resources that were used as assets in this project:

Pngegg (n.d). Blue and white burst illustration. https://www.pngegg.com/en/png-zhynt/download

MoreBBlakeyyy. (2022, October 20). 2D Jump in Unity in Under 1 Minute. [Video]. YouTube. https://www.youtube.com/watch?v=QXB4EAyYD8w

LeftyRighty. (2016, January 17). How to make and object move up and down on a loop. Unity Community Discussion. https://forum.unity.com/threads/how-to-make-an-object-move-up-and-down-on-a-loop.380159/

GameDev With Mark. (2022, March 5). How to make the enemy face & follow the player in Unity. [Video]. YouTube. https://www.youtube.com/watch?v=eZBm-VNAYDA

Ardyana Types (2022) Nortune-Black. DaFont. https://www.dafont.com/nortune.font#null

Envato Elements. (n.d). Sci fi engine short start. Mixkit. https://mixkit.co/free-sound-effects/electricity/

GameAssetWorld. (2023, January 13). Unity How to Fade in/out while changing scene (2023 Tutorial).[Video]. Youtube. https://www.youtube.com/watch?v=Ox0JCbVIMCQ

Envato Elements. (n.d). Cartoon bubbles popping. Mixkit. https://mixkit.co/free-sound-effects/bubbles/

Envato Elements. (n.d). Aggressive beast roar. Mixkit. https://mixkit.co/free-sound-effects/monster/

Envato Elements. (n.d). Creature cry or hurt. Mixkit. https://mixkit.co/free-sound-effects/monster/

El Búho. (2018, December 14). Aguas Claras. [Video]. YouTube. https://www.youtube.com/watch?v=xbJwhGpGdwk&list=RD2YSWikOL1nI&index=2

Kingman Mateo. (2018, May 9). Chancha Via Circuito – Ilaló (Ft. Mateo Kingman). [Video]. YouTube.  https://www.youtube.com/watch?v=ALO40b-qldQ

Treubig Danit. (2017, January 1). Cuatro Vientos. [Video]. YouTube. https://www.youtube.com/watch?v=7UgVqlakdAw

Stevika.  (2023, May 8). Free 2D Pixel Trees Kit. Unity Asset Store. https://assetstore.unity.com/?q=free%202d%20pixel%20trees%20&orderBy=1

SpeedTutor (2021, June 1). Unity Audio: How To Make a UI Volume Slider (Saving &Loading).[Video]. YouTube. https://www.youtube.com/watch?v=k2vOeTK0z2g

Newman Martin (n.d). The Castle Walls Bath Towel. Pixels. https://pixels.com/featured/the-castle-walls-martin-newman.html?product=bath-towel

Files

RuneCaster V6.zip 26 MB
Oct 08, 2023

Get Codename: Rune Caster

Leave a comment

Log in with itch.io to leave a comment.