DEV Community

Cover image for 8 Years Later, The Tank Fires Again
Devesh Agarwal
Devesh Agarwal

Posted on • Originally published at ctrl-alt-delete.hashnode.dev

8 Years Later, The Tank Fires Again

Before I start with the self roasting and full of headache story of this remake, if you haven’t already — I’d recommend you to checkout my previous post which is a nice warm story ( at least it preserves my dignity🙂 ). It’ll give you all the nostalgic context you need.

A Look Back at an 8-Year-Old 2D Tank Game

Alright, all caught up?

Let’s begin the madness of building BunkBlaster — the remake.

Getting Started

How do I even start?

That’s the biggest problem I keep facing — and weirdly, it’s only grown with time. When I was a kid, I jumped into things without a second thought. Now? I just sit, overthink, and end up doing… absolutely nothing.

This project was no different. I’ve thought about remaking it for years. SFML? Maybe SDL? Heck, even full-blown engines. But in the end — nada.

Then one random day, I just started.

No grand plan. No fancy architecture. Just opened VS Code and said, “Screw it, let’s make something.”

And that’s how it began… my chaotic dive into rebuilding a childhood classic — now rebranded as BunkBlaster.

But of course, I wasn’t going to make it easy for myself.

The Birth of BunkBlaster

I don’t know why, but I need my projects to be hard and challenging. That’s what fuels me. Easy things? Boring as hell.

One of my main motivations while building is learning. Even if it’s a remake, I want it to push me. So I went with the beast: C++. Yep, you read that right.

But don’t worry — I also picked up Raylib to make my life a little easier. (I’m not a psycho.)

Also got box2d to make the game a physics beast ( It was a mistake ☠️ ).

Raylib? Box2D? What’s going on?

You’re probably thinking — "Raylib? Box2D? What the heck is this?"

Well, let me break it down.

Heck, I am gonna sound like a nerd in this section — bear with me, alright?

So... Raylib.

It’s a C library that handles most of the heavy lifting — graphics, windowing, input, audio… you name it.

An absolute beast.

Perfect when you want control without writing 1000 lines of boilerplate.

#include "raylib.h"

int main(void)
{
    const int screenWidth = 800;
    const int screenHeight = 450;
    InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window");
    SetTargetFPS(60);               // Set our game to run at 60 frames-per-second
    while (!WindowShouldClose())    // Detect window close button or ESC key
    {
        BeginDrawing();
        ClearBackground(RAYWHITE);
        DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
        EndDrawing();
    }
    CloseWindow();        // Close window and OpenGL context
    return 0;
}
Enter fullscreen mode Exit fullscreen mode

Don’t stress if you didn’t catch all of that.

You’re not supposed to. I just wanted to show you how easy Raylib can make your (my 🙂) life.

And now... Box2D.

This one? Pure physics engine madness. And not just some janky “collision go brr” logic — real, proper physics simulation.

Gravity?

Friction?

Bounce?

Momentum?

Yup. It handles everything. You just describe the world, and let Box2D handle the rest.

But I’ll be honest…

The API is powerful, but a lot advanced and troublesome if you don’t know what you are doing.

So yeah — it was a mistake ☠️.

Still, I stuck with it. Because again… I like pain.

Brains off, brushes on — let’s talk about the mess I call game art.

Making The Art For the Game ( I am not an artist )

One of the biggest reasons I never made huge games?

Art. Yes… cause I can’t draw.

In my older projects, I stuck with rectangles. Lines. Circles to get anything that I needed.

But this time… I wanted more. This wasn’t just a remake. It was an upgrade. A level-up.

I can’t even manage to underline my name with a straight line.

Image description

The best drawing that I ever made in my laptop…

Image description

Okay… enough self roast 🙂…

Let’s get on with it

so I grabbed my brush (a budget mouse and zero drawing skills)...

Fired up my drawing studio (Pixelorama)...

And dove in...

What came out was… well see for yourself

Here’s a sneak peek of some of the first sprites I whipped up 👇

Image description

See my bullet designs 🫣 (Don’t laugh... 🙂).

You’re probably wondering why the tank’s body and turret are separate — well, that’s because I’m going for a rotating turret. Yup. A fully functional, directional cannon (yes, really).

I’ll definitely design more sprites down the road — explosions, pickups, etc.

But for now, these little assets were enough to get things rolling...

Oh, and guess what?

I even animated the tank 😤

Image description

Image description

See… one’s the shooting animation and the other’s the movement. Once they’re synced and not looping, you’ll really feel the effect.

Conclusion

And that’s a wrap for this devlog!

Everything aside — I genuinely enjoyed making these sprites (even if my art skills are, let’s say… a work in progress 😶‍🌫️).

But this was just the calm before the storm.

Next up: The chaotic madness Box2D unleashed.

Brace yourself — things are about to get wild, frustrating, and strangely addictive.

If you enjoyed this peek behind the scenes, consider subscribing and dropping a comment.

Trust me, the rollercoaster is only getting started, and you won’t want to miss it.

Top comments (0)