## Lead Haul - Old-school space pirate FPS

Show off your games, demos and other (playable) creations.
groverburger
Prole
Posts: 44
Joined: Tue Oct 30, 2018 9:27 pm

### Re: Lead Haul - Old-school space pirate FPS

This is super cool! The game is fun, looks and sounds great too! Really, really nice work. I hope you don't mind me using this game in g3d's games showcase section...

Also it still amazes me when people actually make stuff with code I wrote lol. Thanks for giving g3d a shout out!
Hydrogen Maniac
Citizen
Posts: 51
Joined: Sat Dec 19, 2015 9:59 pm

### Re: Lead Haul - Old-school space pirate FPS

Davidobot wrote: Sun Sep 26, 2021 4:30 pm Glad to see the age-old tradition of raycasters (even though this is full 3D) living on

Super smooth action and the shotgun feels like a charm to use! Really like the whole aesthetic as well - great job!

Thanks for the link to Crocotile 3D - that's a cool piece of software, makes 3D modeling bareable haha
Thanks for the kind words. The game actually started as a raycaster so the tradition really does live on
groverburger wrote: Mon Sep 27, 2021 10:51 pm This is super cool! The game is fun, looks and sounds great too! Really, really nice work. I hope you don't mind me using this game in g3d's games showcase section...

Also it still amazes me when people actually make stuff with code I wrote lol. Thanks for giving g3d a shout out!
I'm glad you liked it and I think it's super cool that it's added to your showcase . Thanks for making g3d, I never would have made this without it.
I'm way too sober for this...
kicknbritt
Citizen
Posts: 80
Joined: Sat May 30, 2015 2:15 am
Location: Chicago, IL/Anchorage,AK

### Re: Lead Haul - Old-school space pirate FPS

So wholesome jeez.
Really nice job on the game.
Also G3D is very good and much needed in this community.
"I AM THE ARBITER!!!" *Pulls out Energy sword and kills everything*
BrotSagtMist
Citizen
Posts: 84
Joined: Fri Aug 06, 2021 10:30 pm

### Re: Lead Haul - Old-school space pirate FPS

Neat on the first look, Yay for having bullets you can see and dodge
Lets see how fast i can finish it.

I am kinda in need of a keyconfig tho, not having wasd on my keyboard, gotta find a working controller...
If ppl would at least ad arrow keys to the controls....
obey
Jasoco
Inner party member
Posts: 3676
Joined: Mon Jun 22, 2009 9:35 am
Location: Pennsylvania, USA
Contact:

### Re: Lead Haul - Old-school space pirate FPS

Once again I am impressed and I am seriously thinking about switching over to g3D instead of just using a normal raycaster. I've discovered that in Löve, even with JuaJIT, casting a ray is very costly. Out of the entire frame time, the ray itself ends up using almost half that time and the bigger a room the further the ray has to cast before it hits something and the longer it takes to finish. And it has to do it twice. Once for horizontal and once for vertical walls. I could place a thousand sprites in my level and it would have no problem doing the math for every single one in no time at all, but then the casting just comes along and says "wait! I'm gonna need some time cuz math is hard lol". At times I feel disheartened but I keep carrying on and add new features and stuff but it's always that recast time looming over my head.

But seeing all these 3D games now being made in Löve and a really neat library for doing it and everyone getting into the retro FPS genre, it's giving me inspiration to keep going and try and do my own thing. As one of the original "raycast attempters" on this forum, I tip my hat to you for helping to keep the tradition alive in the Löve-based 3D FPS genre.

I really love this games look and feel. I am a bit disappointed there's no destructible scenery though. That glass just looks so tempting to shatter. The trees in the pots look like they want to be smashed. lol

Anyway is it okay if I borrow some of the assets for my prototyping? I had to use some weird fan replicated Wolfenstein SFX as well as some DOOM sSFX to put in my game so it wasn't so silent. But I've also been wanting to have some music to experiment with moodiness but hadn't really found anything. It would at least give my hours of testing time a bit more joy to have sounds playing. haha

Did you draw/create all the assets yourself? I'd been using the enemy sprites from GunGodz as placeholders.

Also, the palette usage and the pixel art is *chef's kiss*. I really mean it. I am jealous. I might have to switch to a fixed color palette myself.
togFox
Party member
Posts: 451
Joined: Sat Jan 30, 2021 9:46 am
Location: Brisbane, Oztralia

### Re: Lead Haul - Old-school space pirate FPS

BrotSagtMist wrote: Thu Sep 30, 2021 11:37 pm I am kinda in need of a keyconfig tho, not having wasd on my keyboard, gotta find a working controller...
If ppl would at least ad arrow keys to the controls....
I wanted to learn more about G3D so I dived into the code and added arrow key support with a right mouse-button interaction. It's a hack but it works. It's not a key config but it allows use of the arrows and help left handers.

