[Open Source] Maze World

I wanted to share and get feedback on my first game:
Code: GitHub - MayGo/maze-world: Roblox game where player can solve mazes
Game: Maze World! [Open Source] Original - Roblox
Currently, I was more focused on the coding part, but any feedback is appreciated.

12 Likes

This is a pretty cool resource

Updated source:

  • Rebuild the world
  • Refactored code and used more Rojo functionality. Also used Remodel and Tarmac.

ReadMe:

Maze World

This is a Roblox project where all the code is version controlled and synced to Roblox Studio with Rojo. Project tries to cover most of the aspects of Roblox games.

Roblox Rojo Roact boilerplate

Code is written so it can be used boilerplate project. If some important model is removed then warnings are outputted in Roblox Studio, but game still runs.

Note

Game Description

You can play this game by running this project (need to publish also) or open in in Roblox: Maze World. You can select from easy, medium or hard maze to play. All mazes are dynamically created, so every time you play it is new. For easier maze solving you can buy trail or speed pets. You earn coins by finishing mazes. Bigger mazes and better place in finishing gives more coins.

Screenshots

Maze World Maze World Maze World Maze World Maze World Maze World Maze World Maze World

Used libraries

Game functionality

  • Money system - money is saved to server. Earn by winning.
  • Shop system. Spend earned money on pets with abilities.
  • Game Pass shop item
  • Statistics system. Top money earned. Top times visited. Top games won.
  • Pet system. Equipped pets and maximum pet slots are saved on server. Pets give abilities.
  • Dynamically generated labyrinths.
  • Waiting rooms with waiting and playing lists.
  • Awards system. eg: Daily visit bonus, 10 times visit bonus
  • Collectable Coins
  • Inventory, collectable items. eg: Cherries
  • GameAnalytics scripts (gameKey and secretKey in GameAnalyticsServerInit.server.lua)

TODO

  • Add tabs to inventory and shop
  • Add more collectable item: eggs
  • Add Chests, Treasures (more coins)
  • Notifications system
  • Developer Product to shop items (eg: buy coins for Robux)
  • Add Badges, reward when completing some milestone

Assets/Images

Faces are created with Inkscape. Project file is cartoon-faces.svg . From there each face is saved as png and imported to Roblox assets from RobloxStudio’s Game Explorer window (Game needs to be published first)

Assets/Meshes

Meshes are created with Blender.

Coin object project file is coin.blend . From there coin is exported as Wavefront .obj and imported to Roblox assets from RobloxStudio’s Game Explorer window. And then that model/mesh can be used by right clicking and selecting Insert.

Added Cherry object project file is cherry.blend . It is texture painted that using (tutorial). Exported model as fbx . Added as MeshPart to Roblox. Added textureId to uploaded Cherry_correct.png

There is also unfinished chest model box.blend .

Other games that have sources available

Code checkout with Sourcetree app

When checking out this repo, submodules should also downloaded.

  • Download and install Sourctree
  • Check “Perform submodule actions recursively” from Preferences->Git window
  • Checkout code (now it should also download submodules into modules folder)

How do I get set up?

  • npm i - to load prettier and prettier-lua (needed for VS Code)
  • run script ./script/build-and-open.sh . Game.rbxlx is built using rojo. Currently every model is inside raw-assets/game-models-and-place.rbxlx . And after editing and saving you need to run remodel run get-models.lua , that saves every model to separate file. And rojo syncs it to your running Game.rblx.
  • Configure VS Code and start Rojo (from VS Code footer)
  • From Roblox Studio->Plugins->Rojo click connect

Tools

  • Rojo, a build system
  • Foreman, a toolchain manager
  • Remodel, a deployment manager and multitool
  • Tarmac, an asset manager
    • tarmac sync --target roblox --auth ROBLOSECURITY

Tools installed using cargo. See each repo Readme for details.

VS Code Configuration

There is nice tutorial in medium also: Roblox Development in Visual Studio Code

2 Likes

Made world bigger with more ‘rooms’. Only first and simplest maze is unlocked at first. You have to solve mazes and collect coins to open bigger mazes.

Screenshots

Maze World Maze World Maze World Maze World Maze World Maze World Maze World Maze World Maze World Maze World Maze World

New Game functionality

  • Dynamically generated mazes. Generate random items inside of maze
  • Notifications system
  • Sounds for coin collecting, daily reward notification, button click
  • Trails to pets
  • Locked rooms, unlock for coins
  • Add clickable E indicator/button to workspace
  • Uses StreamingEnabled, content is loaded as needed.
  • Custom loading screen
