Mykaelos

Where we learn to design a better game.

Friday, January 13, 2017

Where I've been, and Clearing my Guilt of Dungeon Clicker Heroes

So lets talk about Dungeon Clicker Heroes. But first, some background of the last year or so.

I started making Dungeon Clicker Heroes some time in November of 2015. It was my passion project at the time. I was making fantastic progress implementing tons of features and damn near finishing all of the core features. I ran into bad performance on the actual Android devices, and I was struggling to find a good solution. I was going to have to refactor how all of the sprites were loaded and stored in Unity to use asset packs instead of the Resources folder, because I needed sprite batching.

However, I both had no idea what I was doing, and I was exhausted. I was doing all of my gamedev at 5am every morning, so I could get it done before my day job at 9am. Then I would come home to a house in disarray, and a wife and 1 year old daughter that both needed my love. I was sacrificing everything for a few gamedev hours every morning. I kind of lost contact with my friends, family, and everything else. I loved the great strides I was making, but I was chronically tired. I wouldn't be able to keep this up forever.

Around February or March, Diablo 3's next season started, and a friend at work invited me to join him for it. I don't think I had the willpower to say no at that point.

I invited the gamenight guys to play too. It was a blast. We blasted through the season, and I was actually able to get the Conquest level completed for an extra stash space. I had pretty much given up on gamedev at the time.

I kept trying to do game jams from time to time, but they always conflicted with my wife's work schedule (meaning I had to watch my daughter), or I simply couldn't get the time needed to seriously invest. In the past, my wife has taken our daughter to IL to visit family, so that I could focus 100% on gamedev for a few days at a time. But there was really never an opportunity this year.

Starving creatively, I ended up starting a new project: making a YouTube family vlog. I recorded my daughter's second birthday in may, and then over the next few months, learned how to edit videos, and how to YouTube. We launched Fun with Frank in August. It was fantastic fun, and a really interesting experience. It was also brutally hard to keep creating and editing videos as fast as possible. I pretty much devoted all of my time to making new videos, just like I had before for gamedev.

We tried to start making daily videos, knowing that the best way to grow on YouTube was to really have a daily presence, but holy wow that was way too much. I was able to keep that up for a few weeks until Thanksgiving, where it was just too much to make videos during the holiday. We took a break for a week, and tried again with Vlogmas (Daily videos up to Christmas). I lasted about five days until my wife had to work about 40 hours in one week. That meant I had to get to my day job by 6am, just so I could get home by 2pm to watch my daughter. It killed our momentum, and our Vlogmas. I still recorded, but I haven't made a video since.

I'm getting the gamedev itch again. Dungeon Clicker Heroes is looking pretty good. And wow is it close to done. But I have some grievances I really need to talk about.

I'm kind of embarrassed of the game, because I copied a lot of it's mechanics from another game I really liked at the time, Dungeon Loot. Dungeon Loot is a super fun little Android game, but at the time I was starting DCH, it had several bugs, flawed mechanics, and just frustrated the hell out of me that it could have been sooooo much better. It was a really simple game, and I realized it was completely in my skill level. I decided I would be the one to make a better Dungeon Loot.

After already developing for a few months, I found that Dungeon Loot was actually already based off of another game, Dungelot. Dungelot was also a pretty good game, but struggled with bugs and mechanic issues too! AND Dungelot 2 had already come out, and it was just meh. The character of the game had changed and lost a lot of the charisma of the first one. So I got REALLY fired up. I was going to do this, if not for myself, then for others to enjoy!

But during development, I fought with myself on the honor of this. To wholesale borrow the block clearing mechanics, and RPG aspects to it. I still struggle with it today, and actually, this is the reason I'm making this post. I need to be ok with what I'm doing, and I need to feel good about what I'm making. Mechanics are not copyrighted for a reason, otherwise we'd literally only have one FPS or one RTS. It is totally viable to make a copycat game, especially for a new developer. But most importantly, I'm not copying their games. DCH will be a unique take on the genre. I have many changes that will bring a lot to player enablement and the gameplay as a whole. Also, I'm definitely not using any of their art/sounds/music/etc which would be stealing. I just need to get over this feeling of embarrassment that I'm copying similar mechanics to these games. Considering Dungeon Loot already copied Dungelot's mechanics, and I've found other games who have borrowed them as well, other's clearly don't have this problem.