I'll share it here if the @Hydrogen Maniac permits.
Hydrogen Maniac
Citizen
Posts: 51
Joined: Sat Dec 19, 2015 9:59 pm

### Re: Lead Haul - Old-school space pirate FPS

BrotSagtMist wrote: Thu Sep 30, 2021 11:37 pm Neat on the first look, Yay for having bullets you can see and dodge
Lets see how fast i can finish it.

I am kinda in need of a keyconfig tho, not having wasd on my keyboard, gotta find a working controller...
If ppl would at least ad arrow keys to the controls....
togFox wrote: Tue Oct 12, 2021 10:12 am
BrotSagtMist wrote: Thu Sep 30, 2021 11:37 pm I am kinda in need of a keyconfig tho, not having wasd on my keyboard, gotta find a working controller...
If ppl would at least ad arrow keys to the controls....
I wanted to learn more about G3D so I dived into the code and added arrow key support with a right mouse-button interaction. It's a hack but it works. It's not a key config but it allows use of the arrows and help left handers.

I'll share it here if the @Hydrogen Maniac permits.

Sorry about that, I totally forgot not everyone has WASD keyboards . I might go back and add a keyconfig in future but for now togfox has my permission to upload their quick fix.
Jasoco wrote: Mon Oct 11, 2021 2:36 pm Once again I am impressed and I am seriously thinking about switching over to g3D instead of just using a normal raycaster. I've discovered that in Löve, even with JuaJIT, casting a ray is very costly. Out of the entire frame time, the ray itself ends up using almost half that time and the bigger a room the further the ray has to cast before it hits something and the longer it takes to finish. And it has to do it twice. Once for horizontal and once for vertical walls. I could place a thousand sprites in my level and it would have no problem doing the math for every single one in no time at all, but then the casting just comes along and says "wait! I'm gonna need some time cuz math is hard lol". At times I feel disheartened but I keep carrying on and add new features and stuff but it's always that recast time looming over my head.

But seeing all these 3D games now being made in Löve and a really neat library for doing it and everyone getting into the retro FPS genre, it's giving me inspiration to keep going and try and do my own thing. As one of the original "raycast attempters" on this forum, I tip my hat to you for helping to keep the tradition alive in the Löve-based 3D FPS genre.

I really love this games look and feel. I am a bit disappointed there's no destructible scenery though. That glass just looks so tempting to shatter. The trees in the pots look like they want to be smashed. lol

Anyway is it okay if I borrow some of the assets for my prototyping? I had to use some weird fan replicated Wolfenstein SFX as well as some DOOM sSFX to put in my game so it wasn't so silent. But I've also been wanting to have some music to experiment with moodiness but hadn't really found anything. It would at least give my hours of testing time a bit more joy to have sounds playing. haha

Did you draw/create all the assets yourself? I'd been using the enemy sprites from GunGodz as placeholders.

Also, the palette usage and the pixel art is *chef's kiss*. I really mean it. I am jealous. I might have to switch to a fixed color palette myself.
Thanks for the kind words.

I've been trying to make raycasters since forever after seeing some that were made in LÖVE (including yours ) and I always ended up scrapping them either due to poor performance or because I had written a crap-ton of messy code I didn't want to deal with. While the latter can mostly be fixed with a bit of patience I found that I could use a mode7 like shader to render the floors and ceilings which drastically improved performance. Besides, these sort of games are usually more fun in small closed off arenas so making your levels out of a series of smaller rooms isn't just good for performance, it's good level design. If all else fails you could always set the horizontal resolution quite low to save on performance which isn't so bad when raycasters look pretty retro by default.

I made the all the assets for the game my self aside from the SFX which I got from a sound library, altough I did edit them a bit in Audacity. Feel free to use them for your prototypes .

The props were supposed to be destructable originally but I ended up scrapping that feature once I realised how much work it was going to be.
I'm way too sober for this...
togFox
Party member
Posts: 451
Joined: Sat Jan 30, 2021 9:46 am
Location: Brisbane, Oztralia

### Re: Lead Haul - Old-school space pirate FPS

Hydrogen Maniac wrote: Tue Oct 12, 2021 9:47 pm ... togfox has my permission to upload their quick fix.
For reference, in Controller.lua, updated Controller:new() to include these lines:
moveForward2 = "up",
moveBack2 = "down",
moveLeft2 = "left",
moveRight2 = "right",
interact2 = "m2",

Updated Controller.getMoveDir(self) to include these lines:
if lk.isDown( self.binds.moveForward2 ) then dz = dz - 1 end
if lk.isDown( self.binds.moveBack2 ) then dz = dz + 1 end
if lk.isDown( self.binds.moveLeft2 ) then dx = dx - 1 end
if lk.isDown( self.binds.moveRight2 ) then dx = dx + 1 end

Updated Controller.isInteracting(self) so it is now:

Code: Select all

