[DevLog] O+

[NOTE: I orignally had the idea of naming this game MO+ but changed it to O+]

Game Synopsis

Test your skill, memory and reflexes to the limit with over 40+ levels and unlock the truth about O+ (originally called MO+ but changed my mind) --> A puzzle game based on simple programming language concepts.

As you progress through the puzzles, you will unlock data that reveals the memories of people in a time of chaos and corruption.

Game Mechanics

MO+ is a puzzle game that takes place in an unconventional virtual development environment where you code by combining containers that are bouncing within the screen. When certain containers collide with each other - something will happen. For example, the screen will turn upside-down etc...

About Me.

Hi, I'm Mo Zhaddul Alam and I'm a 26 year old hobbyist game developer. I always had an interest in coding and, through Unity and C#, I've learned a lot about coding and game development in the past 2 years. I haven't shipped nor finished a game properly but through this GameJam I hope to do so.

So Far...

I've finished some coding and made half-a-prototype with some very basic vector art. I've made a plan of the story- begin-mid and end. I plan to upload images soon so that you have better idea of my game.

Update #1 - Early Days

Good Morning/Afternoon/Evening (depending on where you are) fellow GameDevs. I thought i'd give an update of what I've done so far.

I have created some simple assets to be used in my game. I have also made a simple prototype where I can test out the gameplay mechanics.

Meet the Functions:

Meet the Variables

Some screenshots of the work so far:

Mul() {5} produces more containers:

Rot(10) {5} rotates the screen by 50 degrees clockwise:

ViewPos() {F} inverts the screen.

Timer(){5} pauses everything in place for 5 seconds and Destroy() {F} destroys itself as well as F container.

Each level will contain a mixture of function containers and variable containers. The aim of the level is to clear the field of containers, then you can progress to the next level.

However, you will be unable to progress if you combine a function container with another function container or an incompatible variable container. In such cases an error message will appear onscreen and you would have to restart. An example for an incompatible combination would be Timer() {F} or Mul(){F}.

In terms of the function-variable combinations - I am more or less finished with most of the ones listed above. One or two will need more time like MinMze() {T} which is supposed to minimize the in-game application.

If you have any ideas of functions and/or variables that you think would be a good gameplay mechanic, let me know and i will try to implement it in this game. If you have any questions regarding this soon-to-be-made game, I'll be happy to answer :).

Update #4 #3 Working UI and Tutorial

Hi guys. Hope you guys are enjoying the jam as much as I am. Had the full day off today so managed to get a few things done. There was a few bugs here and there but thankfully, I managed to fix them. So far I have....

Made a level progression system in script

Finished the main menu

Created UI elements

Created a Tutorial Level

Main Menu

Tutorial Level Screenshot (click for video link)

You probably notice that the font in the main menu on the buttons is different from the one in tutorial. I will change this later on. All artwork was created using InkScape. Next up, I will make some Levels (which is the fun part) and then concentrate on the data menu and title screen. Thank you for reading.

I didn't get it from the initial description, but now that I've seen it in action this looks like it could be a really cool mashup of genres, especially in a puzzle game where you can change up the goals on a per-level basis to reward deep understanding of all the functions and what they do.

Thanks! I had the idea of level specific goals. That was one of the first thing I thought of. It's going to be tight to see whether I can implement this as I am assuming it will be a lot of scripting. At the moment the goal for each level is the same - Get rid of all the blocks on the screen.

I made yet more UI stuff. To facilitate progression from one level to another I made a mock-up of some pop-up messages. One to say you've completed the level (module) - the other to say that you haven't or did something wrong.

In addition to this I made roughly 5 levels which gives you an idea of what each function does. It'll take less then 5 minutes to get through this levels. I've made 5 more levels which are more challenging and can take an 30 secs to 3 minute to complete. So that is 10 in total.

I've also updated the lists of functions and what they do. Note that the ones I have crossed out have been abandoned I felt that they didn't do much in terms of gameplay:

VIEWPOS() : When combines with F (false), inverts the screen. With T, reverts back no normal screen position.

TIMER() : combines with a number and freezes time for that many seconds.

TIME(): makes everything fast by a factor of the number it collides with.

MONO() : when combined with T, turns the screen black and white.

SIZEDWN(): Combines with a number and reduces the size of all containers by a factor of that number.

SIZEUP(): Direct opposite of SIZEDWN()

PHYSICS(): Increases gravity in-game when combined with T. Reduces it with F.

VIEWX and VIEWY: Moves screen in x and y position.

DESTROY(): Destroys itself as well as the other variable it makes contact with.

STORE(): Destroys the other variable it makes contact with.

MUL() : can combine with a number and produce multiples of that number. For example MUL() 9 will produce nine ones.

RES(): when combined with a number, it pixelates the screen. The lower the number the more pixels. <-- NEW

EXIT()

I've always found handling Unity UI/GUI, Unity events and combining the two most difficult and this was really important to progress from one level to the next.

Thankfully, with the help of Unity documentations and one or two tutorials I've managed to make something work. Through this process I have developed and understanding and appreciation of events through Unity as well as C#. So its been a huge update for the game!

whoa i agree with the other comment--it's actually pretty cool seeing how you're combining diff mechanics in this puzzle game and it definitely helped me to see the gif in action. i really like the framing of this as a programming language--it's kind of campy and really fun and i think presents a lot of interesting potential.

as a quick note i wanted to mention: the bright green bgs/sprites are a little harsh to look at for more than a few minutes--maybe even inverting this w/ black bg/green text might be easier on the eyes? (and even look pretty cool: like code or something) as a prototype, visuals aren't the most important, but i think it'd be worth experimenting with different colors.

I have been making levels mainly. Other than that I've created a simple countdown timer prior to each level starting. I've also changed the color theme to something more simple and (hopefully) easier on the eyes. I done a little playtesting - My niece said it was better than all green screen :). I've also created a way to adjust the screen brightness.

The main change I made is to the Title. I am going to call this game O+ rather than MO+.

I have a working prototype available, with over 40 levels.

The UI is done. unpolished but done.

I've honored the theme of the Jam and implemented and wrote a story by the theme of memories. The story is about a fictional past where an unknown entity has corrupted all the major computers in the world. Project Phoenix, which is a team created by the government, is investigating the cause and trying to stop this epidemic.

The only thing I need to do is add audio to my game. That's it hopefully.

Playground mode - to familiarize yourself with what all the functions can do. This possibly can be extended to a level editor in the future post-jam.

Minor infrequent elements of horror. My niece didn't get scared though when she was playing the game :(

Dynamic saving after level completion. Dynamic loading on application startup - using JSON. However, I feel like i need to check on different computer to see if this works 100%.

Title screen animations

Thumbnail to display on itch.io

Fixed several bugs.

Building the game was difficult and Unity was not allowing me to deploy the game as a standalone application. Thankfully, the community and discord helped a lot during the whole process. Thanks guys!!

The game will be published soon, after I've done one final quick overview checks for bugs of the build. This will, by no means, be a finished product. I will be expecting bugs and I may intend to keep polishing this game post-jam.

I will regard this as my first ever game that I've built. There will be more to come.

This jam was a great experience for me from start to finish. The community is amazing and kept me motivated. A special thanks organizers and admins who organized this jam. Now, time to try out the entries.