DEV Community

Cover image for Broken Rocket Launcher (Cosplore3D Pt:24)
Chig Beef
Chig Beef

Posted on

Broken Rocket Launcher (Cosplore3D Pt:24)


This is a series following Cosplore3D, a raycaster game to learn 3D graphics. This project is part of 12 Months 12 Projects, a challenge I set myself.
Today is our last major feature of this project, which is adding in a second weapon.

Altering The Weapon

First thing I want to change is the actual Weapon struct, so that it's easier to differentiate between the two weapons. Firstly, I implemented a rate of fire, so that we can't spam guns.

if w.rofCounter > 0 {
    return false

w.rofCounter = w.rof
Enter fullscreen mode Exit fullscreen mode

That's great, now I want a name added to the gun, which will be displayed on screen.

Weapon name is now displayed on screen

Wow, doesn't that just look beautiful.

Player Has More

type Player struct {
    x          float64
    y          float64
    z          float64
    angle      float64
    camera     *Camera
    curLevel   string
    speed      float64
    haste      float64
    health     float64
    weapon     *Weapon
    weapons    []*Weapon
    inventory  []InvItem
    bobCounter uint8
Enter fullscreen mode Exit fullscreen mode

Bam, now the player has multiple weapons.


if inpututil.IsKeyJustPressed(ebiten.KeyE) {
    if p.curWeaponIndex == len(p.weapons) {
        p.curWeaponIndex = 0
    p.weapon = p.weapons[p.curWeaponIndex]
Enter fullscreen mode Exit fullscreen mode

So simple, and it works. And it's so great being able to one shot things now, but obviously there's a delay that we added in just before. That was pretty easy to implement, and in future I could technically add as many weapons as I would like, but for now 2 is enough.


There is no next, that's it for Cosplore3D. It's also an early death to 12 Months 12 Projects, sadly, but for good reason. I have a new project, CompNerdSim that I want to work on. 12 Months 12 Projects, for the limited time I've worked on it, has taught me how to stick to one project at a time, for a variable amount of time. Now I'm going to try to use this to create a game I can sell. So you could think of this as an ad, but I'll give you the rundown of the game, because I think it's a cool concept.

CompNerdSim follows a neckbeard (you), who's girlfriend leaves to live in another state. Sad, I know, but you're determined to go visit her, but that dang inflation means that plane tickets cost a lot. Spending 12 hours a day on a computer, you may as well use that time to make some money. In this way, you start coding to make money, in the amazing language Slither. You create some simple programs, become a gamedev even, and eventually make enough money to buy a ticket over to her.

Damn, that sounds boring, but it's not, and here's why. Firstly, the game has a text editor inside of it, called Bim and BScode. Secondly, Slither, which is an interpreted language that will run inside of the game. This means you can write whatever you want. I will also be including graphics for Slither, so you could make your own games in this game. Lastly, such a compelling story, isn't it?

Top comments (0)