function Controller.isInteracting( self )
return Input:isPressed( self.binds.interact ) or Input:isPressed( self.binds.interact2 )
end
The love file is nearly 100 mb and can't be attached here. I don't have a hosting option so I'll think of something.
Last edited by togFox on Wed Oct 13, 2021 10:10 am, edited 1 time in total.
BrotSagtMist
Citizen
Posts: 84
Joined: Fri Aug 06, 2021 10:30 pm

### Re: Lead Haul - Old-school space pirate FPS

...
I actually truly forgot that changing files is an option here, lol.
obey
Jasoco
Inner party member
Posts: 3676
Joined: Mon Jun 22, 2009 9:35 am
Location: Pennsylvania, USA
Contact:

### Re: Lead Haul - Old-school space pirate FPS

Hydrogen Maniac wrote: Tue Oct 12, 2021 9:47 pm
Jasoco wrote: Mon Oct 11, 2021 2:36 pm << My original post >>
Thanks for the kind words.

I've been trying to make raycasters since forever after seeing some that were made in LÖVE (including yours ) and I always ended up scrapping them either due to poor performance or because I had written a crap-ton of messy code I didn't want to deal with. While the latter can mostly be fixed with a bit of patience I found that I could use a mode7 like shader to render the floors and ceilings which drastically improved performance. Besides, these sort of games are usually more fun in small closed off arenas so making your levels out of a series of smaller rooms isn't just good for performance, it's good level design. If all else fails you could always set the horizontal resolution quite low to save on performance which isn't so bad when raycasters look pretty retro by default.

I made the all the assets for the game my self aside from the SFX which I got from a sound library, altough I did edit them a bit in Audacity. Feel free to use them for your prototypes .

The props were supposed to be destructable originally but I ended up scrapping that feature once I realised how much work it was going to be.
I already have destructible scenery in my current engine. And I'd been experimenting with rudimentary 3D objects using an old image to polygon library but since it's not an actual 3D engine, the polygons have no depth so sprites nearby would get overlapped. I'm fully committed to making all this stuff work. If I can get a good real 3D engine I'll put in the time to make models and stuff just to make it look great. I've been making my own "3D" engines in Löve for over a decade now. lol So I'll have to start toying around with g3D and see if I can make my own real 3D FPS. It sucks because if it weren't for the performance of the actual raycasting it would be perfect. I only have the resolution set to 320 columns but also implemented options to cut it in half (160) or adjust anywhere in-between (where it lets you have the rays on the edges of the screen be doubled but the rays in the center are still normal) with an option for automatic based on your frame rate which helps with performance but it still does have issues with big rooms. It's also a big problem because while I have a 2019 16" MacBook Pro with a discrete GPU, the performance is even worse on machines a few years older. Even my 2013 MBP only gets 45FPS on average. So if I ever release what I have, hardly anyone will be able to play it.

I even have reflective floors where it draws everything twice mirrored when a mirrored tile is visible on screen and it uses no performance at all. It's just the raycasting. Thing is even if I only use small rooms the nature of the raycaster is that it checks both directions so it will "leak" out of the actual room if it's checking for a certain wall face and going through walls with faces in the opposite direction. So it adds so much wasted time searching for the walls.

Another thing I have is blood spatters and bullet holes on the walls since I use canvases and create a canvas for every wall tile when it's first hit with one. I don't know if I can do this with g3D. (I'd probably have to do it the old school way of creating a new 3D object to represent a bullethole or blood splatter that sits in front of the wall but destroy it after a few minutes or when there's too many loaded) Can canvases that are used for the polygons in g3D be changed on the fly? Or do I actually have to destroy the 3D object and recreate it every time a bullet or blood splash hits the wall or floor? And would I even be able to do reflective floors? Like make 3D textures that are partially transparent so you can see stuff under it?

I also do have a custom scripting system for doing stuff. My vision for the game is to have scripts that spawn enemies in rooms as you go kind of like DOOM 2016. So I'd like to have some areas that are larger arenas. I also wanted to approach it more Hexen/Strife-like where you have hubs that branch off to other levels and you can go back and forth between them and activate switches that change stuff on other levels. Rather than the traditional "level-based, one at a time, here's your stats, now go to the next level" style of gameplay.

The thing that keeps me from committing to switching right now is the thought I might lose a lot of the unique stuff my engine currently has. The scope isn't even an issue. This is my dream and has been since the '90s. (Though TBH I guess if I really was committed I could grab a modern DOOM editor and make a full total conversion to run in GZDoom and release it like how Ion Fury is made in the old classic Duke Nukem Build engine and it looks amazing. GZDoom is capable of all that stuff too. Plus there's those people who literally made a full DOOM clone in PICO-8. I can't even wrap my head around how they literally wrote their own engine complete with a BSP system.)

I am gonna have to throw together a video and a thread to show it off one day before I commit to changing to g3D if I do just to have it for archival sake.

### Who is online

Users browsing this forum: No registered users and 8 guests