For my Experimental Game Development class, I wanted to work on an arcade game I dubbed Mechaloid Deluxe! I wanted to try and build an arcade machine with my Raspberry Pi 3 and Arduino since I had a few of them lying around and I'm interested in hardware, so I was delighted when I stumbled across Raylib!

I wanted to work in C++ since that's what I'm most comfortable with, and I also wanted to get more used to lower-level game + graphics programming - added entities and components that can attach to them, a scene manager and a couple other things.
Arduino and Pi/Raylib communicate through USB serial, using joysticks, a few push-buttons, distance sensor and an Easy Button as input.

(I also tried to scale the Raylib animated logo so it would be proportional to the resolution vs hardcoded for 800 x 450! I've only tested it on 1920 x 1080 though so I'm not sure if the scale works for different resolutions...)

On top of all of that though, this was a great learning experience in makefiles, libraries, compilation and better coding standards! I think Raylib is pretty great, honestly. I love that it's cross-platform and the API is as simple as it is. I'm looking to make an animated (skeletal, .dae file) mesh class along with trying to add physics using ODE at some point soon!

I've come across a few bugs during development that you might want to take a look at!
-Image files that are larger than ~60kb don't seem to load reliably on the Pi, though that may be the fault of the hardware
-The skybox example doesn't seem to work for Pi, this may be related to the prior

As an aside, I was wondering if anyone knows of any software I can use to record my Pi's screen since i'm tired of filming monitors! A handful of the ones I've already tried don't seem to be able to record OpenGL applications (it just records the desktop when the game is playing).

Thank you for the time and effort you put into Raylib!


  • Hi ferrohound! Wow! Amazing project for the Pi! :D

    That's the kind of project I love seeing and the ones I think raylib could be more useful for. There are some issues with keyboard inputs on Rapsberry Pi but I'm working on it, please let me know anything that you found not working properly on the platform, I'll work on that.

    Did you open-sourced the project (GitHub)? It would be great!

    Abaout skeletal animation, I've received some requests to support that but still thinking about the best way, don't want to include external libraries. About physics support, you can try physac(https://github.com/victorfisac/Physac), it's a header-only library intended for 2D physics with raylib.

    About the issues you comment:

    -Image files that are larger than ~60kb don't seem to load reliably on the Pi, though that may be the fault of the hardware

    It should be able to open images of up to some megabytes, I tried it... How many VRAM memory are you assigning to graphics? Image format? Could you share the images that fail on loading, I will try it.

    -The skybox example doesn't seem to work for Pi, this may be related to the prior

    Related to HDR images (16bit per color-channel data format) support by OpenGL ES on RPI, but it's possible to support skybox on RPI, just had no time to work on that.

    About screen recording, did you know that raylib includes automatic screenshots capture and GIF recording? I know it's not what you look for but it can be useful.

    With F12 you take a screenshot, saved in same folder as executable.
    With CTRL+F12 you start/stop GIF screen recording, saved in same folder as executable.

    Please, keep me updated with your progress! :smile:
  • Oh, excellent! I didn't know about the GIF recording, that'll save me a lot of heartache.
    I did notice the issues with the keyboard, Raylib seems to think that the keyboard is being used through SSH and isn't directly plugged in. There's also an oddity where the mouse is still active on the desktop, so if I click somewhere that changes the focus from the terminal, the keyboard's esc key doesn't quit the game.

    For my Game Architecture class, I think the only library we included was for timing the animation, but I think that you probably already have something you could use for that inside of Raylib
    I was working on an animated sprite class for a WebGL project, but I'm not sure how I'd go about picking out specific animations aside from indexing each cel and defining an animation as an array of indices.
    As for 3D, I'm not sure how dae files distinguish animations as I've yet to check, we only worked with .egg files in class.
    As for physics, I don't think that a game like mine really needs it, I was just curious to see if I would be able to include an external 3D library and have it work with a different one! You already have 3D collision detection included anyway though. It would be interesting to see if I could extend your raycasting to work with my entities though.

    I've yet to open source the project, I wanted to make my code a tad less bloated and a tad more documented before I did so, but I will soon! I'll let you know when I do!

    I believe I allocated 256mb to the gpu, but the png images that don't work just appear as black squares. When I tried to draw several of these, some failed

    Happy holidays btw!
    Hope you give yourself a good break!
  • Hey ferrohound!

    About timming, raylib provides several functions to manage it, just added lately GetTime() function, to get MONOTONIC time measure since program starts.

    About animated sprites, just check this raylib example: http://www.raylib.com/examples/web/textures/loader.html?name=textures_rectangle

    About images not working, it's probably related to size, change them to 512x512 (Power-of-Two dimensions).

    By the way, happy new year!
Sign In or Register to comment.