8 months ago

Time to dig up some bones from the past!

This is my first devlog ever, and I’m diving into the remake of the game I made for my college capstone. Come check it out and see how I’m upgrading it with everything I’ve learned since then!


🎓 Devlog #1: Remaking My Final College Project

You, me, literally everyone, we've all been beginners at something. And if you've ever stuck with learning a new skill long enough to actually get decent at it, you've probably looked back at your early attempts and thought, “What the hell was I doing?” “Wow. I’ve come a long way.”

That’s exactly my story with game programming. My college graduation project was the one that really got me interested in game development. And since it was the very first project I ever coded, you can probably guess the codebase wasn’t exactly a work of art.

Honestly, I wouldn’t even print those scripts to use as napkins.

And that brings us here:

After years of overthinking the deep philosophical question ("Should I remake my final college project?"), well... if you're reading this devlog, I guess the answer's pretty clear.

Welcome to the journey of me remaking the game that taught me the absolute basics of programming.

Fair warning: there will be a lot of coffee and hell puns along the way. Probably too many. And definitely not the good kind.

This first devlog is going to be a long one, so I’m breaking it into parts. Starting with...


🎮 A Quick Intro to the Original Project

In the last year of my Game Development degree, we had to plan and develop a game of our choice from start to finish: concept, prototyping, playtesting, polish, the whole deal.

I teamed up with three friends, and we decided to create a game inspired by Grim Fandango, full of quirky characters, item collection, investigations, and a few dexterity-based moments.

Sounded perfect in theory, right?

Yeah… a lot happened during that year. I’ll probably make a full post just about that later.

But long story short: I was the only programmer in the group, and I started the project barely knowing what an if statement was.

So, yeah, things went south at some point.

The game had so much promise in the beginning, but by the end, it became a hot mess of spaghetti code (I’m pretty sure there’s a GetComponent running in an Update loop somewhere. And yes — the game had bugs popping up minutes before our final presentation).

The result (which you can check here) was… let’s say buggy enough that if you play your cards wrong, you might end up in a delightful little soft lock.

That game became a ghost in my life.

A cursed whisper in the dead of night: "Remember that game you made in college? Could’ve been way better..."

So I said ENOUGH. No more bugs! No more soft locks! It’s time to exorcise this demon and remake my final project!


💀☕ The Game’s Story

The original game was called A Caveira Bêbada (The Drunk Skull), and it followed the story of Cappo, a skeleton hopelessly addicted to milk and coffee.

He works at a little bistro in the Underworld, but one day the place mysteriously explodes, and since Cappo’s the only one there at the time, he gets fired on the spot without a chance to explain himself.

Now, it’s up to the player to help Cappo clear his name by exploring the environment, talking to NPCs, gathering clues, and figuring out what (or who) caused the explosion.

The gameplay is pretty simple:

  • You move around,

  • Collect items,

  • Interact with objects and characters,

  • And keep Cappo’s milk meter (yes, really) full at all times.

If the milk meter drops too low, Cappo starts to get dizzy and acts drunk.

You can refill it by using drink machines scattered around the map, using coins you find through exploration or by doing quests for NPCs.

There are also moments where Cappo needs to run from pursuers or crouch to avoid detection, but I’ll save that for a future devlog.


🛠 What I’ve Done So Far

I actually started this remake a while ago, but only recently decided to post about it online. So here are some decisions I’ve made so far:

✦ Since I’m not exactly a 3D modeling and animation queen art isn’t the main focus of this remake, I’m saving it for last. Right now, characters are either stuck in T-pose or just capsules with little eyeballs. It helps with animation logic later (I hope).

✦ Because I’m not great at organic 3D models (characters, animals, etc), I decided to apply a pixelation shader over the render. Hopefully, that’ll cover up any janky models I throw in later. Fingers crossed.

image_sequence_004_0000.png

🧾 UI/UX

I designed the UI from scratch using Affinity Designer 2.

The vibe I’m going for is a cozy chalkboard menu, like the kind you’d see in indie coffee shops with doodles and drink specials.

So far, I’ve got:

✦ A milk meter that goes down over time and refills when you buy drinks.

✦ A dialogue box, with the speaking character’s name displayed.

✦ A cute little emotion icon next to the dialogue to show how characters are feeling (since I’m not animating facial expressions).

✦ No pause or main menu yet. I do have ideas for a fun main menu, very different from the original, but that’s for later.

✦ One issue: the pixelation shader makes the UI look wildly out of place, so I may need to redesign the entire interface eventually.

dive_into_ui.png

💬 Dialogue System

