

A game heavily "inspired" by Among Us. Fans will find the map VERY familiar.
CONTROLS:
Mouse/Left/Right Arrows - Rotate left/right
Up/Down Arrows - Walk forward/backward
O button - Run forward
X button - Perform action
Player 2 X button - View map (Not everyone has this button)
FEATURES:
- Usable Command table
- Usable security cameras
- Usable vents
- Proximity-based NPC footsteps volume
- Very sus but hopefully amusing player names
- Stars go wooooooooo
UPDATES:
[09-12-25]
- Fixed jittery textures (thanks @freds72 for pointing them out)
- Fixed some other miscellaneous graphical bugs
[09-10-25]
- Added mouse lock (I've heard it doesn't work on every platform so YMMV)
- Used PICO-8's new outline feature for more legible text
- Aligned the text for actions to make it look a little less out of place
- Fixed a bug that prevented the top line of the ceiling from rendering
- Fixed a bug where winning one game would cause you to win all future games
Rules and additional information:



yeah! a non-straight walls renderer!
tip - if you want to fix jaggies on wall textures, replace that code:
tline(info.x, info.y+1, info.x, info.y + info.h-1, info.slice_x, info.tex[2] + ((1-info.y%1)*dv), 0, dv)
by:
-- store texture delta local dv=info.tex[4]/(info.h-1) -- "jumpstart" texture lookup with error from flooring y coordinate by tline tline(info.x, info.y+1, info.x, info.y + info.h-1, info.slice_x, info.tex[2] + ((1-info.y%1)*dv), 0, dv) |



Thanks for trying it! :)
As silly as it sounds, I think I'd gotten so used to the way it looked that I didn't even notice the jagged textures anymore, so thanks for pointing them out.
Before I look at your suggestion though, I'd like to try my hand at fixing it on my own. Which isn't to say I don't appreciate the help; I do! I just really want to maintain a deep and intuitive understanding of how everything here works.



understood - note this is hard to find online material, strongly rooted into software rasterization.
see: https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/rasterization-practical-implementation.html to understand some of the rationale.



Well, after some testing, it turns out that most if not all jitters can be fixed by just making sure all the wall heights are even numbers. So I just tacked on \ 2 * 2
to the end of my wall height calculation and it seems to have fixed it! I'm sure it's not as comprehensive as your solution but I'm happy with it.
And thanks for the reference. Like I mentioned in my original post, the goal here was to see if I could build a ray casting engine and come up with all the techniques completely from scratch with absolutely zero knowledge of how they work or how it's been done before so it defeats the purpose if I read anything about them. That said, I'll definitely bookmark that link in case I ever want to learn how "real" ray casting works and make an engine the "right" way!
[Please log in to post a comment]