So I'm writing this long-winded post because I need to get this off my chest if I'm going to continue working on DCH. Really, I just want you, dear reader, to understand why I'm making DCH, and to not immediately assume I was cloning Dungelot or Dungeon Loot, but trying to add my own take on the block clearing RPG genre.

Monday, October 12, 2015

Retrospective: Coin Block Clicker

Play Coin Block Clicker!

Made for Ludum Dare 33 Jam: Coin Block Clicker
- Finished August 24th, 2015
- Additional Work finished October 8th, 2015

The Good

- Dialog/Writing - I really pushed myself this game. Writing is not my strong suit, and somehow I decided that this game would center entirely around dialog and narrative. I'm really proud of what I made, and I can even feel that I got much better at writing narrative. And it was actually quite fun too!
- Great user experience - I really focused on a minimal UI and ways to make the game very available to everyone. It isn't perfect by any means, but I did a pretty good job guiding the user through the experience and making everything as obvious as possible. I cut a lot of stuff to get this done, but I think it was worth it.

The Bad

- The project dragged on. - Right after I finished the game jam, I started work on finishing the game and adding everything that had to be cut for the game jam. I foolishly started work on the hardest part and messed up all of my upgrade balances. This locked me into finishing all of the dialog and upgrades before I could push an incremental build. This hurt so much because none of my progress was visible to the player until this massive project was done.
- NPAPI's death - I knew it was coming. I had know about Chrome dropping support of NPAPI (and thus Unity Web Player) for months, but I had forgotten about it, and I certainly didn't realize it was going to happen halfway through the Ludum Dare voting period. I scrambled to push a WebGL build, which had several pain points (setting a memory maximum??) that I had to work through.

The Lesson

- I should have been far more prepared for the switch from NPAPI to WebGL. Sadly, this also affects all of my previous Unity Web Player games, and I'll need to go back and rebuild them at some point. In the future, I'll be sure to plan in major events like this, especially when they happen during a game jam!
- I'm going to focus on incremental additions to my games, instead of massive rewrites. This is super important because I need to remain agile in everything that I do. There is only one 'me', and my time is very limited. When a project drags on, it can be exhausting not just for the project itself, but for game dev in general. I'm going to try to have a new build available every week for whatever game I'm working on. This forces me to keep my improvement small and successful, and I can get feedback immediately. Honestly, it's no different than a video game. Rewarding players in a timely fashion is important to make the entire experience rewarding and to help drive them forward to the next task/reward.
- Learning a new skill is HARD. It took a lot of time and editing to write the dialog and plan the scenes for Coin Block Clicker. But game jams are a perfect time to focus on improving one skill. Also, I would have really loved to put music in Coin Block Clicker, but I didn't want to just use a song from Incompetech again. I wanted to customize the experience, even if my music was poor. I tried making a song, but it simply was not up to my standards of quality. Working on two new skills for one game can seriously slow down progress and be quite demoralizing. I'm going to have to practice a lot to get much better at making my own music. I'll have to look into making music for one of my next game jams to really force myself to face the issue.

Tuesday, August 4, 2015

Retrospective: Flee the Darkness!

Play Flee the Darkness!


Indies VS Gamers GameJam
Started: July 16th, 2015 11pm CST
Ended: July 19th, 2015 11pm CST
Voting Ended: July 26th, 2015 11pm CST
Rules:
- Theme was Arcade
- 72 hours to make a video game.
- Create all new visual assets and code during  the jam.
- Fonts, sounds and music can be from outside sources.
- Must implement GameJolt's Leaderboard API and include one leaderboard.

The Good

I actually prepared for the game jam this time! Knowing that a leaderboard was mandatory, I decided to add one to Edgar's Adventure to test out how it works. I had been meaning to add a leaderboard to Edgar's Adventure for a few months, but I've been working on a lot of projects and Edgar's Adventure was pretty much complete. So this game jam ended up being a great excuse to finally get that done. It wasn't hard thanks to the Unity GameJolt API. I'm glad I did it because it gave me peace of mind to know that it would be trivial to implement during the game jam.

I also studied the winners of the previous game jam (Indies VS PewDiePie) and took notes of what I thought made them the winners (blog post to come). I then wrote down some game ideas that would work well with a leaderboard, so that the idea phase would go quicker. I didn't know that Arcade would be the theme, but considering the leaderboard requirement, it didn't surprise me, and most of the ideas I had come up with were very arcadey in nature anyways.

