Activity

abdurahmansharif.uk

Devlog 7 - Boss rework and Optimisation

i now added summoning vfx (not from the sunny land pixel asset) custom made (made by copilot) sorry if it looks blurry in the image but it looks clearer and more cleaner in the actual project


the boss now has 3 moves,

  • fireball - its main attack, which does damage…..
  • tail swoop - the jump slam has been removed due to lack of animation that logic switched to tail swoop which stuns you
  • summoning which summons elites (with the new summoning vfx i made)
  • significantly overhauled boss

*still loads of bugs for the boss prob gonna change the map so its more flatter and more boss-friendly and prob gonna nerf it soon


optimisation

now lets get back to optimisation

  • the game now auto-saves every 12 seconds and not every kill or every level up. this is primarily to avoid multiple disk writes every time you do something so people with lower ends hopefully can manage it
  • reworked enemy progression to scale by wave instead of player level, added spawn telegraphs
  • added pooled fireballs: pool size 8, max 4 active, 1.75s lifetime, new cooldown curve with a 0.25s floor
  • replaced cherry group scans with tracked active counts.
  • switched the renderer in project.godot from Forward+ to Mobile.
  • added a simple tutorial like really basic not much only like level up, stomp an enemy, fire a fireball at an enemy im gonna make it more advanced soon

notes

also tommorrow ill be going on holiday for a week - i wont be devlogging or working on the gaming in this time 🚢✈️

Attachment
0
abdurahmansharif.uk

Devlog 6 - Optimisation and Fixes

expanding on devlog 3, the characters were invisible for some reason that includes slimes and the player character and interestingly enough cherries and frogs were suprisingly intact, so i had to force load it in during run time, knowing the risks i decided to leave it to future me…..

FUTURE ME here:

today is now all behind-the-scenes, ive did what any normal and sensible people do, spent hundred of prompts negoitating and prompting for ai to fix it, instead of doing that by myself .i now pinpointed and found the issue:

  • the issue came from how some character animation frames were referenced.
  • player and slime resources were relying on brittle texture/import references, so their frames could fail to resolve correctly in certain states.
  • cherries and frogs stayed visible because their scene setup was cleaner and already using stable references.

after pinipointing and diagnosing the issue, i….:

  1. rewired player and slime animation resources to use more reliable scene texture references.
  2. removed bad/mismatched frame links that were causing invisible sprites.
  3. kept a safer fallback path in code so missing frames can recover instead of failing silently.
  4. cleaned script warnings and naming conflicts that made debugging harder than it needed to be.
  5. verified the key gameplay scripts reload cleanly with no errors in the updated files.

i apparently have to attatch an image here so… idk what to put err ill just put a meme here

Attachment
Attachment
0
abdurahmansharif.uk

Devlog 5 - game balancing

today was all about making the game balanced, i made elites every 5 waves and made a boss every 10 waves. the boss has 3 moves, one is its normal attack fireball that once you come close you get hit, 2nd is summoning it will summon elites or other monster coming, and 3rd is 1 wide area jumping mechanics, reworked A LOT OF formulas (if not all) and more…. oh yeah and i forgot i also added a confirmation dialogue when you try to use esc to quit the game after wave 5. the enemies now have more detection radius and enemy patrolling, and when you jump on the head you will now bounce on enemies

