Games > FPS80

A 3D first-person shooter for the TIC-80
made by Bruno Oliveira
uploaded by btco
download cartridge


FPS80 is a 3D first-person shooter. Shoot the monsters, collect powerups, find the keys to open the locked doors and escape the dungeons!

*** ATTENTION: For the best experience, play this on your desktop (standalone TIC-80), not on the browser. To do this, install TIC-80 on your computer, then use the "surf" command to browse games, select [] and then select FPS80.

There are 3 levels: Dungeons, Gardens and City.

This game uses a custom simple 3D engine I built. I'll release the (more readable) source code soon!

Here's an article on how I developed this game:

Add me on Twitter:

Source code:



Note: I don't know if it's just my computer, but the sound doesn't seem to be coming out well in the web player. You may have a better experience if you download the cart and play in the standalone desktop player.


Or... Play the cart from SURF (since TIC 0.45.0).


Good Game! Nice explosions!
I managed to find the ILEAVE setting. Turning that off and still having a good 25 FPS felt preferable to me. :>


@StinkerB06: good point, using the SURF command is better!

@Nopy: yeah, in the next version I'll try and make ILEAVE a user visible setting!


For those who are interested in how this game was built, here's an article I just wrote:


Very good this game 10 notes amazes me a lot your games


am i permitted to make a ¨HD¨ version of this game that is the same game, sporting better graphics?




btco, always surprising us


@Jackj106_Games: this game is open-source and licensed under the Apache license. So you can do anything allowed by the license, which is practically everything, including making an HD version :-D While not required, giving me credit in the HD game is appreciated!


Another interesting modification someone could do is use textri() to speed up rendering.


You should make a game like super smash brothers @brunoOliveira


what a good and impressive game! how did take this long making this game?


I think it took me about 4 weeks. Most of the time was building the 3D engine. You can find out more about how the 3D engine works from the Medium article (link above in the description). The other time consuming part was balancing the difficulty of the levels... still don't know if I got that right :-) Has anyone finished the game? Is it too hard? Too easy?


this is amazing! reminds me of doom but on atari 2600


That was the idea :-)


Cool game. The fog and clunky controlls almost made it scary


Why did you choose keys ZXAS over buttons ABXY?


Start using ABXY the next time you make a TIC-80 game to not confuse out moblie players.


Yeah, I optimized it for clarity on desktops with a keyboard. Does TIC-80 have an API to tell whether the game is running on mobile or desktop? If so, I could dynamically adjust to say the correct keys...


No, there isn't. You could probably ask Nesbox to add a code flexibility feature that allows you to print button names/bindings alongside text strings and integers.

On desktop, it would print the key bindings for their corresponding button codes. It would also accept keyboard input as well, which is a feature that got added in TIC-80 0.60.0.

On mobile, it would print the names of the buttons as they appear on the touch screen. The inputs of players 2, 3, and 4 would return an error on mobile if they tried to print, or if a cartridge attribute is set to make the game based exclusively on multiplayer features, QWERTY keyboard usage, or right-click & center-click usage, all three of which aren't supported on mobile at the moment.

Having an on-screen mouse and QWERTY keyboard on mobile + Wi-Fi support would make the TIC-80 experience way better for mobile users.


I'd never though of using raycasting in this program, but I guess it's only fitting since it's very similar to the Doom Engine


im not a big fan of the game but i love all the work you put into it


Thanks for the feedback! :)
This game was really fun to make!


I loved the game, specially the 3D engine, it's amazing.


It's a pretty rudimentary 3D engine. It was the first time I wrote a 3D engine from scratch, so I did a bunch of things naively. Glad it worked well enough.


This is AMAZING! Definitely needs some kind of optimization though, you could try adding something similar to the hint block in source(only renders whats behind it if player can see it) or just a draw distance. I don't care too much. The interlaced frames are great for this though, just not enough.


True! It's VERY fill-limited as is. Btw this was developed before TIC80 introduced textri() API, so if I were to rewrite it today it would be MUCH faster. Maybe I'll update it at some point :)

Post comment