I did my best to block out everything in my schedule for those 72 hours so that I would have the maximum amount of time and energy available to me. I even caught up on my sleep during the week leading up to it, just to maximize everything I could.

I went and finally purchased a proper art tool Aseprite. I knew that I would be making pixel graphics and it was just too painful to make them in Paint.net. I used Piskel for Elimination Communication which was amazing in comparison to Paint.net, but it has a few bugs and a few missing features that made it hard to work with. Aseprite was simply amazing once I learned all of the key commands and figured out my workflow. For EC, I made two characters (Avatar and toilets) which took me about an hour for the toilet, but closer to four hours for the Avatar and its four frame walk animation. As a comparison, it only took me an hour per avatar in FTD and each one had a two to three walk animation. And I was able to get the custom art for the intro screen with about a half hour per avatar. The whopping 10 dollars for Aseprite has already paid for itself by just making pixel art fun!

I implemented as many juicy tricks as I could (explosions, particle effects, sounds, screen shake, animations, lighting). This made Flee the Darkness! my most graphically advanced and satisfying game to date.

Finally, I knew that the game icon was literally the most important point to get people to play my game, so I purposely designed custom art for the main menu that I could use for the icon to really catch the eye of folks scrolling down the list of hundreds of games. Edgar's adventure had all of 11 ratings and maybe 50 plays at the end of the previous game jam, where Flee the Darkness! had 25 ratings and 300 plays by the time the voting was over. So maybe not that large of a spike, but I didn't do any marketing this time. This is all from organic traffic. So a pretty solid increase for only a little extra work and planning. It will be interesting to see how FTD does over the next few months.

tl;dr: Be prepared, research previous winners, have a good icon.

The Bad

Sweet Bananas DO NOT USE TWO BOX2D COLLIDERS ON THE SAME GAME OBJECT. So, nothing like a game breaking bug that happens very rarely in the editor, but happens upwards of 50% of the time in the plugin. What happened was that, randomly, the avatar would be locked to the center of the screen (0, 0), unable to move or do anything. The game was literally unplayable (movement is the only player action during gameplay). I'm pretty sure this is why I have a few 1 and 2 star votes. And I'm pretty sure this is why I was firmly stuck at a 3.8 rating for most of the voting period. It kind of drove me nuts that I couldn't update the game for the whole week (the build is locked until after the voting period). I had used two colliders because I wanted one to be a trigger to trigger the pickups and one normal collider for running into barrels and the walls. My theory on why the player wasn't able to move was that the normal colliders was being initialized as super large (because maybe the second collider scaled it or something) and then the avatar was always colliding with the border colliders I have set up to prevent the avatar from going off screen. This kind of actually happened to me again when I tried to clean up the Darkness, because it has two colliders, one trigger to cause the damage over time to the avatar if they stay inside the Darkness, and another to be knocked back by the Light bullets. However, this new bug would cause the Darkness to reposition to (0, 0, 0) which would instantly cause a game over (the game can end if the Darkness moves to the right and fills the screen). I didn't think this would be a problem with the Darkness, because the DOT collider was on a child game object (so that I could rotate the angle of the collider to align with the edge of the Darkness). However, it seems that removing these second colliders has fixed the problem for both bugs, although it's hard to tell because both bugs only occurred randomly in the first place.

I probably should have added screenshots and a video of the game to the game page. I still haven't. I've been working so hard on this game, I'm a bit worn out.

The Lesson

  1. Play test your game, especially the built version. When using a 3rd party engine, you never know what you might find.
  2. Spending a little extra time to make a proper icon will pay for itself.
  3. Look at what other people are doing. The people who won the game jam are excellent mentors on how you can improve your craft. 
  4. A little preparation goes a long way. You may not be able to create assets or write code before the jam, but there's still plenty of things you can do to be prepared for the challenge ahead.

Sunday, June 14, 2015

Frankie's Baby Games


My one year-old daughter Frankie loves my phone. It's shiny and glowy and makes fun noises, and it's daddy's. Daddy doesn't mind when Frank plays on his phone, he just doesn't want her to delete emails or do random stuff on his phone, and it sure would be nice to have her learn from the experience too. So daddy searched the play store for games for his one year-old daughter, and what he found disappointed him.

The games weren't that bad, but were not really designed well for babies. Most had:
  • Too many settings
  • Buttons that were easy to accidentally tap
  • Home and Back buttons not hidden
  • BANNER ADS
  • INTERSTITIAL ADS (popup full screen ads)

