While you're here, please consider supporting GamingOnLinux on:
Reward Tiers:
Patreon. Plain Donations:
PayPal.
This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!
You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Reward Tiers:
![](/templates/default/images/network-icons/patreon.png)
![](/templates/default/images/network-icons/paypal.png)
This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!
You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register
- Square Enix invests in Playtron for their Linux-based PlaytronOS - first Alpha out now
- Black & White (2001) open source game engine sees a first release
- Linux smashes another market share record for August 2024 on Statcounter
- GE-Proton 9-12 released with fixes for Star Citizen, Bully: Scholarship and more
- Here's what was most popular on Steam Deck through August 2024
- > See more over 30 days here
-
Steam Beta adds new shortcut key to save a clip of rece…
- pazzoeo -
Linux smashes another market share record for August 20…
- Lib-Inst -
Retro racer Slipstream has a final update with new cont…
- pb -
Retro racer Slipstream has a final update with new cont…
- thoughtfulhippo -
The Elecrow CrowView Note is a real useful all-in-one p…
- NoiramSang - > See more comments
- Weekend Players' Club 9/6/2024
- StoneColdSpider - What is the best strategy for finding work as a programmer?…
- BrassGear - WINE Game Screenshot Thread
- DoctorJunglist - Nintendo-style gaming, without Nintendo!
- sourpuz - Tomb Raider (2013) Fails to Launch
- Celchu - See more posts
View PC info
During the coronavirus lockdowns last year, I had played around with a couple 3D engines (BabylonJS and Godot). I decided to go with using BabylonJS. JavaScript is, by far, the language that I've spent the most time playing around with. I also like how I can actually "type out" an entire game project using only my text editor (Atom) and the playground.babylonjs.com online testing tool.
I had already experimented with BabylonJS. So using my random maze generator's data to quickly create some actual 3D, retro-style mazes was very easy. After doing that, I needed to actually make these mazes into a game – something more than just walking through them, which is boring. I first decided to add some keys and doors to the mazes. I was now no longer just walking from a maze's start point to its end point.
However, I still wanted there to be something else to this. Just collecting keys and opening doors was not enough. I did not want the project to be just another retro FPS – I would have used GZDoom for that. So I decided to add puzzles – a core gameplay element in most 'adventure' type games (think Myst).
I then had to come up with a good way to place puzzles in this project. So I devised a way to drop the puzzles into rooms that would appear inside the mazes at certain points that, in order to progress further, you must solve a puzzle. After tinkering with this on the random maze generator, I began the much longer task of actually creating the game's puzzle content.
Now I am quick to point out that I always sucked at these kind of puzzle games and always bought the thick strategy guide books for them back in the 1990s. I am also a terrible 3D modeler, so none of this was going to look even slightly beautiful. Using the playground.babylonjs.com online tool, I created my own little workshop for cranking out this content. I made a generic empty room with a single 'force-field' style exit. Then I start playing around with it, typing out a little scene using simple 3D shapes, trying things out, playing around, testing, cussing, reading up on various parts of the BabylonJS API, until finally I have a working puzzle that removes the force-field. Then I just start copying and pasting the new puzzle's functions into the bigger game project itself.
I should pause a moment and point out that the game itself is played as a traditional desktop application, made with the Electron framework. I test as many subdivisions of the project's code as possible as simple browser scripts or using playground.babylonjs.com before bundling it all up and launching the actual game. That really helps save time and reduce swearing.
Anyway, I eventually got enough content this spring where I actually did an initial 'release.' But I only had four puzzles to offer, so the mazes seemed much too similar to each other. I've now done three more releases and have 16 different puzzles that can spawn. Finally, these random mazes are actually starting to seem like distinct little gameplay experiences. I also added treasure, secret areas, achievements, and time-limited maps to help make the gameplay more interesting. It finally, to me, feels like somewhat of a game.
As for game assets, I typed out all the 3D models you will see in this game using simple shapes from BabylonJS. For sound and music, I used material freely available for projects like this one from OpenGameArt.org. I have also provided a carefully documented credits for anyone else that wants to use the same sound/music material.
Regarding where to go next with the project, well, at this point I am looking to have more people try it out. I will also definitely be thinking of more puzzle ideas for any future releases. But at this point I could use some tester/player feedback. ;-)
For now, the game is only available on my github. If you want to try it out, a native Linux version can be downloaded and played right away (no installation necessary):
https://github.com/neytjs/FreeMazes3D/releases
BTW, I have included a "guide" txt file in the game download that should answer any simple questions you may have about gameplay. Also, try checking the key controls in game if something does not make sense. The game is not meant to be super hard, but casual friendly.
View PC info
I'll try to give it a go when I can. I'll aslo see if I can spread the news around a bit. Thanks for making your game FOSS !
View PC info
Thanks, I hope you like trying it out. I wanted to make it FOSS from the start. I have had a lot of fun trying out other people's FOSS games and free mods over the years, so I wanted to make my own minor contribution.
Last edited by nate on 25 September 2021 at 4:33 am UTC
View PC info
(we are a community of open-source game developers and players)
View PC info
Feedback:
* The mouse input has way too much smoothing. Make it feel really drunk/mushy.
* The game looses mouse focus if you switch away from it.
* Is it possible to use keyboard scancodes with Electron? This is super awkward to play on a non-qwerty keyboard.
* The solid color walls are very bland. A little shading, or at least outlines would give them a lot of extra depth.
View PC info
BTW, what type of non-Qwerty keyboard do you use? I will look into adding support for this.
I was being vague on purpose... hehe (sigh, mild rant incoming) People usually have an immediate reaction and tell me all their opinions based on an article they read once about keyboard myths when I tell them I use Dvorak. -_- I used to have terrible, and consistent wrist pain if typing for too long, and Dvorak fixed that immediately. Any other reason, myth based or otherwise is utterly unimportant to me. (end of rant)
Anyway, I'm pretty accustomed to switching layouts regularly for games. It's fine, just a mild annoyance. I've seen azerty (french keyboard layout) users mention it before too.
Many libraries (ex: SDL) use keyboard scancodes. USB keyboards actually all send the same code for keys located at the same physical positions, so regardless of the selected keyboard layout or labels printed on the keys. So what you think of as being WASD always send the same codes. I assume the reason for this is so any keyboard can trivially be compatible with any layout. If you can do use scancodes in Electron, it's generally going to be your best option, but it's not always supported. There has been an open feature request for Unity to do this for more than a decade now for example...
However, if all you need is WASD + a couple action keys there is an even easier solution. Just map multiple keys! It just so happens that there aren't conflicting keys for the most popular layouts so you can map all of them at the same time and the player probably won't notice. Worst case scenario they notice there are other keys that make them move for some reason. ;)
'WASD' on Dvorak is ',AOU' (that's a comma)
'WASD' on Azerty is 'ZQSD'
Last edited by slembcke on 25 October 2021 at 10:10 pm UTC
View PC info
View PC info
I intentionally limited the texture file sizes to 128 by 128 pixels for walls/floors and 64 by 64 pixels for item/object textures. Most textures also have a hard limit of no more than 16 colors, except for a few floors that have as many as 32 colors. These size/color restraints help enforce the game's desired retro look. Note, the textures are all original work, derived from pictures I took with an incredibly cheap and barely functional digital camera. I originally made them as a 256 by 256 pixel size collection for another project idea about two years ago.
I also added a feature so you can customize the key bindings. It is as simple as editing the letters in the config.json file. Be careful not to delete any commas, quotation marks, or anything else that could make the JSON invalid. If invalid JSON is detected, it will just give you the default QWERTY keys.
You can now also alt-tab in and out of the game without any issues.
As always, the latest version can be downloaded at my github:
https://github.com/neytjs/FreeMazes3D/releases
View PC info
Download link:
https://github.com/neytjs/FreeMazes3D/releases