1 Like

I’ve encountered a problem:

I instantiated a server of Maze World. Some time later, a friend of mine joined. I then had to rejoin as owed to a problem with one of the shop UI windows. I wasn’t able to do so until that friend left (hence the server shutting down) because the loading screen gets stuck at ‘100%’.

Thanks for the feedback.
What was wrong with Shop Window. I know close button is quite small, and sometimes overlayed with text. I will improve that. Perhaps this was due shop items IDs changed. You might have something in inventory that is not supported anymore. I will fix that.
Loading screen should disappear if character is loaded. I will check if there might be some edge case that makes it crash.

I’m referring to the purple button on the bottom. All I recall purchasing are the first- and second-tier speed boosts. I’ve also noticed that the faster you go, the more likely it is that the server doesn’t recognise when you touch a pile of coins.

I am a little confused. I don’t have a purple button on the bottom of the shop/inventory window:

Currently, yes, too much speed means fewer coins. I have added it to my TODO list. Another option was to call it a feature: “Leave some for others also” :smiley:

I’m referring to when the shop is closed. There’re two buttons: the one with a play symbol and the one that looks like a filing bin. The latter is what’s causing me problems.

I see. This should be fixed now.

1 Like

I’d actually played this game long before I read the topic!

I’m not a fan of the water maze, which is the only reason why I hadn’t played it again. But I’m gonna give it another shot! :smile:

Yeah, water looked weird, so replaced with sand. Hope it’s better now.
Any feedback is appreciated.

1 Like

The game is a lot better than when I played last time! I like how you can unlock different levels! If there was one thing, I would make it more obvious that you can go to other islands through the obby thing, because I couldn’t tell at first. Otherwise, great!
EDIT: When you push “r” in chat even it opens some weird GUI. It’s really annoying, is there a way to disable this?

Thanks for your feedback.
Fixed keyboard shortcuts problem. Replaced UserInputService with ContextActionService.
Q - opens shop
R - opens inventory
E - buys ‘rooms’ if near the doors
Currently, shop and inventory are almost the same, but at some point, that is going to change.

1 Like

Hi, i really wana get the current version, but i dont understand how.
please message me on the dev forum. ill explain more there!

I use Sourctree app for managing git repos. And with that you download source code. And if there is updates to code then you press “pull” button.
You can explain your problem more.

i dont get it at all. its all confusing to me. please message me on the devforum

Added plugin for generating mazes.

The pain for me was reloading a plugin. At first, needed to restart Studio to get load the new version made with Rojo.
There is a beta feature for that, sadly it was taken away: Plugin Debugging: New Beta Feature! - #37 by AlgyLacey
Luckily, found a way to reload the plugin with Rojo. The original script was taken from https://github.com/tiffany352/Roblox-Tag-Editor/blob/master/src/Loader.server.lua
and modified a bit.

The source is located: maze-world/plugin at master ¡ MayGo/maze-world ¡ GitHub
In Roblox: https://www.roblox.com/library/5749619053/MazeGenerator

Info

This is a Roblox plugin where you can generate maze with configurable size, materials and options. It will be generated to selected part or workspace if nothing is selected. You can even rotate object and maze is generated at a angle.

Screenshots

Maze World

Maze World

Build plugin

  • run script ./script/build.sh . To create plugin .rbxm file to current dir and to Roblox Studio plugins folder

Publish plugin

  • drag created .rbxm file to empty project Explorer. Right click and ‘Publish as plugin’

Development

Option 1

  • Open new place and start up Rojo.
  • Right click on ServerStorage.MazeGenerator folder and ‘Save as Local plugin’
  • Now local plugin reloads on code change.

Option 2

  • run yarn build or npm build or ./script/build.sh
  • Open new place and start up Rojo.
  • Now local plugin reloads on code change.

Really cool! I’ve played this game before on an alt, it’s pretty cool, also you should move this topic to Community Resources instead of Cool Creations.

Added simple voting. To vote for light (open maze) or dark (closed and with some lightning) mode.
Everything is still randomly generated. Will add maze generator script changes to Maze Generator plugin also at some point.

Dark maze from inside:

Also added Horror Maze (Halloween) that is filled with scary stuff from Roblox models. Models are triggered when getting close and will move, have sound and flickering light. Also added random sound triggers and random stuff falling from ceiling triggers. Maze is filled with treasures and monsters that take life (not much). The finish is not marked with ‘Finish’. If you get there you know it is finish and there is a clue what you have to do to finish.

The maze itself is built with Maze Generator plugin and sculpted with terrain tools to look like a mountain or big rock.