formulas

  • Max HP: `max_hp(level) = round(10 + 2*(level-1) + 0.05*(level-1)^2)
  • HP upgrade cost: cost(level) = round(10 + 4*(level-1) + 0.25*(level-1)^2)
  • Fireball cooldown: cooldown(level) = max(0.25, 3.0 / (1.0 + 0.12*(level-1)))
  • Enemies per wave: min(4 + floor((wave - 1) * 1.0), 18, available_spawn_slots)
  • Frog chance: clamp(0.30 + 0.035*(wave - 1), 0.30, 0.65)
  • Enemy speed scale: 1.0 + min(0.06*(wave - 1), 1.10)
  • Enemy damage scale: 1.0 + min(0.08*(wave - 1), 2.00)
  • Enemy gold scale: 1.0 + 0.05*(wave - 1)

elites scale like this

  • Speed: x1.15
  • Damage: x1.35
  • Gold: x1.75
    also elites has different colours they are more desaturated
Attachment
0
abdurahmansharif.uk

Devlog 4 - ui polish + feedback

after reading through the feedback from my last release, I’ve started working towards v0.2-alpha, focusing on improving overall game feel, clarity, and performance.

i will now include more devlogging from now on and the following:

  • optimisation
  • ui polish + feedback [✅)
  • bosses + more gameplay
  • tutorial
  • music + sfx

today i added health bar, damage feedback so itll show like -XX damage so -10 damage (but depends on level) if you get hit, +XX gold if you get gold (from enemies, not cherries), also i updated max cherries to 25 and not infinite for performance. ill also plan on removing unused assets

Thanks again to everyone who tested and gave feedback.

Attachment
0
abdurahmansharif.uk

Devlog 3 - Windows Export problems

it took a while but me and my boi github copilot solved this it took an hour and several prompts to find out the problem. im sorry for any technical difficulties that made gameplay close to impossible to play. it was thanks to 1 of the guys that tested this that this have been brought up to me. ive been testing on the godot editor and not the actual exe version. so… 😅 i couldnt of known. but the godot editor seems fine so idk

What is fixed:

  • solved major rendering failures in exported builds where map textures were missing.
  • repaired stale texture reference issues in world/background scene data.
  • fixed invisible player in export while movement and collisions still worked.
  • fixed slime enemies not rendering in export (frogs were already fine).
  • added robust runtime sprite-frame fallbacks for player and slime so broken cached texture hashes no longer break visuals.
  • verified gameplay now renders correctly in exported build with no blocking visual issues.

the game now behaves much closer to the editor version in exported Windows builds.
exports are more resilient against texture import/cache inconsistencies.
v0.1.0-alpha is now in a much better state for public testing and release packaging.

Attachment
Attachment
0
abdurahmansharif.uk

Shipped this project!

Hours: 24.81
Cookies: 🍪 76
Multiplier: 3.08 cookies/hr

I built TinyQuest, a small 2D action‑platformer where you fight waves of enemies, collect gold, and level up to survive longer each run. The hardest part was designing a core loop that actually felt fun - balancing waves, scaling enemies, and progression took a lot of iteration. I’m really proud of getting a full playable build exported and shipped for the first time. It finally feels like a real game instead of just a tutorial project.

abdurahmansharif.uk

Devlog #2 – First Playable Build Released [Alpha v0.1.0]

I spent this session turning TinyQuest into an actual game instead of a science experiment. I added the full wave system, complete with scaling enemies and a proper survival loop. The leveling system is now fully functional too, gold drops, HP upgrades, cooldown scaling, and all the juicy progression bits that make the game replayable. I packaged everything into a clean build and shipped the first playable release (v0.1.0‑alpha). It finally feels like a real loop: fight → collect → level → survive → repeat.

Attachment
0
abdurahmansharif.uk

Devlog #1 - Godot Engine Initiation

I pushed my first project up at github.com/rylvion/MyFirstGodotProject and dove straight into Godot. Following the fundamentals from this tutorial:
➡️ Godot 4 2D Platformer - https://www.youtube.com/watch?v=S8lMTwSRoRg

Spent time breaking down the engine mechanics and mastering the essentials:

  • Installed and configured Godot from scratch
  • Learned core GDScript concepts and syntax
  • Built and connected signals / connectors
  • Explored 2D physics and movement systems
  • Worked with normalisation and vector control
  • Studied scene structure, nodes, and workflow patterns
Attachment
0
abdurahmansharif.uk

Devlog #1 — 2h 47m (January 7th, 2026)

Portfolio Improvements

  • Added an Animations section to showcase Flipaclip and Roblox VFX work.
  • Structured video cards with titles, specs, and descriptions for each animation.
  • Improved the description for “My First Project” to better explain motion and timing.
  • Ensured alt text for images and accessibility labels for videos.

UI/UX Enhancements

  • Refined grid layout for animations for responsiveness.
  • Added clear labels and headings for screen readers (aria-labelledby).
  • Standardized formatting for animation specs (Frames • FPS • Duration).

Content Polishing

  • Updated descriptions to be more vivid and engaging.
  • Highlighted motion, timing, and sequence details in the animations section.
  • Checked for consistency in style across all portfolio sections.

Technical Adjustments

  • Verified video playback for autoplay, loop, and playsinline.
  • Confirmed mobile-friendly responsiveness of the new section.
  • Ensured links and modals remain functional with new content.

Reflections

  • Learned how to showcase frame-by-frame animations in a portfolio effectively.
  • Practiced balancing technical detail and readability for viewers.
  • Gained confidence in structuring new sections without breaking layout or accessibility.
Attachment
0
abdurahmansharif.uk

Devlog #2 – URL & State Persistence Fix
📅 Date: 07/01/2026
⏱ Time Spent: 33 minutes
🧠 Focus: State loading, URL parameters, and persistence


✅ What I Worked On

  • Diagnosed an issue where URL/state loading always reverted to the first ability/level (Illumination 1.5)
  • Investigated interaction between URL params, localStorage, and initialization logic

🔁 Changes & Fixes

  • Relaxed option validation in URL and localStorage loaders
  • Ensured loaders return explicit booleans to prevent unintended fallbacks
  • Fixed race/overwrite issues by preventing populateLevels from auto-calling updateChart during initialization
  • Introduced a triggerUpdate flag so URL parameters and saved preferences can set the correct level before updates occur
  • Removed temporary debug logging after confirming the fix

🐞 Bug Details

  • Issue: State always reset to default ability/level on load
  • Cause: Initialization order caused updateChart to overwrite URL/localStorage values
  • Status: Fixed

🧪 What I Learned

  • Why initialization order matters in state-driven UIs
  • How returning explicit booleans can prevent silent fallback logic
  • How to debug race conditions in client-side state loading

⏭ Next Steps

  • Add basic tests for URL/state loading
  • Harden validation logic without breaking persistence

🛠 Tooling Notes

  • Used GitHub Copilot prompts extensively to reason through the bug and validate fixes
Attachment
0
abdurahmansharif.uk

Created a Player class in Python with:

  • Health, level, EXP, and stats.
  • EXP system with level up mechanics and automatic stat point allocation.
  • Validation methods for safe input handling.
  • Added stat point allocation method with error handling.
  • Implemented string representation for easy console display of player stats.
  • Tested the class with example player instances and EXP/stat point updates.
  • Added ANSI color formatting for terminal outputs.
Attachment
0
abdurahmansharif.uk

Committed previous work.
Ran into multiple issues while testing the site.
Fixed problems including HTML conflicts and broken image paths.
Problem was denoted by the leading trailing slash, server responded with 404 error
Verified that images now load correctly on both local live server and GitHub Pages deployment.

Attachment
0