After a while, i might as well make another news post about Project Nortubel just to see what's happened:
Remade Companion
First things first, i had to remake Companion with a new variation called Comp4. This is because of 3 major reasons:
- CCopy used a complicated code that i couldn't easily modify in my favor.
- CCopy specifically used methods that i assumed could be troublesome for future players and hardware.
- The fact that CCopy moves left and right when close to the Player might be odd to some and i couldn't even take advantage of sees_player() from Gonkee's project, but at least Comp4 stops when close enough during FOLLOWME.
It took a while but i eventually managed to fix issues they had.
Companion on ice
The Companion finally has ice physics. Besides the fact that ICERUN/FOLLOW have some build up when direction changes, the fact that ICEIDLE can be slippery (And even so the "idle" part of when they're close enough to the Player during ICEFOLLOW) is also good.
Companion crawl states
First i added a "CrawlCheck", then the "enter/exit Crawlzone" areas, then some code based on touching those areas, then some code related to resizing/positioning the collision shapes and then code related to the commands and movement.
So it's there. The main idea here is having a reason to seperate the characters in some scenarios and trying to make the little bro/sis character a bit more useful in some scenarios.
Slow floors
These floors are kinda like opposites to the ice floors and mainly exist because when i was working on the Pushable object, i tried a method of "it automatically slows down the Player when they touch it" which made me realize i could make this a thing.
Visually, think of it like some really thick and slimey mud (And this feature might as well be rare depending on how annoying it'd be for players).
The first power up (A lifeguard floater)
To make this work, i simply had to learn about set_monitoring because unlike with the Melee attack, i couldn't call the collision of the Area2D with dot disabled = false. But at least it's there.
What it needs is some sort of visual feedback for both during activation and when it's picked up/gone.
Originally it was going to be a green jacket but a lifeguard ring/floater makes more sense with the setting (Plus, depending on potential character sprites, i don't want to make the characters wearing a green jacket when i already thought of 3 Player characters).
So far, it only works on the Player by turning their hurtbox temporarily.
Checkpoint system
A checkpoint is something i always had in mind and when i first implemented i faced a lot of issues in regards to scene instancing and node names.
So i used a tutorial video by matinator9185/MateuSai to make a checkpoint method that "drags" the Player to a specific spot as the respawn spot.
However, this had another issue which was the game crashing if you haven't set a checkpoint prior due to needing a place for the player to respawn to.
So i created a "playerspawn" scene to fix that (And did the same for the Companion).
Even had to tweak the visuals to make sure each character is made invisible, so they seem like they actually disappear and reappear.
Export var behind Door
Now the Door scene that ends levels has an export var, so i can change the next level in the inspector instead of creating specific scripts
Sprites
Still not finished but i implemented various character sprites and even got an export var to select specific characters by levels.
The sprites themselves look weird but at least some mechanical stuff is there.
I also found a way to fix the Player's pushing animation.
Though the placeholder sprite scenes still exist (Are set behind the characters' AnimatedSprite scenes), partially because of comparison stuff and other test related things.
I also had to redo how the Player's melee works because somehow i broke it (Ended up creating a seperate PlayerMelee scene that the Player spawns in the spot of their original hitbox).
Current issues
- The Player's new "Hurt" animation using AnimatedSprite and/or HURT state are messy; One issue i noticed is how the Enemy can still hurt the Player because it takes a while for the "playerhurt" animation to actually play. I want "playerhurt" to start RIGHT when the Player's hurtbox collides with the EnemyHitbox.
I felt like redoing how the Player receieves damage, even if i broke it.
- The current Pause Menu scene isn't AutoLoad/"universal" because it's set as a node under a CanvasLayer node in each level, so i need to make this as an actual recurring game scene.
- The Pause Menu shows up ABOVE the SceneManager's animation but it doesn't pause the animation: Therefore the scene changing animation still plays and changes the scene (And i only didn't make the Pause Menu AutoLoad because i don't know how to make it unavailable in certain scenes like the Main Menu).
- The Companion's AI could improve as it only jumps when it's "under" the player's position (And there's more to consider depending on what will eventually be added to the game).
- Current health bars are attached to the main characters and not part of an ingame HUD attached to the screen.
- Companion shakes during climbing when close enough to the Player, as seen in the AnimatedSprite still retaining the "Climbidle" frame when supposedly moving.
- There may be a subtle bug on Comp4 during "Pushing" animation where it returns to "Running" while on PUSHRUN state i guess.
- Comp4 doesn't have the "updated but still broken" take on getting hurt that the Player has (Part of this is because i want to learn how you make an scene change to a previous state, because i don't know how a script can keep a "previous state" in mind, so the Player's HURT state just changes to MAINSTATE which can be weird if the Player was on CLIMB state).
Other stuff
- Just learned that Gonkee's video on the Jared AI project is gone. Because not only do i borrow code from that project, it's a specific version where unlike the Jared thing, i don't have that "sees player" code used on may game.
- With the checkpoint, i'd like to work on a life system: Ideally, both characters share "lives" despite the health being seperate meaning that if one dies, both characters respawn.
- Another idea i consider is an oxygen system. Maybe make it that the number is 100 by default/outside water but when is_on_water(), it slowly goes down and whether or not it's insta death or health drain depends.
- I need to do something about collision shapes for stuff since i added new sprites for the characters.
I got too ambitious with this game but if i tweak/add enough stuff, i like to think i'm close enough to make a playable demo.
Project as usual is here https://github.com/EyeBallTank/PROJECT-NORTUBEL-main-ish