https://github.com/mattdrivendev/fireinthemole
Bomberman meets Wolfenstein 3D (a Bomberstein!?)
https://github.com/mattdrivendev/fireinthemole
Last synced: 9 months ago
JSON representation
Bomberman meets Wolfenstein 3D (a Bomberstein!?)
- Host: GitHub
- URL: https://github.com/mattdrivendev/fireinthemole
- Owner: MattDrivenDev
- License: mit
- Created: 2023-07-29T08:58:10.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-09-28T22:04:32.000Z (over 2 years ago)
- Last Synced: 2023-09-29T10:19:22.525Z (over 2 years ago)
- Language: C#
- Size: 1.71 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fire In The Mole!
A game about moles mining with dynamite and blowing each other up (a Bomberstein3D).
## TODO
- [ ] Add a "Days Since Last Accident" counter to the title screen :)
- [ ] Projection and RayCasting options should be loaded from a config etc.
- [ ] Add the multiplayer split screen rendering.
- [ ] Render mole animations in view projections.
- [ ] Add the multiplayer input control systems.
- [x] Fix the fisheye in the raycasting even more.
- [x] Replace the player angles with a vector for forward.
- [x] Add a title screen.
- [x] Apply the map collision detection in the game itself.
- [x] Pause menu centre alignment.
- [x] Projection rendering based on the results of the ray casting.
- [x] Load player spawn points from the Tile Map.
- [x] Pause menu sounds.
- [x] Pause menu quit confirmation.
- [x] Refactor/2nd pass on the screen/scene/state managment.
- [x] Add a pause menu.
- [x] Screen/scene/state managment.
- [x] Change the animation based on the movement and direction of the player.
- [x] Load a Tiled map.
- [x] When rendering top-down, use an orthographic camera that follows the player.
- [x] Bug: prototype janky collision detection... allow player to move flush up against the wall.
- [x] Render mole instead of circle for player.
## But why F#?
So... I wrote the prototype in C#. Then, after some playtesting and realising that the game might have some legs, I knew I had to do some fairly heavy refactoring. But, the harder I refactored, the more it became a re-write. And then the harder I re-wrote, the more of a hot spaghetti mess it became again.
I am 100% finding it hard to write game code. It is quite far removed from the kind of code that I write day-to-day in boring business software land. Dependency injection, strategy patterns, and event streaming have me all in a muddle - and my game code just ends up being a hot mess that I struggle to work with without introducing 3 bugs for every 1 feature.
I've had quite a lot of experience in F#, and I'm fairly confident with it. One of the nice things about it is that it forces you to be more strict... and in this instance, the strictness I think comes from the lack of circular dependencies (which is enforced at compile-time with the type system).
So, consider this to be a kind of prototype++.
### Tools
- MapViewer: used to quickly test tile map rendering, tile destruction, and an orthographic camera.
- Floored: to figure out how to do the floor texturing (Mode7 camera)... hopefully this will work!
- Collider: to figure out how to do the collision detection.
- (Ray) Stantz: to figure out how to do the ray casting.
### Notes
- [More on Ray Casting](https://gamedev.stackexchange.com/questions/169546/understanding-the-rendering-of-the-raycasting-on-flat-screen/169548#169548)