Advanced Raycasting

1.0

Par drummyfish, il y a 6 ans

Contrôles: Direction: [Flêches / ZQSD] - A: [J] - B: [K] - Menu: [U] - Home: [I]
Profitez des jeux à pleine vitesse avec son et lumières sur la Gamebuino META !
Emulateur par aoneill

RELEASE UPDATE:

I got my GameBuino, tuned this a bit and set it as released. To check out the demos, download the code and put the three folders (raycasting1, raycasting2, raycasting3) on your SD card.

The first 2 demos are running a bit slower, but could still be workable. Demo 3 runs much more smoothly (due to absence of textures).


UPDATE:

Since a few people liked this, I have now ported all three demos plus the hello world program, made a GitLab repo


https://gitlab.com/drummyfish/gamebuino-raycasting ( this website doesn't support adding a GitLab repo, only GitHub :-[ )


and cleaned the code a bit. Hopefully it can be useful to someone who wants to make a game based on this.


The bin uploaded here is demo1, but you'll find all 4 bins in the GitLab repo.

--------------

Very WIP port of my raycasting demos from Pokitto as a proof of concept.


Hello all! Regarding the demo, please read this:


I am new here. I don't own Gamebuino yet, but am planning to buy it (probably Christmas). I do own other open consoles though. This is a super quick attempt at trying to run one of my demos on Gamebuino emulator. Don't take the source or the bin seriously, it's only a proof of concept ATM. On the Pokitto console, the demos look like this:





My wish is just that there is a raycasting engine for everyone to use, the sooner, the better.


Unless you want to wait for me to get my Gamebuino and finish some project I'm busy with right now, some experienced folk here should port this in a nice way. It should be easy. What you see I've been able to do within an hour, including setting up the Gamebuino environment and learning the API.


The demos can be found here. They use a C library I made for the demos, but I made it specifically so that it is portable, independent of any platform, fast and simple to use. I've already tested it on multiple very different platforms. No need to change anything in the library. Just take the frontend source code (*.cpp, *.hpp) and change the API calls to Gamebuino calls. Start with helloRay.cpp as it's a very basic program to show you how it all works. You can take inspiration in the source I uploaded here.


DO NOT FORGET TO ADD -O3 FLAG TO COMPILER FLAGS! (otherwise it's gonna be slow) If you don't know how, Google around a bit... it involves finding a file named platform.txt under some Gamebuino subfolder (mine is ~/.arduino15/packages/gamebuino/hardware/samd/1.2.1/platform.txt) and editing the flags in there... then don't forget to check the compilation console output to see if it's actually using the flags (turn verbose compilation on in the Arduino IDE).


(To convert textures to the format used in the source code use the Python script in the original demos' repo, it's all documented in there.)


If you figure this out and wanna just make a game with it right now, by all means go ahead please! That's the goal here. It's all CC0, you do NOT need any permission or giving any credit (it's nice of course, but not needed), just take it and use it. (All on your own risk thought, no guarantees whatsoever.)


From a quick look it seemed like META is similar to Pokitto, so I think it should run comparably as fast (Pokitto has a bigger resolution and still I've been able to get as much as 60+ FPS). But if not, there are ways to lower the quality in order to improve performance -- e.g. if you disable floor texture coordinates and apply some horizontal subsampling, you should get this running reaaaaly fast.


PLEASE, if you do, share your code under some free and open source license. Thank you :-)