Thank you so much for releasing the source code! If possible, could you declare the license of the code in that repository? (If you are not familiar with doing so, adding a file License.txt with e.g. the MIT License would be excellent.)
Macoy
Creator of
Recent community posts
This is a great app for playdate! I do have one piece of feedback: the crank to select letters is too sensitive. I have to very carefully go back and forth to arrive at the right letter, and sometimes my crank moves on its own while I’m navigating the puzzle, causing erroneous letters entered.
Would it be possible to use the system keyboard instead, such that I can enter words, backspace, etc. with it and then press okay? E.g. I press A on a Down entry, then the system keyboard pops open, and starting always from the start of that Down entry, I can use the system keyboard to enter the entire entry.
I would expect the big difficulty would be clues which span the entire screen or clues to the far right, since the system keyboard takes up the right hand side of the screen. Shifting the entire board to the left such as to keep the current selected grid cell always visible might solve this.
In addition, the standard playdate UX is to be able to scroll lists (especially long ones) with the crank. It would be nice to have this for the Puzzles list because it can get quite long, and pressing the D-pad down so many times in a row can get tiring.
Do you have any interest in releasing the source code? I would be more than happy to implement these features.
…plus few unexpected issues that wasted too much time to solve (a problem I could fix in 1 minute took me 6h of research - to speak about my worst time wasting situation).
This happens to everyone, and I always try to spin it as a learning situation or an opportunity to investigate and improve my problem solving skills myself. Of course, it’s always hard to see it positively when you are on a deadline and know time spent there is time no longer available to spend making other things better.
…also requires Google Captcha…
I also hate Google Captcha. The worst offender I’ve seen is a government website I must use to e.g. pay my taxes. It feels like I’m working for Google training their AI for free, which is infuriating.
But I delete it also, because I will never join an itch game jam again. The malus system is super unfair.
I also thought the rating system was ill-conceived. The last jam I did on Itch did not have everyone else rate each other. Instead, there were four or so appointed judges who did not make games themselves. Knowing this, I would ask you reconsider writing off Itch jams because not all jams work the same as this one.
I think judges make much more sense because community voting causes a perverse incentive to rate games lower in order to give your own game a better chance. I did not do that–I tried to honestly rate the games. I rated them somewhat relative to each other, e.g. if I believed game X did better than game Y on audio, I would make sure game X had one more star than game Y. I also factored in “perceived effort”, i.e., does this game seem like the developer spent a lot of time on it vs. not much time.
At the end of my rating all the other games, I would adjust the total stars one way or another in order to come out with my perceived deserved absolute rating; if I wanted game X to be overall higher than game Y but they were tied on stars, I would ding a star on game Y to make it happen. I did all this trying my best to NOT consider my own game in the rankings.
I don’t know if you’ll see this because you might have deleted your account already, I don’t know. For the record, I was hoping your game would end up in the top three. I think it has potential and am excited to see you continue improving it.
I wrote an article on Bunny Semiconductor.
I had fun participating, and I enjoyed playing all of your games!
I love the potential, but I hope you can take some time to do a performance pass on the client. I was really struggling to get playable framerates despite running on desktop (Intel i7 with integrated graphics, Ubuntu 20.04 LTS), and on Librem 5 it is incredibly blurry and I’m not sure I could’ve played past the employee signup sheet (which I thought was a cute idea, by the way).
The game looks nice but I dinged a star because I thought I read somewhere that you used an asset pack for the game. Please let me know if the assets are all original, in which case it’s a 5 star art for sure.
I’m really excited to have an open source Overcooked and hope you continue working on it!
I did release my game, it’s Bunny Semiconductor. I also had big delays from life that took most of my week 3.
Oh, and a gripe about the Linux/Gnome experience: Why is it so hard to run an executable? It would be nigh impossible for any non-technical user to download and run the games submitted here.
Mine is misinterpreted as a shared object, so clicking it from the file explorer (Nautilus? Something else?) in PureOS opens a dialog “No application is installed to open shared objects”. However, I also tried another submission which is somehow understood by the file explorer to be an executable. Humorously, the dialog then says “No application is installed to open executables”. That’s right, no app is installed because the operating system itself does that!
Then there’s also the “open properties, permissions, mark as executable”, which also is difficult for non-techies. On Librem 5 the file browser is still pretty hard to use (e.g. I can hold to open the context menu, but can’t seem to tap on Properties once it is open), so I didn’t even attempt to go through this process.
I don’t expect us to solve any of this here, I just wanted to vent.
I didn’t end up having time to develop straight against Wayland/EGL/etc., so my submission stuck with SDL.
Overall the Librem 5 wasn’t too bad to develop for. There are three things that created more work than a regular Linux desktop:
- The portrait/landscape/fullscreen never quite worked how I wanted it to. I ended up just telling the user “Turn your device to landscape” rather than doing the too costly refactor of the game to work in portrait.
- OpenGL ES 2.0 is a bit limiting. I had to de-instance my GL code as well as port my GLSL to GLSL ES. Framerate seemed to be okay; when the models are large on-screen the librem dips to 50 hz, but normally it sticks to 60hz.
- The phone gets hot very fast while the game is running. I would love to hear what the Purism devs suggest I do on my end to fix this. I could frame-cap to 30 hz instead, which would be worth it if it makes the game playable for long periods rather than overheating in maybe 15-20 minutes.
Update:
- Fix progression blocker due to missing photolithography machine in store
- Fix said machine clipping off screen on Librem 5
- Add RunBunny scripts which expect bunny-semi to be in downloads folder
Note that you need to mark the RunBunny and bunny-semi downloads as Executable by going to the files and right click->properties->permissions-> “Allow executing file as a program”.
I had to convert all my shaders to support GLSL ES 1.0, and then made some small tweaks to my API calls. The most unfortunate was not having glDrawArraysInstanced, which is unfortunate both for a convenience as well as performance. It didn’t get introduced until well after GL ES 2.0.
But I did manage to get everything rendering after that, and so far performance has been good. I’m still on my SDL “platform”, but I think it’s now essential that I get rid of it on account of how many weird things happen with the window manager:
- If I switch to another application and then switch back, the software keyboard opens, resizing the game to a tiny window. I tried setting SDL “hints” about this to no avail.
- I can’t get a fullscreen window to be the correct resolution. It always seems to be the “low DPI” mode, despite my telling SDL high-DPI is supported and passing 1440x720 to the create function.
- SDL doesn’t seem to have any working way to set landscape or portrait modes. I want to force landscape for the game, but it’s not possible to do so without collaborating with the window manager.
I am confident using Wayland directly will solve these problems.
An update: I was going down the rabbit hole of trying to static link the entire game. It’s proving to be about as hairy as one would expect–I’ve got Musl LibC static linked, now I’m attempting to build Mesa and LibDRM from source to avoid the libGL dynamic load.
For now, I’m going to focus on making the game, and then come back to the lean setup. I need to make sure I have something worth playing before I work on what it’s built on.
I have a “Platform SDL” that wraps all the SDL code, and I hope near the end of the jam to replace it with a “Platform Wayland Static”. If I run out of time on that I’ll still have a game which uses SDL and runs on the phone.
I think Millipixels is the camera application on Librem 5. Check the ReadMe and refer to the code there. Otherwise, I’d ask the community/librem-5 room on Matrix.
I’ll link to my code here once I write it! I have a Librem 5.
Isn’t your PortableGL a software renderer? If so, you can directly create a pixel buffer from Wayland.
When I was writing a keyboard for the Librem 5 I made this file which will be what I base the game’s Wayland code off of. At the very bottom of the file it shows a nice workflow thing, which is generating the headers from the protocol XML as part of the Cakelisp build process.
I will be using Cakelisp, but because it transpiles to C I can share the transpiled results for others to use. I will of course be using some 3rd party C headers/libraries as well. I usually reach for SDL2 but lately I’ve wanted to move away from it for startup performance, reduction of dependencies (my holy grail is a 100% static linked 3D accelerated application), and for learning purposes.
Hi all!
I am planning on targeting the Librem 5 using Wayland, EGL/OpenGL, and C. This should be a real lean-and-mean setup for experienced devs or those interested in seeing what’s at the “bottom” of a Linux game engine.
If anyone else is interested in going this route, I can share my initial setup code.
I like to encourage game development without engines, which is why I’m posting this.
I’m excited to see the theme and what we all end up doing!
Thanks for playing! What made you decide to check it out?
Restoration restores a percentage of your stats instead of 100%. You made me find a bug however in that Restoration only restores a percentage if you are not in the Barrens yet. Once in the Barrens it is exactly the same as Full Restore, just the name is different. If you get it in the Forest it'll be called Restore; if you use it in the Forest it will do a partial restore. If you then get to the barrens it becomes a full restore. Oops! :). The fix is just to check whether you got it early or not and use that value
All times are appoximate.
Note that I work full-time as a software engineer so I could only put in a couple hours after work each day.
Start work 9:20 AM March 3.
Saturday: 8 hours spent adding tile map rendering, player & player movement, input, colors, status line, camera snapping, melee combat, death screen, input repeat, lighting/poor man's visibilty radius, sidebar/status display
Sunday: 7 hours spent adding enemy movement, window resize, portals, stat restoration, logging output
Monday: 4 hours spent adding levels, summoners, death progress
Tuesday: 4 hours spent adding abilities, lightning, abilities sidebar UI
Wednesday: 4 hours spent adding leveling, ability drops, enemies spawned on level by default, phase door, and other tweaks
Thursday: 3.5 hours spent adding "essential" polish e.g. sound FX, font autoscaling, bugfixes, UI improvements/fixes, main menu/info/help/victory
Friday: 1 hour in the morning, 6 hours in the night (worked past midnight) spent creating new abilities and enemies as well as building on Windows (which took up the majority of the 7 hours...)
Saturday: 3.5 hours (woke up at 5 AM for this!) spent balancing the game, creating linux build, packaging final builds, uploading, making posts, and creating banner/screenshots
Total: ~40 hours
Finished and uploaded ~8:20 AM March 10. Success!