Do you want to read the full story OK then, :)… I spotted on a list of older projects this one that was made on a tight window (3/4 weeks that must be scheduler with other classes). After finding that it still works, I decided to try to use the GitHub-pages to statically serve this project and to my surprise it was pretty straightforward.
So, here I am to share this project. To be honest, it has a lot of bugs and incomplete features. However I think it can be helpful to someone that was a similar project. The code/logic and custom resources that we used/made are available here: https://github.com/T-Almeida/SuperCool
Unfortunately, since the project is from November 2017 we are using a three.js version from that time, which is certainly outdated.
In the end, we were able to implement the following features:
Basic game engine with basic physics
Game mechanics (inspired on SuperHot)
Collisions, majorly based in raycast (at that time I didn’t like to use the bounding box system)
Custom models
Audio clips that we found online
Enemy pools for performance and other tricks for performance
Simple GUI
As a final note, this project was made by me (Tiago Almeida) and my classmate (Yuriy Muryn), with an equal distribution of work. Also, it runs smoothly on google chrome
This is cool alright! Good job! PLEASE keep up the GREAT work! Can you switch the collision to bounding box & allow for terrain sloping? ( AKA, you try to climb up a very steep part of a mountain & you slowly stop & slide down )
Thanks a lot for the kind words :). I appreciate the feedback and indeed I agree that the bounding box would be the correct implementation and I never thought of the terrain sloping… it would be a simple detail that offers more engagement, but currently, I do not have time to speend in a 3 years old project xD so maybe as a hobby in the future, I try to finish this
And we had also a lot of ideas that at the time were not possible, like:
Us: Let’s make the only source of light been the bullets that are traveling the map!! Three.js: Nop, no can do… Or I will literally fry your computer, noobs!!
I am not sure if I understood and since this project is quite old the behavior of the stats.js may also be outdated. So what I can add to this, it is that the stats are always updated at the end of the engine main loop so at least this number corresponds to the iterations performer by the main loop (it should correlate with the number of renderers?? but not sure), but its only a speculation I can be wrong tho… take it with a grain of salt
Cool project! In my opinion, it will be better to use OBB’s for handling collision. Maps like these can be easily broken down into OBB’s. You can also approximate the enemies into boxes.
Or if you plan to have everything aligned to the world axes (ie not rotated), you can go for AABB’s. AABB’s just need 3 overlap checks. OBB will need 15 overlap checks.