In the original game, I used Fungus, a free open-source Unity tool for visual novels and dialogue. Unfortunately, it’s no longer available on the Asset Store — and I made the rookie mistake of updating Unity without checking that first. Cue millions of tiny errors.

So I ended up removing Fungus entirely. And since I’m rebuilding the game from scratch anyway...

I made my own dialogue system!

✦ It’s based on ScriptableObjects that store the characters’ lines. A manager script reads them in order and sends them to the dialogue box.

✦ I even added branching choices: characters can ask questions, and your answer changes how the convo plays out.

✦ Oh, and I want the final game to support both English and Brazilian Portuguese. I know Unity has its own localization system, but I’d rather learn that in a smaller side project later on. So I also made my own localization system: each dialogue ScriptableObject stores both English and Portuguese text.

dialogue.gif

🕹️ Character Movement

This is my first personal project using Cinemachine and Unity's Input System.

It’s third-person, and I really wanted to make sure the camera behaves well in tight spaces. After lots of trial, error, and tutorials, I finally got a camera that zooms in when it hits a wall.

It still clips through sometimes, but honestly? Rare enough that I’m not stressing about it so soon.

camera_limits.gif

🎒 Interactions & Inventory

✦ Once again, I coded everything from scratch. The original idea was to have item combinations to create new objects, but... that never even made it into the first game. So yeah, cutting that in the remake.

✦ Now, you just press E to interact with stuff, pick up items, or talk to characters. Some interactions happen automatically when you enter trigger zones.

✦ I haven’t decided yet how to highlight interactable items. In the original, it was just a glowing blue particle effect. This time, I’d love to use actual 3D models, but I’m still unsure whether I should go with a floating icon, a highlight outline, or something else. Suggestions welcome.

buying_coffee.gif
collecting_items.gif

🔄 Other Stuff Already Working

✦ Scene loading system with a retro cartoon-style transition.

✦ Cappo’s milk meter affects gameplay: if it drops too low, the camera shakes and wobbles like he’s drunk. I want to eventually make his movement slippery and hard to control when he’s too “thirsty”.

changingscene.gif

💌 Stay Tuned!

I’ll be back soon with more updates on this ridiculous, caffeine-fueled adventure. Follow me for more dev chaos and undead adventures!

And hey, if you’d like to support my work (and buy a coffee for Cappo or a diet coke for me), you can do it here!

What do you think so far? Ever had to redo an old project? Let me know how it went!

Thanks for reading! 💖



2 comments

Loading...

Next up

What's your favorite game that does a lot with a simple idea? #GJAsks Say No! More! The game is literally just pressing one button to yell "NO!" at your coworkers, and somehow that's one of the most cathartic and hilarious experiences I've ever had!

Which game dev inspires you most? #Devruary

Scott Cawthon. The man took a simple mechanic and iconic characters and created a CULTURAL PHENOMENON.

Don't agree with everything he stands for, but his creativity as a dev is undeniable.

How do you deal with burnout? #Devruary

Honestly? I just... step away. Stop coding.

The irony is that as a game dev, I rarely have time to actually PLAY games anymore. So when burnout hits, I try to play games that are nothing like what I'm developing.

BIG NEWS: Your Bandit can wear a Game Jolt hat and shirt in Bandit Trap!

Defend your home or steal treasure in the open beta: https://bit.ly/BanditTrapBeta

It ends on March 23rd at 6 am CET!

Never before in my life did I think I would see this message. Damn, I didn't even know it existed. And this is a 2TB SSD we're talking about. I'm so screwed. #Unity #GameDev #IndieDev

Play @pm-studios ' Bandit Trap Open Beta!

Grab your rocket chairs, vacuums, and toilet tornadoes! Report one more time for our final beta! Live through March 23rd 6 am CET.

Complete quests based on the game!

Play the beta: https://bit.ly/BanditTrapBeta

What feature almost broke your game? #Devruary Hack'n'slash combat system. College project. Peak overconfidence meets peak inexperience.

The feature died so the game could live (barely). Lesson learned: scope management is a SKILL.

What does success look like for your current project? #Devruary Success is the friends we made along the way.

This week's Fan Art Friday celebrates Bandit Trap! Accept the quest in your quest log to get started.

Defend your home or steal treasure in the open beta: https://bit.ly/BanditTrapBeta

What’s the biggest dev mistake you’ve made? #Devruary Not leaving doomed projects sooner, skipping version control early on, and... GetComponent() in Update(). I wasn't born a coding genius, okay?? And I guess we've all been there, right?? ...RIGHT??