Miscellaneous

This category is in relation to side things that don't have a specific category.

Version Format

The game is using a custom version format cause why not, half inspired by Geometry dash's version system.

[!NOTE]
Non Pre-Release version tags are saved as _.__a

while Pre-Release version tags are saved as _.__b#

for sorting reasons.

Major versions

Major versions are big content updates, adding new levels or just a bunch of shit

Major versions reset the second version number to 00 and increment the first version number by 1.

Example (existing) Versions

  • 1.00
  • 2.00
  • 3.00

Minor versions

Minor versions are small content updates, adding a QOL feature, or just some bonus content not initally planned.

Minor versions increment the second version number by 10.

Example (existing) Versions

  • 1.10
  • 1.21
  • 2.10
  • 2.20

Patch versions

Patch versions are simple bug fix updates that add a missing feature, fix a broken feature or unintended side-effect.

Patch versions increment the second version number by 1.

Example (existing) Versions

  • 1.11
  • 2.21

Pre-Release versions

Pre-Release versions are versions that are released before a major (or maybe a big minor) update, intended to test the update before a release.

Pre-Release versions add "Pre-Release #" to the end of the version number.

Example (existing) Versions

  • 1.00 Pre-Release 1
  • 2.00 Pre-Release 1
  • 3.00 Pre-Release 1
  • 3.00 Pre-Release 2
  • 3.00 Pre-Release 3

Changelogs

This subcategory is dedicated to all the changelog files

1.00 Pre-Release 1 - 2/16/2026

Technically the inital release, no changes in the changelog

1.00 - 2/16/2026

Added

  • BACKGROUND TRACK : "dungeon drif"
    • BG tracks play every once and awhile
  • The ability to pause
  • Little animation before true death
  • little anim kinda transition thingy with enemies when they spawn and now they do like a bouncy kinda thing when they spawn
  • HIGH SCORE!
  • SAVE FILE
  • Enemy Direction... animations? Do you wanna call it that?
  • Player Sprite
  • SOUND EFFECTS!
  • Bullet Sprite

Changed

  • Enemy is now SLIGHTLY brighter
  • Enemies spawning in the same direction after spawning multiple around the same time is a rarer chance now (10% chance)
  • Bullets now fade in half the time
  • The bullet sprite is scaled up

Fixed

  • The cursor is now invisible
  • Enemies spawned later are now behind enemies spawned earlier

1.10 - 2/16/2026

Added

  • CREDITS... MENU?
  • MAIN MENU
  • You can leave to the main menu from gameplay in the pause menu via the back key
  • "back" control

Changed

  • Moved Version Text to Main menu
  • Direction arrow sprite has been updated