About the ads real quick: I realize that a developer has to be paid. I sympathize fully. But putting ads in a game meant for babies, is essentially preying on a child's need to touch everything. This isn't good for parents (because it sends the kid off to a website for whatever ad they tapped), this isn't good for children (I certainly don't want my daughter marketed to), and this isn't even good for the ad networks (odd stance, but hear me out: these ad taps aren't real taps, the child certainly doesn't know what they're tapping on, which is technically devaluing ad revenue for everyone). I'm sure these ads can bring in quite a bit of money, just from a child's random tapping.

I did notice a few games that did ads right. They placed the ads on only the menu and settings screens, completely avoiding the gameplay screens. And they locked down the gameplay screens so that the child couldn't navigate to the settings screen without the help of an adult. Essentially, the ads were targeting the parents and not the children.

The other thing that bothered me was how easy it was for the child to navigate away from the game play. The Home and Back buttons still on the screen is a bummer. Android 4.4 introduced Immersive Full-Screen mode that will hide these buttons unless the user swipes from the edge of the screen. Even settings buttons are trouble because the child could end up in a place where they don't know how to get back to the game. For a one year-old, they just don't need that many features in their game to require a settings page.

Frankie's Baby Games is Born

So I decided that it would be fun to try and make some games that would be age appropriate for Frankie as she grew up. Since she just recently turned one, I'm calling them Frankie's Baby Games. They're aimed at children less than two years old.

Features I'll be targeting:
  • Super simple touch controls. It seems that children this age are still learning their fine motor skills and can barely aim their touch. Just slapping the phone screen is a win for them, so the games need to response to touch anywhere, and work with multitouch. 
  • No escape buttons. Obvious, but the entire screen is a danger zone for touching. The Immersive Full-Screen mode should be enough.
  • Juiciness. This is true of any game, but especially games for children because they interact with their world with their senses more so than their mind. The world needs to react back in as many ways as possible.
  • Opportunities for learning. I want these games to provide the parent (you and me) opportunities to teach their child about the world. For this target age, even just identifying colors is probably good enough, but I'll be looking for ways to make these games teaching opportunities.

I'm excited to see what my daughter thinks of her daddy making games for her, and I'm excited to have side projects that have a purpose. Frankie already really enjoys playing with our first game, Piano. It should be interesting to see where this all goes.

Monday, November 24, 2014

Edgar's Adventure Immediate Post-mortem

I don't even know where to start.

As usual, I was rushing to make the submission deadline, and I had to cut most of the juiciness-features that I needed to really make this game feel great.

Failings:

  • Dragged my feet when starting, losing a ton of time.
  • Spent time making barrel rolling animation, that isn't even visible because of the lack of color contrast.
  • Music is hard.
  • Creature animations are REALLY hard.
  • Bugs, bugs everywhere...
  • I really wanted to add barrel explosions, score multiplier, Edgar's rotation, and maybe shadows.
  • The GUI is ridiculously plain.
  • Starting to submit 4 minutes before the jam closes is a really bad idea, especially when you have to turn your account into a developer account, add screen shots and a thumbnail, and a few other shenanigans before the game can be made active for the jam.

Successes:
  • The game is technically finished and playable. My third public game.
  • It was successfully submitted for the Indies VS PewDiePie game jam in time.
  • It has animations! I haven't made pixel animations since... college?
  • The art isn't too bad. Some of the best I've made, and certainly the fastest I've made.
  • The music is pretty good, and not just the usual wholesale borrowing from incompetech.
  • The game is surprisingly fun.

Lessons learned:
  • Music and sound continue to amaze me on how vital they are for a holistic experience.
  • Sound effects can be skipped if absolutely necessary, but music cannot.
  • Smaller and simple pixel graphics are better than more complex ones, it just doesn't look like it when making the graphics, because I have the image blown up to the size of my monitor. Everything looks weird when magnified by 2000%.
  • Stub out the game submission page first. You never know what surprises you might find.
  • Take more development screenshots. It's fun to see the evolution of the game.
  • Youtube is my greatest weakness.
  • Game mechanics are generally the easiest thing for me to make, so front-loading my work with them is a good way to get myself invested in the project.
  • I always feel great when finishing a game.
  • I need to do more game jams.
  • And take them seriously.

Overall it was a positive experience, albeit painful. Now it's time to find out what other people think about my game.