Pokemon DustGrey banner

Pokemon DustGrey

73 devlogs
114h 17m 39s

A faithful recreation of the classic Pokémon experience, built from the ground up in Godot. This project focuses on the core pillars of the Gen VI era: vibrant world-building, precise grid-based movement, and a robust turn-based battle engine. By …

A faithful recreation of the classic Pokémon experience, built from the ground up in Godot. This project focuses on the core pillars of the Gen VI era: vibrant world-building, precise grid-based movement, and a robust turn-based battle engine. By leveraging Godot’s Resource system, I am building a modular Pokédex that handles complex stat growth, move-sets, and elemental typing.

Assets -
Player and npc - https://www.deviantart.com/aveontrainer
Tileset = https://www.deviantart.com/flurmimon/gallery/75279275/pokemon-rhin-concept
Other assets - https://www.spriters-resource.com
Old Brok sprite - JoshR691

This project uses AI

I used google antigravity for debugging. Also used Gemini for readme generation and instructions generation.

Demo Repository

Loading README...

abtheinnovator

I worked on upgrading the party menu in the battle ui.

0
abtheinnovator

I finished the party screen so you can view can easily view your party!
You can use m to open the menu arrow keys to navigate and z to select an option and pressc to clase any menu.

Attachment
0
abtheinnovator

I added a pokemon menu screen and a menu. The menu is opened my pressing ‘m’ and closed by pressing ‘c’.The pokemon menu is not done yet but its in progress ill finish it when i get back from chickmaglur.

Attachment
Attachment
2

Comments

dinithayehan
dinithayehan 4 days ago

wow.. beautiful menu screen.. excited to play your game !

e.princenaidu
e.princenaidu 4 days ago

Holy, that looks insane

abtheinnovator

Added 3 routes and a city! -

  1. Route 4
  2. Route7
  3. Route 8
  4. Saffron city