Fixed

  • Fixed Off-Centered Arrows (#1)

1.11 - 2/17/2026

Removed

  • Disabled / Removed Lost Focus Screen (#3)

Added

  • You can press the back keys to leave to the main menu in the game over
  • Github Contributors to credits

Changed

  • Credits format has changed slightly

1.21 - 2/17/2026

Fixed

  • Fixed Enemies spawning in the same direction not being a 10% chance

Added

  • Added Application Icon
  • Added BG to Level 1

Changed

  • Changed "Play" to "Level 1" in the Main Menu

2.00 Pre-Release 1 - 2/17/2026

Added

  • [DESKTOP] ADDED MOD SUPPORT
    • api_version should be 1.0+ for the mod to not be labelled as outdated
    • WITH A MOD MENU!!!!!!!
    • Just asset replacement and addition stuff right now, no scripts, sry
  • ADDED LEVEL 2!!
  • ADDED LEVEL SELECT!
  • Added support for level JSONS (assets/data/levels/_.json) to change gameplay values
  • You can leave the credits menu now via the back key (ESCAPE)
  • Added level to the score text
  • Added Panning and Pitching depending on what direction an enemy spawns in

Fixed

  • Fixed blank credits lines being added as text

Removed

  • Removed _-goes-here.txt files
  • Removed bullet sprite

Changed

  • Updated Level 1 BG
  • It's possible to append credits to the credits list via a mod now
  • BG Tracks are now softcoded and moddable via assets/data/songs.txt
  • The highscore save field has been removed and replaced with highscores (your highscore for level1 will persist however)
  • Sized up score and highscore text in gameplay

2.00 - 2/18/2026

Added

  • ADDED LEVEL 3!!
  • ADDED NEW BG SONG: "MASTERY"
  • ADDED NEW BG SONG: "INVASION"
  • [DESKTOP] Log files are generated when running the game now
  • You can press "R" on any state to go to the github issues page

Fixed

  • Gameover sending you back to level 1

Changed

  • The song list updates when the song list text file updates now (including when mods update it)

[1.21 - 2.00] - 2/18/2026

Added

  • ADDED LEVEL 3!!

  • ADDED NEW BG SONG: "MASTERY"

  • ADDED NEW BG SONG: "INVASION"

  • [DESKTOP] Log files are generated when running the game now

  • You can press "R" on any state to go to the github issues page

  • [DESKTOP] ADDED MOD SUPPORT

    • api_version should be 1.0+ for the mod to not be labelled as outdated
    • WITH A MOD MENU!!!!!!!
    • Just asset replacement and addition stuff right now, no scripts, sry
  • ADDED LEVEL 2!!

  • ADDED LEVEL SELECT!

  • Added support for level JSONS (assets/data/levels/_.json) to change gameplay values

  • You can leave the credits menu now via the back key (ESCAPE)

  • Added level to the score text

  • Added Panning and Pitching depending on what direction an enemy spawns in

Fixed

  • Fixed blank credits lines being added as text

Removed

  • Removed _-goes-here.txt files
  • Removed bullet sprite

Changed

  • Updated Level 1 BG
  • It's possible to append credits to the credits list via a mod now
  • BG Tracks are now softcoded and moddable via assets/data/songs.txt
  • The highscore save field has been removed and replaced with highscores (your highscore for level1 will persist however)
  • Sized up score and highscore text in gameplay
  • The song list updates when the song list text file updates now (including when mods update it)

2.10 - 2/18/2026

Fixed

  • [DESKTOP] api_version should be 2.0+ for mods to not be labelled as outdated (this is a fix cause the change was intended for 2.00)

Added

  • [DESKTOP] Discord RPC Support

2.20 - 2/20/2026

Added

  • Added Option to shoot with the directionals instead of gameplay_fire
    • Added SWD Highscores
  • CONTROLS REMAPPING
  • OPTIONS MENU

Fixed

  • Fixed the back keybind not allowing you to leave the level select

Removed

  • All support for the "highscore" save field has been cut off and if your save is from 1.00 to 1.21 you will lose your level 1 high score

2.21 - 2/20/2026

Fixed?

  • Crashes when shooting enemies too fast

3.00 Pre-Release 1 - 2/21/2026

Added

  • ADDED ENEMY VARIATIONS!
    • They work via the new enemy_variations field in level JSONs.
      • speed_multiplier
      • graphic
  • ADDED 3 NEW LEVELS!
    • Level 4 is complete
    • Level 5 and 6 are still Work in Progresses
  • Added settings field to level JSONs
    • camera_zoom
    • bg_scale_modifier
  • Added Level BGs in the BG of the level select

Changed

  • [DESKTOP] api_version should be 3.0+ for mods to not be labelled as outdated
  • Changed directory of the (now default) enemy asset to assets/images/enemies/default (this is where all enemy assets will go obv)

Removed

  • Removed Panning and Pitching depending on what direction an enemy spawns in

3.00 Pre-Release 2 - 2/21/2026

Hello! Nice little message for ya since the changelog format has changed to be more like minecraft.

New Options

  • Added "Extra Health" Option : Gives you extra health in gameplay

Modding Changes

  • [DESKTOP] api_version should be 3.1+ for mods to not be labelled as outdated

Level Changes

  • Enemy Spawning values have been tweaked
  • Levels 5 and 6 and basically complete and only minor tweaks will most likely happen from now

Technical Changes

  • Added(?) bg track caching

  • Death is now based on a health value in gameplay

  • Renamed Level Data enemyVariations field to enemy_variations

  • Renamed Level Data enemySpawning field to enemy_spawning

  • Added optional difficulty field to the level settings data : Controls the difficulty number displayed on the Level Select (Can changes depending on settings)

  • The PRE_RELEASE define is checked to be 1 or more for it to count as a pre release

  • The game's PRE_RELEASE define is now defined in the Project XML

  • Added Enemy Variation Presents system

    • Current existing presents:
      • speed-tier1
      • speed-tier2
    • When present is set in enemy variation data it will look for the present in data/enemy_variation_presents
  • Added optional present field to enemy variation data : Controls what the base enemy variation data is

  • Added optional variation_chance field to enemy variation data : Overrides the chance of the variation being selected

General Changes

  • The Direction arrow that is your current direction is now fully visible while the others are faded
  • Direction arrows are now updated only when the player moves
  • Shrunk time survived text a little bit
  • Leaving gameplay through the pause menu now sends you to the survival mode state or the level select state
  • Added tip text about the Shift + R keyboard shortcut
  • You have to press "SHIFT + R" now to go to the github issues
  • Game over text is centered in alignment now
  • Removed Flixel Splash
  • Added "Loading Screen" that appears before going to the main menu where the player is spinning for a random amount of time
  • Added hurt sound that plays when... well hurt, in gameplay
  • The level select now displays level difficulty and highscore
  • The window title is now the game name and then the version

Asset Changes

  • The changelog file is no longer included in release build
  • Added speed-tier2 enemy graphic (Usable in enemy variations)

Github changes

  • Added "Github Issue" Issue Template
  • The mdbook has been updated
    • The mdbook now includes changelogs
    • The mdbook now has pages for level data fields

Fixed Github Issues

  • #6 : Fixed Missing "Game version" label in bug report form

Fixed Game Bugs

  • #5 : Fixed Input not being paused when selecting a menu option

3.00 Pre-Release 3 - 2/21/2026

Quick just, hotfix cause I don't like that I credited myself as MAOCHI.

Modding changes

  • [HTML5] The mods folder is no longer included
  • Upgraded dummyMod api_version to 3.1

MDBook changes

  • Removed finished roadmap entries
  • Added 2.00c page : 2.00 changelog compared to 1.21

Github changes

  • Changed Game Version textarea to an input in the bug-report form
  • Added Compiled entry to bug-report platform dropdown

Fixed Issues

  • #7 : Fixed Macohi credited as MAOCHI.

3.00 - 2/22/2026

I'm finally fucking done with this shit.

MDBook changes

  • Removed roadmap page

Level Changes

  • Added Level 7

Technical Changes

  • If variation_chance wasn't successful with any enemy varient then a random enemy is picked properly now
    • if there isn't a default / null enemy in enemy_variations then a default enemy should no longer appear
  • If enemy_variations has only 1 entry then that entry is sent through
  • Added support for enemy variation presents to use presents of their own
  • Added health field to enemy variation death : Controls how many hits until the enemy is truely defeated

Asset Changes

  • Added healthy-tier2 enemy present

  • Added healthy-tier1 enemy present

  • Added healthy-tier2 enemy graphic (Usable in enemy variations)

  • Added healthy enemy graphic (Usable in enemy variations)

[2.21 - 3.00] - 2/22/2026

I'm finally fucking done with this shit.

MDBook changes

  • Removed roadmap page
  • Added 2.00c page : 2.00 changelog compared to 1.21

New Options

  • Added "Extra Health" Option : Gives you extra health in gameplay

Modding Changes

  • [HTML5] The mods folder is no longer included
  • [DESKTOP] api_version should be 3.1+ for mods to not be labelled as outdated

Level Changes

  • ADDED 4 NEW LEVELS!

Technical Changes

  • Added(?) bg track caching

  • Death is now based on a health value in gameplay

  • Renamed Level Data enemyVariations field to enemy_variations

  • Renamed Level Data enemySpawning field to enemy_spawning

  • Added optional difficulty field to the level settings data : Controls the difficulty number displayed on the Level Select (Can changes depending on settings)

  • The PRE_RELEASE define is checked to be 1 or more for it to count as a pre release

  • The game's PRE_RELEASE define is now defined in the Project XML

  • Added Enemy Variation Presents system

    • Current existing presents:
      • healthy-tier1
      • healthy-tier2
      • speed-tier1
      • speed-tier2
    • When present is set in enemy variation data it will look for the present in data/enemy_variation_presents
  • ADDED ENEMY VARIATIONS!

    • They work via the new enemy_variations field in level JSONs.
      • present
      • variation_chance
      • speed_multiplier
      • graphic
      • health
    • if there isn't a default / null enemy in enemy_variations then a default enemy should never appear
  • Added settings field to level JSONs

    • camera_zoom
    • bg_scale_modifier
    • difficulty
  • Removed Panning and Pitching depending on what direction an enemy spawns in

General Changes

  • Added Level BGs in the BG of the level select

  • The Direction arrow that is your current direction is now fully visible while the others are faded

  • Direction arrows are now updated only when the player moves

  • Shrunk time survived text a little bit

  • Leaving gameplay through the pause menu now sends you to the survival mode state or the level select state

  • Added tip text about the Shift + R keyboard shortcut

  • You have to press "SHIFT + R" now to go to the github issues

  • Game over text is centered in alignment now

  • Removed Flixel Splash

  • Added "Loading Screen" that appears before going to the main menu where the player is spinning for a random amount of time

  • Added hurt sound that plays when... well hurt, in gameplay

  • The level select now displays level difficulty and highscore

  • The window title is now the game name and then the version

Asset Changes

  • Added healthy-tier2 enemy graphic (Usable in enemy variations)

  • Added healthy enemy graphic (Usable in enemy variations)

  • The changelog file is no longer included in release build

  • Added speed-tier2 enemy graphic (Usable in enemy variations)

  • Changed directory of the (now default) enemy asset to assets/images/enemies/default (this is where all enemy assets will go obv)

Github changes

  • Changed Game Version textarea to an input in the bug-report form

  • Added Compiled entry to bug-report platform dropdown

  • Added "Github Issue" Issue Template

  • The mdbook has been updated

    • The mdbook now includes changelogs
    • The mdbook now has pages for level data fields

Fixed Issues

  • #7 : Fixed Macohi credited as MAOCHI.
  • #6 : Fixed Missing "Game version" label in bug report form
  • #5 : Fixed Input not being paused when selecting a menu option

Source Code

Compiling

This page will cover all the steps needed to download and compile the source code for Dirifin on your device.

Requirements

Instructions

  1. Run cd where\you\want\the\source to change your directory to where you wish to download the source.
  2. Run git clone https://github.com/macohi/Dirifin.git to clone the repository.
  3. Run cd Dirifin to enter the source code directory.
  4. Run git submodule update --init --recursive.
  5. Run .\source\macohi\install.bat to install the necessary dependencies.
  6. To test that everything is working, run lime test <your platform>(e.g., lime test windows or lime test html5)

Modding

This category is in relation to the new modding system added in 2.00 and heavily expanded in updates afterwards

Softcoding

This is in relation to things that don't require source code compiling.

Creating your mod

Okay, you wanna make a Dirifin mod? It's easy.

Instructions

  • Make a folder in the mods folder
  • Make meta.json file
  • Fill out meta.json

Use dummyMod (or this) as a base:

{
	"name": "Dummy Mod",
	"description": "Dummy mod to explain stuff ig",
	
	"authors": [
		"Macohi"
	],

	"mod_version": 2,
	"api_version": 3.0
}

And boom, now you've got your mod and it's in the mods menu.

Adding a Level

  • make .json in data/levels/ with ur data
    • You dont HAVE to do it but if you dont change some of the level data it'll basically be a level 1 reskin
  • add the .json name to the levels.txt file via appending or overriding
  • add level icon in images/levelIcons/
  • add level BG in images/levelsBG/

Check out the sub categories for explanations on the .json stuffs

Enemy Spawning Data

The enemy_spawning field in level JSONS.

  • dupe_direction_chance: Possibility of enemies spawning in the same direction
  • spawn_chance: Generated random chance of enemies spawning
    • max : Maximum random value
    • min : Minimum random value

Enemy Variation Data

Entries of the enemy_variations level JSON field. Can be null in which a default enemy will be spawned.

All the data fields provided are optional.

  • speed_multiplier : Multiplies the enemy’s speed

    • example: 2.4533 would be 2.4533x regular speed
  • graphic : Changes what the enemy looks like (its sprite/image) and will look for the asset in images/enemies/

    • jerry would look for images/enemies/jerry.png
  • variation_chance : Overrides the chance of the variation being selected

    • example: 23.5 would be a 23.5% chance
  • health : Controls how many hits until the enemy is truely defeated

    • example: 4 requires 4 hits until death
  • present : Controls what the base enemy variation data is

    • example: super-saiyan would look for data/enemy_variation_presents/super-saiyan.json and use that as the present if found

Level Settings Data

All the data fields provided are optional

  • difficulty: Controls the difficulty number displayed on the Level Select
    • regular : This is the default difficulty displayed
    • swd : This is the difficulty displayed for the "Shoot With Directional" option enabled
  • camera_zoom: Zoom override
  • bg_scale_modifier: Array of scale value modifiers
    • Value 1 : scale X modifier
    • Value 2 : scale Y modifier
    • Any other values added in the array won't be parsed

Adding a Song

Adding a song / background track to the game via the softcoding system is a VERY easy process.

Instructions

  1. Add your song file to the music folder of your mod
  2. Add your song file name to the songs.txt file in your mods data/songs.txt or _append/data/songs.txt

Adding Credits

If you want to add credits to your mod, there are 2 ways of doing so: Overriding, or Appending.

Overriding

If you want to override the credits text file

then you just have to create a text file named credits

in the data directory of your mod.

Appending

If you want to append credits to the game's credits,

then in the _append/data folder

you'll wanna create a text file named credits.

After

and then after you do either one of those you're done!