Last month I talked about Midnight Journey and me sucking at Level Design, I also said working on it wasn’t very interesting to me anymore because Level Design is not something I’m particularly interested into and I don’t really want to spend my time on it, so the best decision here was to give up Midnight Journey. Hooray! I canceled one more game project!
I felt I needed to reevaluate what games I wanted to work on because I’ve blown scope or started working on something I couldn’t really accomplish on my last 3 or 4 games. This worries me a lot because I thought I was over these mistakes already after releasing two (simple, but released!) mobile games. So I went a bit hardcore, did some research and wrote a list of limitations I will work with.
List of Limitations to not blow your scope:
No Level Design.
No Narrative (or dialogue, or cutscenes).
No multiplayer or networking.
2 to 3 month projects.
Design around a theme.
Progression means ramping difficulty of core game loop.
So that’s when I decided to work on my new game, Aglarond. Aglarond is a simple roguelike but with enhanced game feel and pretty graphics. This should be in scope because there is literally tutorials for people to create roguelikes in 1 or 2 weeks, so I do believe it’s feasible.
If you wanna know, these are all the game ideas I came up with when working around those limitations. There’s a big chance actually I get to work on more of them if I don’t procrastinate and don’t blow my scope again.
Turn-Based Combat: Something that would have a combat-system like Pokémon and the game would be about facing enemies one after the other until you die (It’s a Pokemon Roguelike!)
Card Game: Something like a deck-building roguelike (it would be very simple and I would search art packs or open art to see if it was feasible art-wise), you would start with a deck, defeat an enemy, after every enemy defeated you choose some cards to add to your deck, do that until you lose (It’s a Hearthstone Roguelike!)
Tetris Attack Style: One type of game I tried working a long time ago was a “puzzle” similar to Tetris Attack and Pokémon Puzzle Challenge, it is similar to a match-3 game but I think they are more interesting. So I thought of making a game using this mechanic where you could face enemy after enemy and difficulty go up for every enemy (It’s a Tetris Attack Roguelike!)
Incremental Game: I worked on Pizza Clicker a while ago and writing an Incremental system is something I still want to do again and make it better, but I would need a theme for that.
Veteran Bros: A Couch Co-Op shooter where one player moves and the other shoots, the thing is that it would be two characters, one in a wheelchair using the gun and another character pushing the wheelchair.
Insanely Juiced Rock Paper Scissors: That’s the Joke. It would be like battles, but the battles are rock paper scissors, and every time you win or lose you takes damage until someone loses the match. Imagine that but extremely juiced.
Anyway, that’s it for this month! See you in the next one and you can follow me on Twitter if you want!
Oh my god, it’s already that time of the month again, the month was fulfilled with unfocused work, many different projects, many different experimentations and my attention divided into classes, capstones and personal projects.
This month I will have to narrow down what I’m working on at school and start focusing more to get more interesting projects going on, but at the time I’m just enjoying the experience of being able to work on games all day every day and being able to explore different things.
Setting these aside, here is a brief overview of what I worked on this month!
We Broke O.R.B.Y
I briefly talked about this project last month, this little game had 6 people working on and we did a two-level 3D platformer prototype for the Research and Team Dynamics class. In the video, you can see the second level being played by me!
My main contributions to this project were the character controller and the camera, I know the camera looks bad, I’m sorry.
And this is the result of the “Make a Jump” assignment, I tried copying the exact same feel as Super Mario Bros 3 and added a few of my own touches! So it has a similar feel but not quite the exact same.
I learned a lot by reverse engineering a game, I made many improvements on my previous platformer engine and these changes actually were incorporated in Midnight Journey.
Top Down Adventure
After the jump assignment, my next task is creating a top-down adventure, I talked to some people who went through this task and read the documentation and realized I could make something very based on Pokémon, which is something that is on my backlog for a long time already.
So I had this idea of dungeon exploring roguelike where the combat is based on Pokemon and I have to do it in 1 month. Sounds like a very sane plan!
One of the nice things of this month is that I had a Summer Break (that lasted a glorious whole week) and I wanted to make a prototype this week. So I got into my backlog of mechanics and found D.S.L.R.
D.S.L.R. is a game where you are a Forensic Photographer and have to investigate murders, the trick is, the pictures you take of the crime scene shows the crime scene at the moment of the crime.
The prototype is just about taking pictures and seeing them on the camera, but hey, it’s something.
So finally we arrive at Midnight Journey, the game I’m really working on as a project, my goal with this one is to be a full platformer game and I’m aiming at about 1 hour of gameplay, just something so I can release. At this point, I really feel like I need to release a platformer commercially.
I will write more in-depth Devlog posts about this one, these are going to be done on Fourth Dimension devlog! But I will link everything here.
I decided to make Midnight Journey very heavy on Wall Jump, you are going to explore a tower and it makes sense to have a lot of verticality.
Here is a quick list of some things I’ve done this month for this project, I won’t be getting into much detail because this post is damn long already!
I’ve created the Pause Menu, which will feature a map of the tower, the menu changes where it appears based on where the character is on the screen, I thought this would be a nice touch. I’m planning to have an animation on the character where they would be looking at a map or something like this.
Created the Main Menu finally! I want the “created by Guilherme de Oliveira” thing on the main menu to make me seem more important lol
Made some Level Design for the initial segment of the game! This would work as a tutorial and aims to teach you how to use the jump effectively.
I’ve added InControl and reworked the Input system for the game;
Reworked the platformer engine, incorporating improvements from Jumpy Jump;
Reworked Wall Jump so now it feels better;
Added a Dialogue System;
Added an Environmental Notes System;
Started writing the notes the player will find on the environment.
Summarizing it all, a lot of things were done this month, there are still some other things that are under NDA and I can’t really be talking about it here, but I feel like I didn’t focus on anything, I’m fine with that at the moment because I’m working on 3 capstones, classes and personal projects, but in 1 month I will have to decide on just 1 capstone and then I believe I will be able to have more quality and not so many quantities.
This month I realized I should start working on a portfolio, I should have a decent portfolio and keep it constantly updated, I also want to do more tech posts on my other blog where I get into code specific stuff and the line of thought of how I developed some features.
This is why I have gifs or videos for everything, I am making some kind of library of media to use on my portfolio.
So next month I want to have:
1 Portfolio Piece: I want to write about the development of platformers games, I’ve worked on 6 platformers mechanics to this day: Secludere, Journey to the Light, happily(never)after, which were game jam games, JumpyJump, which was an assignment and Midnight Journey and Freshman’s Quest, which are games that are under development – I want to write about how I first did it, how iterating on it was important and how the code looks like after all the iteration, it will also have some handful tips on how to make a platformer feel good.
1 Tech Blog Post: For one of the capstones I got to work on a Billiards prototype, and getting the stick rotation around the ball was something that involved some interesting math and code stuff, I want to write a tech post about that.
As I said on my last update, now I’m studying Game Design Master’s at Full Sail and a lot of things are going on here, also last month I said I was going to work on a new platformer game, Midnight Journey.
But before getting into all game related stuff, a paragraph about school.
So at Full Sail, you have what is called a “Capstone Project” which involves you working somewhere in University for the last 8 months of the program, there are 5 capstones in total. 2 works just like a real studio, one focuses on bigger projects and one focuses on smaller and faster projects, one is a research lab for user experience and two are focused on Producer activities.
Before Capstone, you do what is called “shadowing”, where you are not officially working there but you go there and work there, the thing is that I’m shadowing 4 of the studios and almost all of my time is going to them!! I would show things here if it wasn’t NDA related, in fact, 1 doesn’t have an NDA and resulted in a cool portfolio piece for me, I’m going to talk about that.
Yes, I have to make games as homework.
Month 2 class is “Research on Team Dynamics” and, as the name implies, is about working in teams, so, what happens in a team dynamics class on game design masters? you get into a team and make games!
That’s when the first 3D platformer I’ve ever worked on was born.
My team consists of 2 designers, which are designing different levels and doing producer work, 1 3D artist and 2 programmers (I’m one of them!) – I programmed the player controller, it was interesting how much of the 2D Platformers knowledge translated to 3D, I could achieve something I’m happy with on my first try. There are lots to improve, but it is a 3D platformer that at least feels ok.
I will be working on that until the end of the month to get a better feel on the player controller and figure out the camera.
Make a Jump.
One of the capstones gave me a task in order to understand my problem-solving skills and see a little bit of my code. The task? “Make a Jump – Pick a game, and make a jump”.
ME? MAKING A JUMP? I’VE MADE 4 2D PLATFORMERS BACK TO BACK, I WILL MAKE THE BEST JUMP THIS GUY WILL EVER SEE.
That’s what I thought on that day.
But seriously, there were still plenty of things for me to learn on the land of 2D platformers, this time I tried something new: describing the player jump in function of:
height of the peak of the jump;
distance on x-axis to the peak of the jump;
character’s movement speed.
And oh boy, I think I’ve reached the perfect formula for programming 2D platformers. I’ve decided to pick Super Mario Bros 3 and try to get its feel.
The first thing I wanted to do right is the damping, how Mario takes its time to change directions and stop moving, after that, I decided I could use some beautiful 2D art.
At this point, the task of “making a jump” was pretty much complete, but I decided to play some more, I liked the feel and the code so much that maybe I could use it as a Gameplay Programming portfolio piece, maybe I can use the code in the future for a 48h game jam.
So the end result is this:
I’m really proud of this platforming code, to be honest, and it’s Open Source!
Midnight Journey is a platformer with exploration elements.
Rooms that changes.
Explore a tower collecting pieces of a story to know what happened there.
The first thing I wanted to do to get this game up and running was (a) basic platforming, which is already outdated since I’ve started this before the Super Mario Bros 3 reverse engineering, I will rewrite that, and (b) THAT camera transition (you know which one I’m talking about)
After that, the next step I wanted was to get the “Rooms that changes” part of the equation done, I did that based on my level generation for the Mobile Roguelike, which maps individual colors of an image into specific objects to instantiate. But I made a very welcome and important change, it doesn’t instantiate objects anymore, it has a tilemap to work on and it maps color to a tile and fills the tilemap according to the template. And also, I’ve incorporated rule tiles into it.
The last thing I’ve worked on this game was an aesthetic element, I want the player to have a cape, and I want its behavior to be interesting, it should follow the player and really act as a cloth, think something similar to Madeline’s hair in Celeste.
I wanted the cape to have the same effect, but it should be bigger and more visible, so I believe it would be something very interesting to have on this game. I started prototyping possible solutions and this is what I have.
Right now it is just some round sprites that follow the player with an offset and some frames of delay, but I want to use the glorious power of Trigonometry to add an interesting behavior to them and after that, I would make it look like a cape and not just a bunch of balls.
So that was it for this monthly update! Now I have a Windows PC and I can record gifs very easily, which is something I always liked to do. It’s way better than trying to describe things, so expect lots of gifs on every update from now on!
Hey there fellow game developers! Time for another monthly update! I think this month wasn’t productive as others were (considering I’m doing game development full time), because of constantly changing focus between projects and also ’cause I’m taking care of some personal things. I’m moving next Tuesday, so lots of banking stuff, health check up, going out with everyone, those sort of things.
I will talk more about the moving thing on a random update, which should be in about 1 or 2 weeks.
So I will quickly write about my projects and focus on the Mobile Roguelike, as it was the only one I had significant progress on.
Freshman’s Quest – Management Talk
Freshman’s Quest is a platformer pixel art game I’m currently working mainly as a programmer with a local small team, we are currently 9 people.
It’s been around 6 months since we started this project and the focus hugely changed since we first started it. So we really needed to stop development a little bit and get to talk.
When it al started, the goal was mainly for it to be a portfolio project for everyone as it is everyone’s first game, without worrying about finances and competitive advantages on other games, but it changed as we generally got a very good response on twitter about it and there are people on the team able and willing to work 30 to 40 hours each week on the project.
And this is a problem because everyone on the team is on a different context right now, some are only able to work 10hrs/week on it, others can put 40hrs/week and everyone had different expectations and emotional investment on the project. So we have to stop and get everyone on the same page, willing to do the same effort and expecting the same from the project.
And also, changing the focus from a portfolio project to a fully comercial game, we have to answer the question everyone is afraid to answer: “What makes your platformer special? Does the world really need another platformer?” – Which is something not always so easy to do.
This is some boring management/team building talk, but it’s part of game development!
I’ve been doing an Internship on GILP Studio since the beginning of January and it is something that made me learn a lot and have some cool opportunities, such as attending GDC!
After doing some work on one of their games, Upside Down , we started another project that was really interesting for me, even though I complained a bit about these kind of work some months ago on an update.
We started building a more generic library with game services, some kind of service that would make really easy to integrate Achievements, Leaderboards, Analytics, ADS, etc… into any game, the idea was to make it open source or publish it on the Asset Store.
This is interesting because I want to develop more mobile games in the future, and having an easy way to add all of those services will come in handy. But I don’t know if I will keep working on it as last Thursday was my last day there (due to the moving thing). At least I have access to the source code and can keep improving it!
Mobile Roguelike – Adding Content!
Oh boy, this game suffered the last months from identity crisis, but after dropping it on the psychiatrist, it finally founds itself.
By dropping it on the psychiatrist I mean I had to write a 25 page Game Design Document and create a Trello board to effectively keep me organized and find out what this game wants to be.
And what it wants to be is really a Mobile Roguelike with a fair complexity, so I came up with these three core foundations for it:
The Emergence experience: A game being emergent means the game have many verbs and many objects that can interact with different verbs. This means that objects can be interacted in a number of ways and maybe you can act on them with 2 or more verbs, leading to multiple ways for achieving a given objective.
The Lord of the Rings experience: The game will be heavily inspired by Lord of the Rings and aesthetic, that means theme, colors, characters and the overall vibe is very the lord of the rings. It is like a Lord of the Rings Roguelike game, there will also be a lot of aesthetic inspiration from The Crypt of the Necrodancer and, of course, Zelda.
The Interesting/Surprise experience: A very important pillar is that on this mobile roguelike the player should always be taking interesting decisions and they should be frequently surprised by the outcomes of their action. A way to achieve this is by the emergent gameplay and more random components on the game.
This ultimately led me to see the game as a complex interaction between systems and a huge part of it is the turn based system, which has Dynamic Actors, Static Actors, Moving Hazards, Tiles, Hazards, etc… The Turn Based System is something I will be focusing a lot on this game because the game is just a consequence of the complexity the system can handle.
And by having a well programmed system that handles a complex environment I can work on future roguelike games, which is something I would really like to do, specially considering I will have to cut a lot of content and functionalities for the mobile roguelike. Maybe I can even target PC and Console for a future game using this system!
I’m really proud of my mobile roguelike game, it dreams so big! I created 6 enemies and 7 hazards on total and I have 5 more enemies and 1 more hazard on my to do list, which I plan to have finished by the next month.
If you want to see all the enemies and hazards I added, you can see on the Fourth Dimension Devlog (this is a direct link to the post) – With a clear vision, a clear plan on what to do and a time constraint I will probably start having more progress on this game to show on the next updates, and probably the updates are going to be focused solely on this game too!
Last quick update I talked about a new platformer controller I was trying, I just want to post a GIF here on it, I’m really excited that I’ve written my own platformer controller from scratch and I can see a possibility of building my own paltformer engine on Unity.
This is something that I will rarely work on, but it is a side side project I’m really having fun with.
That was it for this Monthly Update! Thanks for reading it, you can reach me on twitter or even on Fourth Dimension’s twitter.
As I started to type from an AirBnb room in Sao Paulo, I realized this will be a really, really long update. Lots of things to talk about and some tech details I want to get into. I will try to point what I’m going to talk about on each section of this update, so feel free to read the points you would like.
Where I was last month?
A month seems like a big measure of time, to the point I feel the need to read my last update and remember where I was back then
I took a break from some projects (I didn’t even remember that!)
Made Cult Cultivation for another Weekly Game Jam – Said that I was coding an Idle Framework that I wanted to sell on the Unity Asset Store.
Released an Update for Pizza Clicker (V3.7) and said I was going to get back to it in February.
Said I was working on a new mobile game, temporarily named Mobile Dreamlands.
Announced I started an Internship on a local game dev company
Said I liked to work on Udemy courses
Cult Cultivation, the Idle Game Framework and Pizza Clicker
Yup, I’m grouping all the idle ones in a single topic.
Being very straight to the point here, I’m at that point where someone gets a lot of things to do and can’t handle everything. My original plans was to finish the Idle Framework before the end of February, which I didn’t, so I had to put this on hold.
Also, it’s already February 15th and I haven’t even touched Pizza Clicker V4.
About the Internship
Talking a little more about the Internship, it is on a company called Gilp Studios and I’m working on a game called Upside Down.
The project was originally on Unity 2017.1, we tried to upgrade for the 2018.3 version, everything was broken. Then we tried 2018.2. Everything was broken. Then we settled for 2017.4 LTS and it worked out well. Important Note: The game used to run on 30fps (not locked) and, just by upgrading the version, it runs on ~40fps, which is a good margin and should result in not having frame drops on the live version if we lock on 30fps, which is the default for Android Devices.
Me and the other intern made some things like developing a Colorblindness Mode, which was really well received since the game relies so much on colors. We had to also integrate that into the Localization Module, which was interesting because I had not ever seen how localization worked before. Another thing we made was some Interface Improvement, for example, changing some texts, recompile the Chinese Font to have the Colorblindness Mode in Chinese, adding some juicing on the UI buttons and fixing a transition on the music when you lost the game.
The music on the game was made using FMOD, I had never tried FMOD before, and boy, if you know how regret feels you know how I feel. It is so simple to work with and to integrate with the game to the point you have Dynamic Music very easily. I fell in love with FMOD and want to use it on every project now. In the end the transitions were just some minor transition timing thing, the lesson is that I love FMOD.
After all that I started working on the iOS Port, which is something I always wanted to try and, guess what, every dependency had broken while porting to iOS, I had to upgrade Google Play Games Services from 0.9.39 to 0.9.60, upgrade Firebase Version and Google AdMob version. After doing all that and refactoring some code (thanks #if macros) I finally got it to work on iOS.
After some more refactoring and code writing I managed to integrate Game Services on the game and add a Leaderboard, the remaining tasks would be doing the Achievements and IAP on iOS.
If you plan to release mobiles games, this paragraph is important. I’m currently stuck on the Achievements thing. The thing is that the way achievements works on Google Play and Apple Game Center are different. Google Play Games have three kind of achievements (Locked/Unlocked, Steps, Percentages) whereas Apple Game Center only deals with percentages, and when an achievement reaches 100% it is automatically completed and awarded (which does not happen on Google Play Games). So, how to effectively work with Achievements on Google Play and App Store? The answer is pretty simple! You build your own Achievement System and create interfaces to get percentages for ALL OF THEM, this way you can also display the achievements with your own UI, but that’s not the point. The point is to have your own small achievement system and have interfaces to send their data to Google Play and App Store. It’s really not that complex but needs to be planned ahead.
Anyway, back to what I was doing, Upside Down was originally only for Android, so there’s no underlying achievement system and all the code relies on Google Play. What I’ve done? Nothing. The story reached the present moment. I’m thinking on building an achievement system mirroring the Google Play Achievements and use them for the iOS Version.
These stories are not the most exciting, in fact, as someone who aims to be a Gameplay Programmer, they are pretty boring, but integrating with the stores, having achievements, leaderboards, having analytics with firebase, handling all dependencies and project version are very important tasks, it is that final 5% that gets the attention to your game. These are not really my cup of tea but doing them makes me value the ones who does them (I’m having flashbacks about my last job as a QA right now)
This was not even the longest part of the update.
Announcing Freshman’s Quest
Freshman’s Quest is a pixel platformer take that places on an university/fantasy mixed universe! Follow us on Twitter!
Some months ago I talked about a game development club I was a part of at the University, after a year messing with a lot of different things we started a real project, recently we decided to go public and start to gain some visibility to a project, the next goal is to have 2 polished levels and release a demo.
Here’s and old gameplay footage (the level design and level art are pretty much all different now);
It is a platformer, as simple as it can get. Our team currently consists of 1 Designer, 3 Programmers (which some of them sometimes dabble in art and design), 2 artists (which one of them also do Level Design) and a musician. The inspirations are, obviously, Celeste, Mario, Shovel Knight, Owlboy, Hollow Knight and all the recent games with some kind of platforming action.
The goal is to have a polished finished product and sell it on itch.io or Steam, if possible. The price would no more than $5. As we run to finish and polish the game, now we have to build a website, presskits, trailers, and all those things.
But it is a project that I’m proud of and teached me A LOT on working with groups, something that is really valuable. I’m thinking of setting its own Development Blog and creating a post explaining more about the project, if I don’t do that, I will post on Fourth Dimension Studio Devlog.
Mobile Dreamlands (temporary name) is some sort of mobile turn based roguelike game, the objective is to kill monsters, collect gold and go further down the dungeon. Your “success” is going to be measured by how far on Y axis you go and by how much monsters you kill. The amount of monsters you kill influences the amount of gold your earn.
I wanted to finish this game by the end of February and then work on a PC Roguelike game, which would be Dreamlands, but I ended up liking this project so much that I think I will stick with it until the end of April.
A basic core gameplay loop is done, I still have to polish and add content to it, but the 80% is done there. When I say I want to stick with it for a couple more months I’m saying I want to make it a REAL mobile game. I want to have it on Android and iOS, I want to have leaderboards, achievements, integration with Google Play Games and Apple’s Game Center, I want it to have monetization, but not in an intrusive way (which I hate about mobile games) and I’m even reasoning about searching for publishers, trying something with Gilp would be a good fit as I could make a more friendly contract.
I know that a roguelike mobile game seems a little bit weird but this project could really reflect some of my values on gameplay, how much fun it could give, how it could be a “real game” (i.e. not a casual money grab) on mobile, using ADS and IAP but not in a way that makes your experience worse if you don’t want to watch/spend. On a more personal level, I love turn based games and I’m thinking on having the aesthetics resembling Lord of the Rings, which is also something I love.
Talking about the art, I’m going to have a partnership for the art on Mobile Dreamlands! It is one of the artists from the game above (Freshman’s Quest), her name is Barbara Franco and she has an art studio in my city, called Hovel 102.
About the Monetization, what I’m thinking is pretty straightforward, about watching advertisement, it could give a second chance after watching, giving a temporary buff or maybe doubling the amount of gold in a run. Other than that, the gold is going to be persistent and you can maybe buy temporary buffs (i.e. having 2x gold for a run, 2x damage for a run, 2 turns for a run, more life, etc…), with that, having the option to buy gold with real money is also a thing.
Still on the Monetization topic, I’m thinking on having some sort of “DLCs” – For example, you can pay for $1 a new land with new enemies, new traps, new styles of design, different art, new music, etc…
Another idea is to have an In Game Shop, and my idea with this one (besides the buffs) is to have many different playable characters that can be unlocked with gold. I could make every character have a particular trait (more life, two movements per turn, more damage, etc…), but this is something I’m still thinking about, the real plan with the unlockable characters is to have aesthetically different playable characters, such as elves, dwarves, aliens (??) and maybe I can try the idea of having characters of different color, race and gender to add a little bit of representation on the game.
By working on this game for more time, I could also try to create some music for it, which is something I’ve been studying on the side and really enjoying.
I want to get technical about Mobile Dreamlands. It has basically two big systems: a level generation system and a turn based system. As I stated previously, one of my goals was to have an asset published in 2019, and the Level Generation System is a possible candidate, so I made some extra effort to have something good and reusable.
The Level Generation System
The Level Generation System is composed simply by three scripts: the Room, the RoomInstance and the LevelManager, besides that, there are three ScriptableObjects, the ColorToGameObject, RoomTypeToInstance and RoomGenerationMapping.
Room: It’s the abstract representation of a 9×17 grid, what is important is that it has a type, some examples of types is Start, Easy, Reward, Rest, Medium, Hard, …
RoomInstance: It’s the representation of a room on the Scene, it has a template and a ColorToGameObject – The way it works is that it receives a template, a template is a 9×17 image where each pixel represents a tile (I do them on Photoshop), then the RoomInstance iterates through this image and for each pixel, it gets its color, searches the color on the ColorToGameObject and instantiates the equivalent GameObject for that color, if there’s more than one GameObject, it chooses a random one.
Here’s an example of a template, the way it is configured, every black instantiates a random ground Prefab, the red points instantiates a random enemy and the yellow instantiates a “border”.
LevelManager: The LevelManager is the Big Boss. It has a RoomTypeToInstance and a RoomGenerationMapping – The RoomGenerationMapping is a ScriptableObject that maps a single room into an array of rooms.
When the level is initialized, it just adds a Start Room to the list, after that it searches on the RoomGenerationMapping for the mappings that starts on the Start Room, let’s pretend it adds an Easy Room and a Reward Room, the next step would be searching on the mappings for one that maps a Reward Room on something else.
I do this on the initialization until I have 5 rooms (totally arbitrary number), after that I do the same but on runtime while player progresses.
Having the Rooms List, the Level Manager has to create their Instances, it uses the RoomTypeToInstance to do that – which is a Scriptable Object that matches a room type to a prefab of a room Instance.
I liked the way this system turned out because I can add new rooms, new mappings, add more content simply by creating more ScriptableObjects, without having to hard code the logic. Even someone who doesn’t understand programming could use, although a Level Generation System would totally be aimed for programmers.
Smart pieces of code I couldn’t live without
As you could see, I’ve used a lot of Scriptable Objects lately, it happens that I learned how to use them better recently and I added them everywhere I could on this project. Scriptable Objects are really good for configurations.
Something I’ve been using a lot recently is Linq, a Query/Set Library which helps a lot, all these matches I talked about I’ve made using Linq, but the real smart boy I did this month, the month’s MVP is the RandomOrDefault():
I’ve had this idea when using Linq, the idea is simple, it returns a Random element from an array or a list, the beauty of this code is that it works for both data structures. If the list/array is empty, returns the default for that type.
Anyway, I’ve been writing for more than 2 hours straight. I’ll finish this update here! It was a long long one because I had a lot to report and a lot I wanted to talk about, but hopefully some of the things are useful!
I’ve talked about happily(never)after on the last random update and said I would talk more about it here, but there isn’t anything to say. I don’t know what I was planning to say.
Anyway, it was my fourth platformer in a row, four was a decent number of platformers to code in order to have a certain skill with it. What is more interesting is that the progress can be seen from one to another, I’m even thinking on writing a blog post about it (improvement by iteration, or something like that).
So I decided to do this for the Weekly Game Jam 76, themed ‘Afterlife’. It’s the game I’m most proud of at the moment and I really liked the feel and controls. I liked it so much I was thinking on making a bigger release based on this game. Spoiler alert: It would be a metroidvania roguelike platformer called Midnight Journey.
2019 Game Development Season is open! My first entry is Cult Cultivation, an idle game I made for the Weekly Game jam 78, theme was ‘Grow’.
I’m joining a lot of Game Jams lately, it’s just that I’m enjoying doing small/simple projects and effectively finishing little pieces.
Cult Cultivation is a really simple incremental game with just a few buildings to raise your currency per second.
The real reason for me to build it is that I’m coding an Idle Game Framework on top of Unity. I want to do that so I can easily create those kind of games, a genre I happen to like a lot, and to sell it on the asset store. Selling something on the Asset Store is one of my goals for 2019. To showcase this Idle Framework I’m planning to release two free games under Fourth Dimension Studio that would use it, the first would be a standard idle game (buildings and upgrades) and the second one would be more RPG based, monsters would be exponentially stronger and your “currency” would be your damage.
For our Monthly Pizza News, Pizza Clicker V3.7 is now live on the Play Store – It is a simple update where I added one more upgrade for each building/worker (7 in total); added a new worker that gives you 2 pizzas per second; added some more random upgrades (2 or 3 of those); added 6 more news on the newspaper section and tuned the price of the first upgrades.
I will return to Pizza Clicker only in February (2 weeks from now), my backlog includes adding a better monetization plan, giving more rewards and being less invasive and adding Version 4, which includes 2 new workers, tons of upgrades and news. Hopefully, with V3.7 all code needed for V4 is done, so it is just a matter of designing and adding it into the game.
dreamlands vs mobile dreamlands
I already said I’ve cut the RPG elements from Dreamlands and I would do a mobile game using its Level Generation and Turn Based System. With that in mind, I got me asking myself, what is effectively the difference from Dreamlands and Mobile Dreamlands?
Mobile Dreamlands is, well, some kind of infinite turn based roguelike runner. Dreamlands is an action roguelike with a progression and a hub, aiming to be more of a traditional roguelike (including having random chances of critical/miss on combat) and it would have more content.
To differentiate them even more, I will change the thematic for the Mobile Version (Mobile Dreamlands is just a temporary name by the way) – I’m not sure what it will be but I want it to be more upbeat because I’m tired of doing dark/mysterious/depressing concepts. Dreamlands is Lovecraft inspired so it is going to have plenty of that.
And again, I don’t have nothing to show here yet (I’m VERY late on that), I’ve just adapted the systems to work on mobile.
In some rather unexpected news I’m on an internship now, what is even more unexpected is that it is in a game company, it’s unpaid but it is 4 hours a day and very flexible.
Adding to the positives is that I will be able to learn with more experienced developers (they have this company for 6 years now). Hopefully in no time I will have my name on the credits of a game with more than 100,000 downloads, which is great, another positive point is that this internship gave me the opportunity to go to GDC this year, just speculation, there’s a lot to talk/decide yet, but it would be awesome and I wouldn’t have this opportunity otherwise.
And hey, if I have the opportunity to do an internship, even if it is unpaid, on literally the only game studio in town (Brazil things!), I have to accept, right?
And again I’ve written way more that I should have. It’s just that this month lots of small things happened, for the next I want to have just two things to talk about here: idle framework and mobile dreamlands.
Ayy, it’s that time of the month again, time for me to try to remember everything I did this last month!
The good news is, after complaining about procrastination last month, I’m having 60% of productive time while using the computer. That’s good since I spent most of my day and all of my tasks envolves using my notebook, this includes entertainment and communication.
So this month was pretty great, after working really hard I reached the mark of ten years old so my mom was ok with me going on an adventure with a friend and my pet in order to battle other people’s pets for prestige and money. I also managed to shut down a criminal faction and I’ve beaten the four best trainers in the world, cool right?
At least I wish my life was like this. Just a quick note on Pokemon Let’s Go, Eevee! (besides it being a great game, of course), these games always had those moves like Cut, Surf, Strength, etc. which would only make you waste a move set on your Pokémon, they removed these so called “HMs” for this game and now they work as some kind upgrades, just like in Metroidvanias, you reach a point on the game, earn an upgrade and after that you can reach new areas.
But CUT is not out of my move set!
Y’all remember Dreamlands, right? That roguelike game inspired on Lovecraft, Crypt of the Necrodancer and Bloodborne with RPG elements that would take me 3 months to finish? Yeah… 3 months…
It finally kicked in that I have basically 3 enormous systems interacting in this game, the first one I call Roguelike Level Generator Framework, the second one is the Turn Based System and the last one is the RPG System. It happens that linking the Level Generator and the Turn Based System was not a hard task and it’s decent already. But doing the RPG System, designing the stats and balance is quite challenging. And that’s when I hit the wall.
The decision I took for the moment is to drop the RPG System for a while, of course that Dreamlands isn’t Dreamlands without the RPG, so I’m basically working on another game revolving around the Level Generator and the Turn Based System, but I still don’t have anything to show yet.
I’m thinking on a mobile game similar to an “Infinite Runner”, but turn based and “roguelike” – so there would be some enemies, hazards, traps, etc… The other option is to do a more simple version of Dreamlands for PC, I’m not totally out of this idea.
I’ve seen a certain lecture (I don’t remember which one, sorry) that talks about this approach, you kind of break your game in many different pieces and do a simple game using the first piece, and then another using the first and the second, until eventually you reach your desired game.
It is interesting because when you make a game with that system, you know it works, so if it breaks on the next game, you know it’s something new that was introduced, and (ideally) you won’t have to fix many things on older systems.
The State of the Pizza
Pizza Clicker is on Play Store for quite a while now (Download it here!) and here is a list of what I did on this month updates:
Finally added Upgrades, now you can buy these upgrades that will make your workers or ovens even more efficient in pizza baking;
Added some more pieces of news;
A bunch of fixes (changing how much pizza is earned on down time, balancing some prices, raising some upgrades efficiency, added a visual feedback showing how much pizza you earn for a click and some visual fixes)
I did made a small announcement and sent the game to some people, I’m taking a look on the player behavior and I think I should do something to make the players engage more with the game (also, it was at this point I realized why those mobile games have lootboxes, free gifts every 4 hours, second chances, etc…).
Here’s a list of what I might do in the future:
Add a menu showing more information to the player (how much pizza per click, how much each worker or oven is contributing to your pizza per second);
Have a menu (change the pizzeria’s name, increase/decrease volume, restart game, etc…);
Introduce a new kind of upgrade that when bought, it adds a new worker or a new oven (this will be important for Version 4);
Add more news and more upgrades, of course, these are going to be added throughout the time;
Do some kind of “lootbox” – I want to do this to raise player engagement, but I don’t want to develop a solution that could be seen simply as “cash grab” or something that would force you to watch ADS.
And most importantly, I want to tackle some tasks like SEO Optimization, Play Store Optimization and try reaching a bigger audience with Pizza Clicker.
Something I’m thinking about, that I got by talking to some developers, is taking a break from my projects, so I would return to then in a couple weeks with more energy and a better perspective. Of course I would still work a little bit on Pizza Clicker and have updates, but I wouldn’t effectively create nothing new on this break.
Doing this also would be a good opportunity to study about SEO and Play Store Optimization and Marketing in general, I would also be able to tackle some old activities like making an Idle Game Engine from Pizza Clicker and fixing Journey Light (an old Game Jam game I made).
Now, after failing again at writing a short update and 1000 words later, here I go! Thank you for reading it until this point and I hope you have a good day!