I also updated the map.
Im going on a trip tmrw till monday so no work till then:( see you then!

Attachment
0
abtheinnovator

Updated map and added route 5

Attachment
Attachment
5

Comments

Cool cream
Cool cream 12 days ago

bro cool project

Cool cream
Cool cream 12 days ago

i really want to work on a game this long. I have the capability to do it but i have no ideas

abtheinnovator
abtheinnovator 12 days ago

hmm if you want a idea try something extrateresstrial theme?

Cool cream
Cool cream 12 days ago

Thats a nice idea. Will try it out

abtheinnovator

Added sounds for tall grass and catchng a pokemon succefully.

Attachment
0
abtheinnovator

Shipped this project!

Hours: 96.91
Cookies: 🍪 2247
Multiplier: 23.19 cookies/hr

So I built a pokemon game in the style of the oringal games like leafgreen and firered. So this ship is to showcase the engine. There are 2 towns and 3 routes ready. You can test pokeballs, wild battles, gym battles, warps and NPC’s messages. There might be a few issues cause I was mnaging this with school and football so i couldnt test everything. I have exams from next week so prob no major work for the next 2 weeks. After that ill complete kanto and start work on the other regions.

abtheinnovator

Added Lavender town. Not accessible by player yet tho. I just reached 100 hours!!!. Shipping in a few mins.

Attachment
0
abtheinnovator

I added gym battles!!!! Just 30 minutes more until i do the first ship. God i keep losing to the npcs i made💀

Attachment
Attachment
0
abtheinnovator

The Headline: Brock is Ready!
Today was a massive push. What started as a “brain break” holiday session turned into the final architectural bridge for the game. I’ve officially moved out of the tall grass and into the Pewter City Gym.

🛠️ Technical Achievements
Modular Gym Logic: Refactored the NPC system into a GymNpcInputConfig resource. This “Template” approach means I can now create all 8 Kanto gyms just by swapping data, rather than rewriting code.

Boss Encounter v1: Brock is fully integrated with his classic team: Geodude (Lv. 12) and Onix (Lv. 14).

Custom Pixel Art: Hand-drew the Brock overworld sprite to match the game’s aesthetic. Seeing a custom asset standing at the end of the gym walkway changed the entire feel of the project.

Battle Persistence: Hooked up the “Boulder Badge” reward logic. When Onix falls, the save file updates, marking the first major story beat as “Completed.”

Attachment
0
abtheinnovator

During this time I worked on mount moon. Yeahh ill continue work on the gym leaders tmrw. Logging off for today!

Attachment
0
abtheinnovator

So i completed the ability to catch Pokémon!!!!

So now which ever pokemon you catch it gets added to your party.

Attachment
0
abtheinnovator

Progress on catching pokemon

I added the pokeball menu and added the catching function!!!

Attachment
1

Comments

oranger
oranger 23 days ago

cool

abtheinnovator
  • Added enemy ai, updated player reource and added pokeball menu (45b31b6)

I also added a flicker effect to show damage.

Attachment
0
abtheinnovator

Finished the part screen. Yayyy Next up is the enemy ai and catching pokemon.

Attachment
0
abtheinnovator

I implemented the coordinates saving and quit game function which allows the player to save their game cords and quit the game whenever they like. The button for quiting the game is the x key. I also made WASD useable for movement

1

Comments

Whatsup
Whatsup 24 days ago

niceeee

abtheinnovator

In these two hours i started by adding progress bars to the battle ui.
Then I worked on expanding the map by completing route 22 and the gate for route 22.
Im going to do the first ship in a few days so stay tuned

Attachment
Attachment
0
abtheinnovator

🛠️ Devlog: The “Attack & Logic” Update
The Move Engine
Massive Data Entry: Completed the MoveID Enum, cataloging 165 classic Pokémon moves (from Pound to Struggle).

Safe Move Mapping: Implemented a robust UI loop that dynamically fetches the first 4 moves from a PokemonResource and assigns them to battle buttons.

Crash Prevention: Added logic to handle Pokémon with fewer than 4 moves, ensuring the game doesn’t throw an “Index Out of Range” error by disabling or hiding empty move slots.

Battle Architecture Refactor
Global Persistence: Refactored BattleMain.cs to use class-level fields (_playerPokemon, _oppPokemon). This allows every state in the Battle State Machine to access Pokémon stats without reloading data.

Signal Synchronization: Updated move button signals to capture move names at the moment of the click, ensuring the Battle Log accurately reports the action taken.

Combat Mechanics
Damage Integration: Successfully hooked up the “Tackle” and “Growl” logic. The game now recognizes a move selection and calculates the impact on the opponent’s HP.

State Progression: Verified the transition from PlayerTurnState to EnemyTurnState, setting the stage for the AI implementation.

Attachment
Attachment
0
abtheinnovator

Overworld Systems
Interactive Story NPCs: Implemented StoryNpc.cs using a [Tool] script, allowing for real-time appearance swaps in the editor (Delia, Professor Oak, etc.).

Dynamic Z-Indexing: Added logic to ensure NPCs properly layer behind or in front of the player based on Y-position.

Talking & Roaming: Successfully bridged the MessageManager and CharacterMovement systems. NPCs now pause their movement to talk to the player and resume roaming afterward.

Battle System Architecture
Visual Design: Completed the Battle UI layout, featuring custom HP bars, player-back sprites (Bulbasaur), and enemy-front sprites (Pidgey).

Logic Framework: Generated the core State Machine for battles, including:

BattleStartState (Initialization)

PlayerTurnState (Action Menu)

EnemyTurnState (AI Logic)

CheckFaintState & BattleEndState (Win/Loss conditions)

Menu Navigation: Implemented a sub-menu system to toggle between the Main Menu (Battle, Bag, etc.) and the Move Menu (Tackle, Growl).

Next Session Goals
Damage Calculation: Hook up the “Tackle” and “Growl” buttons to actually reduce the enemy’s HP.

Exp & Rewards: Handle what happens when Pidgey faints (Experience gain and returning to the overworld).

Battle Transitions: Add a “Flash” or “Screen Swirl” animation when the encounter starts.

Attachment
0
abtheinnovator

I worked on the story line npc’s which will interact with the player like proffeser oak.
Sorry for less progress. It took a lot of time to get back working after the reset:(

Attachment
0
abtheinnovator

I made the battle ui scale to the window size, start on the Pokebase and added data fetching.

Attachment
0
abtheinnovator

Status: Recovering from an infection, but the code must go on! 🤒

✅ Accomplishments Today:
Dynamic Battle Initialization: Successfully linked the World Map encounters to the Battle Scene. The BattleManager now dynamically loads Pokémon sprites (Front/Back) and names based on the specific encounter.

Save File Integration: Integrated the PlayerSaveResource to ensure the battle correctly identifies the player’s ChosenStarter and reflects it in the UI.

Encounter Logic: Refined the TallGrass script to calculate encounter chances and pick random Pokémon from a level-specific wildPokemonList.

UI & Bug Squashing:

Fixed “Node Not Found” errors by correcting the UI pathing through Ui/Controls/.

Resolved an InvalidCastException by correctly identifying the “Run” button as a TextureButton rather than a standard Button.

Implemented the Run Button logic to gracefully exit the battle scene.

🛠️ Technical Hurdles Cleared:
Enum Conversion: Solved the challenge of converting string data from the level list and StarterChoice enums into the master PokemonID enum.

Scene Tree Navigation: Mastered the relationship between the BattleBase root and its nested UI components to avoid null references.

⏭️ What’s Next:
Implementing the Move/Attack menu.

Syncing HP bars with actual Pokémon stats.

Adding transition animations for a smoother “Encounter Start” feel.

0
abtheinnovator

I worked on the battle ui!! Next ill work on the scripts.

Attachment
1

Comments

Mihai
Mihai about 1 month ago

cool

abtheinnovator

💾 The “Brains” of the Game: Save & Load System
Infrastructure: Refined the PlayerSaveResource to track StoryProgress, GlobalPosition, MapName, and a detailed PartyDetails dictionary.

Persistent Storage: Successfully migrated the save path from res:// to user://. This ensures the game remains writable and stable once exported to other computers.

State Restoration: Implemented a SaveManager singleton that bridges the gap between stored data and the active game world.

Title Screen Logic: Created a smart StartScreen that checks for existing save files. The “Continue” button now correctly triggers the loading sequence and unloads the UI to prevent it from overlaying the gameplay.

🗺 World Building & Navigation
⚔ Battle System Preparation
Data Structures: Finalized the PokemonResource. It is now a professional-grade [GlobalClass] that tracks:

Base Stats: HP, Attack, Defense, Sp. Atk, Sp. Def, and Speed.

Growth: Experience curves and level-up move dictionaries.

Visuals: Shiny variants, front/back sprites, and menu icons.

Encounter Logic: Identified the transition point in the “Tall Grass” where the world state is saved before jumping into the battle scene.
Next ill be actually building the battle arena.

Attachment
0
abtheinnovator

Fixed player warps, updated start screen updated player resource to handle gym badges and previous positions. This took so long for some reason. And does anyone have advice on when to ship it? stay tuned for the battling mechanic.

Attachment
Attachment
1

Comments

Mihai
Mihai about 1 month ago

I guess shipping is when you want dude. Like when you think your game is ready and you don’t think that it could be more entertaining.

abtheinnovator

Today marks a major turning point in the project: I have officially crossed 100 total hours of development time! What started as a Mac Mini challenge has evolved into a robust C# and Godot learning journey. Reaching this triple-digit milestone feels incredible, especially with the coursework now finished and a holiday ahead to celebrate.

🏙️ Mapping Cerulean City
I have successfully completed the layout for Cerulean City, the fourth major city in the game world.

Spatial Design: The city features the iconic northern bridge leading toward the “Nugget Bridge” area.

Hub Infrastructure: I’ve placed the Pokémon Center, PokéMart, and the Cerulean Gym to create a central player hub.

Environment Detail: Used water tiles and fencing to create natural boundaries that mirror the classic Kanto feel.

⚔️ Mechanics: Smart Random Encounters
The “engine” under the hood got a major upgrade today. I transitioned the random encounter logic from a simple “something happened” trigger to a fully functional Selection System:

C# Logic: Implemented an encounter calculator that rolls against a level-specific encounterRate.

Dynamic Selection: The system now pulls from a wildPokemonList array, allowing me to specify which Pokémon appear in different areas (e.g., Pidgey in Route 1 vs. Staryu in Cerulean).

Feedback Loop: Integrated the MessageManager to provide player feedback when a wild encounter is triggered.

Stay tuned for the next update!

Attachment
Attachment
Attachment
0
abtheinnovator

Just finished pewter city!!!! I am currently down with a viral so expect slightly less devlogs. Some things are bugged ill fix them later when i feel better

4

Comments

Mihai
Mihai about 1 month ago

Brother, how do you handle the art? Do you draw so good?

abtheinnovator
abtheinnovator about 1 month ago
abtheinnovator
abtheinnovator about 1 month ago

but all the maps were made by me

Mihai
Mihai about 1 month ago

Yeah really cool

abtheinnovator

Worked on pewter city!
Everything created except the scenes inside the buildings.

Attachment
0
abtheinnovator

🗺️ World Building: The West Kanto Corridor
The biggest milestone this week was the completion of the “Starter Loop.” With Route 2 officially finished, the map now has a continuous, playable flow from the player’s front door to the gates of the first major challenge.

Pallet Town & Route 1: Balanced wild encounter rates and finalized the “rival” trigger zones.

Viridian City: Fully mapped with all interiors. Doorway Warps are now 100% functional—no more “phantom doors” or stuck transitions.

Route 2: Completed the layout, including the dual-path system. This marks the end of the “Tutorial” phase of the region.

0
abtheinnovator

I completed viridian city.
The city has the levels for -
1: The npc house
2: The pokemart
3: The pokemon center
4: The pokemon Academy
5:The gym

I also fixed some collision boundries

0
abtheinnovator

🛠️ Technical Accomplishments
The Save System Milestone: Successfully implemented a Resource-based saving architecture. The game now saves player progress, starter choice, and caught Pokémon to the user:// directory.

Dynamic Pokéball Interaction: Created a data-driven system for starter selection. By simply changing the PokemonName export in the inspector, the dialogue and save logic update automatically.

Async Dialogue Engine: Upgraded the MessageManager to use Task. This allows the game to “wait” for user confirmation (Yes/No) before executing critical code like saving a starter.

World State Persistence: Added a “State-Aware” script to the laboratory. If the save file shows HAS_STARTER, the Pokéballs on the table automatically hide themselves when the scene loads.

Bug Squashing: Resolved a “Double-Trigger” loop where closing a message box would immediately re-interact with the object. Added a 150ms input cooldown to ensure crisp state transitions.

Attachment
0
abtheinnovator

I made a simple start screen and added pokeballs in the Pokemon lab. Mb for bulbasaurs typing idk how i messed that up. Next up ill implement actually storing user save data. Finalllyyy

0
abtheinnovator

t’s been a massive day. Between school and football, I managed to lock in for a 3-hour session tonight to finally bring the physical world of Kanto to life in Godot. The “Well Cooked” strategy is officially in full effect.

📍 Pallet Town & Route 1: 1:1 Scale
I’m using pixel-perfect map rips from the original FireRed/LeafGreen as my blueprints. Instead of guessing, I’m tracing the tile patterns to ensure every fence, ledge, and tree is exactly where it should be.

Pallet Town: Exterior is 100% mapped.

Interiors: Red’s House, Blue’s House, and Oak’s Lab are all finished and linked via my Warp/Portal system.

Route 1: Just finished the layout! The ledge jumping points and tall grass zones are all set up and ready for collision logic.

💾 What’s Next?
The world is built, and the 151 Pokémon data is already imported. Tomorrow, I’m tackling the Start Screen and the Save/Load System. I want to make sure players can actually save their progress in the Lab before heading out into the tall grass on Route 1.

Current Status: * [x] 151 Pokémon Data Importer

[x] Pallet Town (Exterior/Interiors)

[x] Route 1 (Layout)

[ ] Save/Load System (Weekend Goal)

0
abtheinnovator

I finished the pokemon importer!!! With this all the base features for the game are done. Yayyy. Currently i have 151 pokemon imported.
Next up is adding battles and making the map for kanto. Stay Tuned

Attachment
0
abtheinnovator

I finished the move importer so that all the moves I need to start with automatically with PokeApi v2. YAYYY!!! Now I start on the pokemon importer and then I’ll finally work on battles. Then the base features will be ready and I can start on the map. New update - The map will contain all of the regions from kanto to the galar region. This will allow players to access all the regions in 1 game!
For the screenshot im just attaching a image of all the imported moves. Currently I have made the code import 164 moves. Stay tuned for the first beta release!!

Attachment
0
abtheinnovator

Finished NPCs and started work on moves and pokemon!! As the screenshot im just gonna attach the imge of the sprites im gonna be using.

Attachment
1

Comments

Caleb
Caleb about 1 month ago

cant wait to play this!

abtheinnovator

I completed the functionality for the patrol type npc’s. YAYYY!!!

Attachment
0
abtheinnovator

I implemented look around and wander functionality for npc’s. Yayy now can move onto patrolling NPCs!!

Attachment
0
abtheinnovator

I worked on non playable charecters. The one in the picture will be for Ash’s mom. Its that skin because I dont have the sprite for the npc yet.

Attachment
0
abtheinnovator

I added tall grass with random encounters. Right now it just shows a message when an encounter occurs. The next task is to add npc;s. Im so excciteedd.

Attachment
0
dhyan

Tagged your project as well cooked!

🔥 dhyan marked your project as well cooked! As a prize for your nicely cooked project, look out for a bonus prize in the mail :)

abtheinnovator

Completed message ui and added the funcionality for dynamic signs. I added 8 variations of the signs.
YAYYY its finnaly done.

Attachment
0
abtheinnovator

Worked on message ui which would allow route names and npc dialogues to be seen.
Note*: I also added the ui but didnt have a screenshot of it.

Attachment
0
abtheinnovator

Fixed spawning and added ledge jumping. YAYYYY!!!!

Attachment
1

Comments

Whatsup
Whatsup about 2 months ago

Niceee

abtheinnovator

I added functionality to allow players to actually enter the levels and scenes!!!!
Also worked on a new camera script!!

Attachment
0
abtheinnovator

I started working on levelllssss. I added 5 levels including 3 houses,caves and pokemon centres!
Also started work on a scene manager.

Attachment
1

Comments

Whatsup
Whatsup about 2 months ago

this is so cool im excited to try it when its finished ultrafastparrot

abtheinnovator

Worked on collision boundaries and fixing raycast glitch. STILL ISNT FIXEDDD.

Attachment
0
abtheinnovator

Finished functionality to allow players to move YAYYY!!

Attachment
0
abtheinnovator

I worked on adding more objects and layers to the town map making it look much better :)
I also started work on the player movement capabilities!!!!!

Attachment
0
abtheinnovator

Started work on the first town with layered terain.

Attachment
0
abtheinnovator

Added grass, trees and water with auto tiling.

Attachment
1

Comments

Rei
Rei about 2 months ago

aaaaaaaaaa looks niceeee :DD

abtheinnovator

During this time period I worked on creating the sprite, the movement system and the animations.

Attachment
0