Wednesday, January 31, 2018

From Prototype to Kickstarter

Remember that Untitled prototype I talked about in my last blog post? It started as a simple idea, a cross between A Dark Room and Starbound, where you'd start out knowing very little and doing simple tasks like collecting wood, and slowly work your way up to a more complicated crafting and mining game with lots of systems and even space travel. This is the story of the beginning of the game Aground.

After finishing up a basic alpha version, I showed the prototype to friends, family, and various work in progress feedback threads, and the reaction was mixed. Some people loved it, some people thought it was boring, and the vast majority of players just didn't seem that interested in the game. While I thought the game was interesting, it wouldn't be the first time I enjoyed a game I made and others thought it was terrible *cough*ADventureLib*cough*.

Not sure what to do in order to improve the game, we tried contacting publishers for both monetary support and for feedback and testing. Once again, we got little interest.

Disheartened, we started wondering if Aground simply wasn't a good game. If the core's no good, no amount of additional features and work will improve it, and sometimes, as sad as it is, the best decision is to trash the project and start something new (it's bad to trash projects too early for some new and exciting idea, but it's also bad to sink tons of time and money into a project doomed to failure).

Not quite ready to give up on the idea, and having already spent a lot of time on the alpha version of the game, we decided to fix it up to the point we didn't mind sharing it publicly and post it for free. Worst case, at least it would be out there and the time we spent on the project wouldn't be for nothing. We launched this version of the game on October 24th.

After our experiences with the prototype, we had no expectations for the game. So, we were pleasantly surprised when we saw that the game was immediately well received. Aground quickly took off, and soon had more plays and a better rating than any of our past games! From disheartened, our motivation sky rocketed, and we realized we might have stumbled upon quite the gem.
It's important to remember that just because you haven't found your audience yet, that doesn't mean your audience doesn't exist.
We also learned something important. We were getting luke-warm feedback for the game because the people who we shared the game with weren't our target audience. Because the testers were mainly game developers and people I knew, it wasn't a good indicator of players on portals like Newgrounds and Kongregate. In a way, we got lucky that our last attempt before we gave up on the project found our audience, as there are many other potential audiences that don't frequent those sites. It's important to remember that just because you haven't found your audience yet, that doesn't mean your audience doesn't exist.

While we were only making money from ads and contest winnings (and not enough to support development), we now knew we had something special. With all of the feedback and excitement about the project, we finally had what we wanted before the launch. We used personal savings and went into full gear releasing updates to really make the game shine.

Today, after a big update, we launched a Kickstarter for Aground. Maybe this will be the end of Aground's evolution. Maybe the large audience from the free version will be unwilling or unable to convert to paid players. But I'm hopeful now, and perhaps what I needed most during this entire project was just to believe in it!

Thank you for reading, and I hope you're as excited about the future of Aground as I am!

Wednesday, June 28, 2017

Prototypes, Card Games and the Future

With </reality> released and no new games announced yet, you might be wondering what's next for Fancy Fish Games? That's a question I've been wondering myself, and have decided to take my time considering ideas and making prototypes before jumping into the next big thing. But there are a few things I know, and I'd like to share them with you.

Untitled Card Game

Firstly - we designed a city-building card game about a year ago, but it received only a lukewarm response from friends and family during playtests. So we scrapped it until a few months ago, when I came up with a way to improve it, and we've basically completely redesigned it at this point. It's gotten a very positive response since then and it's a lot of fun, so it is likely we will do a Kickstarter later this year to be able to make the art for the cards and print them.

Untitled Prototype

Next, I've made a prototype which you can play online here: Flash Version , HTML5 Version (has bugs on some browsers). I don't want to say too much about it as part of the gameplay is unlocking things and the surprise factor of not being certain what comes next, so give it a try. However, I am looking for feedback on this to determine if I should continue to develop it into a full game or not - and what parts are fun, and what needs more work/improvement.

I Can't Escape 3

I've also begun work on I Can't Escape 3 - a direct sequel to I Can't Escape: Darkness. It's currently at an early prototype stage, and there are some gameplay issues we need to work on before we jump into full development on this project, but it is probably coming in the not too distant future.

There are also other prototypes and possible projects that we are considering, but we'll let you know in future blog posts!

Monday, May 29, 2017

TransFuse Post Mortem

This is the story of TransFuse, a game made in 48 hours for the Butterscotch ShenaniJam.

The Idea

At the start of the Jam, I rolled the theme: "Electric Leech." At first, we were at a loss about what to do - as while the theme brought a vivid picture to mind, it didn't really inspire any particular gameplay for us. All of our ideas were just games with electric leeches (and a few of the ideas were just leeches... the gameplay was pretty questionable). However, eventually I came up with the idea for a tower defense game where the enemies were leeches, and they both sucked your blood (leech) but also gave you power which you needed to build towers (electric). This double-edged enemy type was a very interesting twist to the tower defense gameplay - and changed the game from trying to have an impenetrable defense (letting as few enemies through as possible), to balancing how many enemies got through and how quickly.

About two hours into the jam, we had finalized the idea and came up with a quick design document for it.

The First Day

After we came up with our idea and design document, we had about four hours left in the first day to make something. Aaron sent me quick placeholder art and I got to work setting up the grid and pathfinding for the ground leeches. I also looked through old code of mine and reused a bunch of stuff - mostly utility classes and the tower placement (and also a lot of the animation/display stuff). By the end of the day, there was no UI, but you could place towers that did nothing (except block leeches), and watch the leeches pathfind through your towers to reach your ship. Not really a game yet, but a good milestone.

The Second Day

The only full day of the jam, this was where the majority of the work happened. By the end of this day, the game was very playable (and very fun, which is always a good sign). There was no title page, game over or victory screens, and you couldn't power/unpower or sell towers, but you could place towers which would automatically fire at leeches (including aiming for targets closer to your ship and leading - firing at where the leech will be instead of where it is), and you could fire the cannon and the majority of the UI was in place.

The Third Day

Ideally, the third day of a jam is left for polishing, tweaking, and submitting. That was most of what we did (plus the title, game over and victory screens and the tower menu where you could power/unpower and sell towers). I also added the notifications so you could see how much blood/energy leeches took when they reached your ship, and did some balancing. Obviously the game isn't perfectly balanced and there are no tooltips, but for only 48 hours I am quite pleased with where it ended up. I also had to create the video for the game, which I didn't realize I needed until 2 hours before the deadline so it was a little bit of a crazy rush making that and adding the last of the art/music to the game, but we did it (with a whopping 5 minutes to spare).

Final Thoughts

Overall I think the jam went very well, and I feel like we accomplished a lot in only 48 hours. While it's not perfectly polished and there's a ton of features that would be nice to add (like more towers, tower upgrades, more enemy types, ship upgrades, and a level or wave based progression), I feel that it is pretty complete and fun.

Monday, February 13, 2017

A Year In Review 2016

I haven't been very active on my blog, but I wanted to at least keep up with the year in review posts, where I look back on what happened in the past year and discuss my thoughts/plans for the future. The previous end of year reviews are here:
As you can see, Fancy Fish Games has been a constant roller coaster of highs and lows, of built up expectations and crashing dreams. It's already been over 4 years, and I Can't Escape: Darkness is the closest thing we've had to success. We've actually gotten a lot more sales since then thanks to the Steam Discovery Updates and the Halloween Sale, but we still haven't been able to realize our dreams of becoming a full time dev studio. Despite our uneven footing and uncertain future, we have been getting a lot better at designing and developing games, so we're definitely improving - if not as fast as we had once hoped.

So What Happened in 2016?

For those of you who have been following us, you probably noticed we had no major releases in 2016. In fact, our only release was Quotidian, our 2016 Global Game Jam entry (if you haven't yet, you should try it - it's very short, and very good for having been made in only 48 hours).

The rest of the year was largely brainstorming, prototyping, and freelance work until around July, when we started working on </reality> (more on that later).

The only playable prototype I'll share with you today is Medieval Tactics. It's a neat TBS with some city building aspects inspired partly by the board game Settlers of Catan, but it's kind of lackluster and doesn't really add anything new to the genre, so I haven't made any plans to go further with it.

Beyond the Stars

The prototype we spent the most time on was Beyond the Stars, which I have shared a few screenshots of on my blog and twitter. It's gone through many revisions, but the basic idea was an FTL-like game where you control a fleet of ships (instead of just one), and your score is based on how many civilians survive. However, this turned out to be very difficult to manage (as a player), and there weren't enough options for defending civilians besides ordering ships to defend other ships. We started planning a simplified, but multiplayer version where each player commands one ship in the fleet (and the rest of the ships are AI controlled). However, this became overwhelming very quickly, and we still couldn't find where the "fun" in the game was, beyond complex management that only die-hard fans of strategy/simulation games would enjoy.

Our conclusion with Beyond the Stars was that the basic gameplay needed more thought, and adding bells and whistles would only hide, not remove, those issues. For now, on HOLD.

Voxel Engine

After I Can't Escape: Darkness, I was inspired to make a Voxel Engine for future block-based 3D games. It mostly started out as a hobby/side project (and I coded the voxel mesher in OpenCL, which was interesting), but now we are planning to use it for I Can't Escape 3 (not yet announced). I also wrote a layer-based voxel editor for designing rooms and worlds.

Early screenshot of a room in I Can't Escape 3

The engine supports ramps and 3D models (including bone animations), and should be useful for many games in the future. And yes, I am crazy for writing my own voxel engine from scratch, but that could be the topic of a whole separate blog post.


After experimenting with many game prototypes, none of which stuck for long (besides Beyond the Stars which I explained above), we were unsure what to make next. We really liked the basic story behind one of the prototypes, but the RPG-ish gameplay wasn't that interesting. Natalie started expanding the story and moving away from the original game, and eventually we realized if we scrapped the gameplay, it would make a very interesting Visual Novel. That was how </reality> was born - the only remnant of the original gameplay being a short nod to it where Jacob explains that Vitalia will eventually be a creature-taming game based on a loyalty system.

Thus started our next big project. We decided to use Ren'Py, as it had basically all the features we wanted out of the box (and I'm not afraid of a little Python coding). I kind of consider </reality> Natalie's project, as she is doing all the art and wrote the first draft of the story. I wrote the original outline, and did a little coding, and a lot of formatting the story into the Ren'Py format, but most of my work on this game has been script editing (and there seems to be endless editing to do on a story this large).

</reality> was successfully funded on Kickstarter and we recently released the Steam Coming Soon page! Development is going pretty smoothly, and we still hope to release by the end of March (coming up really fast) or mid April at the latest. We also made an offical </reality> website with pre-order/late backing options available.

Global Game Jam

Last month we attended the Global Game Jam again and created Wavebreakers in 48 hours. It was my first time using Unity (at the request of the two other programmers on the team), and we were perhaps a little too ambitious for such a short period of time, but the game idea is definitely interesting and we might eventually polish it to the point where we feel comfortable releasing it to the public. But, even if we don't, it was a good experience, and I got a handle on Unity pretty fast if I ever need to use it again (for work or my own games).

The Future

Obviously, between now and the end of March we're going to be pretty busy finishing up </reality>. However, I have been brainstorming ideas for our next game(s) and even made another new prototype (codename "Witch Academy") while waiting for </reality> art from Natalie.

2017 Goals:
  • Release </reality>!
  • I Can't Escape 3 - Matt, the artist for I Can't Escape: Darkness has already written a design document and started designing rooms in the Voxel Editor. We probably won't be able to release this year, but definitely next year. The only thing I'll tell you about this game until we announce it formally is that it's a direct sequel to I Can't Escape: Darkness, taking place after escaping the tomb (and killing the heart, with all the consequences of doing so).
  • Witch Academy - After </reality> is released, this will be the next project I work on with Natalie. I should be able to work on both this and ICE3, and I already have the game design document and a prototype of it working. This also probably won't be released until early 2018.
  • We might try to release one other game this year, but if we do, it will be a smaller one. I did work on a few small prototypes with Aaron, an artist I met last year, and two of them could end up being pretty interesting.

So, we should have a lot of interesting releases between now and early 2018! After that, we still want to make Beyond the Stars (if we can make the gameplay fun), and I also have a few ideas that I want to experiment with in the Voxel Editor (you can see one world I made above using Kenny's voxel textures).

So, we may have slowed down, but we definitely aren't giving up, and we have some pretty ambitious games planned!

P.S. My game ideas spreadsheet (which I created to organize all my ideas, design documents and prototypes) now has 38 entries! We won't make all of them, and not all of them are good, but that's still pretty wild.

Friday, October 28, 2016

Natalie Maletz: < /reality > Demo and Plans

I don't do a lot of re-blogging, but I decided to re-blog Natalie's latest blog post as it's very relevant to what we are currently working on (and </reality> is more her project, so I'll let her say all the things).

Natalie Maletz: < /reality > Demo and Plans: Happy [almost] Halloween! It's weird. Unlike most years in late October, the thing I am most excited about right now is not spooky cos...

In other news, I Can't Escape: Darkness is currently 70% for Halloween! That means you can experience all this spooky eeriness for about the price of a cup of coffee! o.o Happy Halloween!

Wednesday, August 17, 2016

Procedurally Assisted Generation

Ever since my early experiments with Deity Quest, I've done a lot of work and research on procedural generation and am quite proud of the results in I Can't Escape: Darkness, which is able to generate a different layout that is still solvable every time you start a new game. However, I've come to realize a few things about procedural generation, which is why I will NOT be using traditional procedural generation in my next game.

Procedural Generation

At a glance, procedural generation sounds amazing. Instead of having to painstakingly hand-craft levels, an algorithm can generate near infinite levels and provide variety and replayability for players. However, while procedural generation can create near infinite levels, how different are those levels from one another?

Let's take No Man's Sky as an example for a moment, as everyone's talking about it anyways. There is no denying that all of the planets and animals are different, and that it is a marvel in terms of algorithms and technology. However, there are a ton of angry fans who find the game boring, stating that they are doing the same things at "basically" the same planets, over and over again.

Screenshot from No Man's Sky
So what's going on here? The key point is that even though there are near infinite distinct looking planets, if what you do on one planet is essentially the same as what you do on other planets, then in terms of gameplay, they are the same.

Here's the key point:
Procedural generation is great at creating variations on content, but terrible at creating new content.

You might ask, how is adding new levels and new planets not adding new content?
That's because I distinguish between content and assets. Lets say you make a game with infinite levels, where each level is the same except that the enemy model is replaced with a different model. This game would have infinite assets, as it would have infinite enemy models. However, no matter how different or interesting those enemy models are, isn't the game still the same level over and over again? I would call this game having only one level of actual content.

The Legend of Zelda's hand-crafted world
Hand-crafted levels add content because they tend to add new puzzles, new gameplay mechanics, and/or advance the plot. Even new hand-crafted enemy types add content if those enemy types have different attacks and movement patterns that have to be handled (by players) in different ways. It turns out to be very very difficult to get a procedural generation algorithm to produce actual new content (most experiments that attempt to do so are more in the realm of machine learning than procedural generation).

Lets go back to I Can't Escape: Darkness for a moment. As anyone who has played the game many times has probably figured out, while the actual paths you might take between rooms to get items are different every time, the general progression - the flow - of what you do is the same. For example, you have to collect the pick axe to break through walls before you can get the key to the cat door. While the details of the game are certainly different every time, in terms of the actual content, I would argue that it is actually the same every time (welp, there goes one of our major selling points). None of the gameplay mechanics or major points of progression change. And this content of the game, I designed by hand.

Screenshot of the map from I Can't Escape: Darkness

Procedurally Assisted Generation

So, with the above said, procedural generation doesn't sound as amazing as it did before. What's the point of having infinite planets if there's not something interesting and unique about each one? Might as well go back to doing everything by hand, right?

Well, procedural generation is a tool. And even if it isn't the holy grail that makes entire games for you, it is still a useful tool. While the actual content of the game still has to be created by hand, that doesn't mean procedural generation can't help out with some of the details and speed up the process of level design. And that's where my idea of Procedurally Assisted Generation came from.

Procedurally Assisted Generation is using procedural generation algorithms to take your basic content and turn it into fully detailed levels.
It is a way to speed up level creation by handling the tasks of level design that aren't very important to the core gameplay anyways.

Procedurally generated vegetation from Onyx Computing
Already, there are simple forms of procedurally assisted generation in common use. If you need to add a forest around your city, you don't model and place each tree. You have an algorithm place several tree models automatically around your city for you (the algorithm might even generate the tree models for you). Having an algorithm handle these kinds of details for you can save a lot of time.

Some of the things Procedurally Assisted Generation could do for you are as follows:
  • Add details to your scenes - trees, brush, rocks, doodads, decals (like scratches on walls). Procedural generation is a great way to add variety to your scenes without actually changing the core layout.
  • Automatically place areas - lets say you have a graph of areas and connections between those areas. Procedural generation can easily place those areas and paths between them, while adding obstacles to block players from going directly between areas that don't have connections between them.
  • Automatically generate layouts - if you want a dungeon, you could have a procedural generation algorithm generate the layout for you, and then add the puzzles and boss encounters by hand so that it is interesting and unique from other dungeons with generated layouts. If you don't care about the exact shape an area takes, this can save a lot of time.
  • Automatically generate models/variations - there are lots of algorithms out there for generating trees, buildings and making variations of other models. This can be a way to add variety to the objects and props you add to the game without having to hand-craft each one.
Example flowchart for areas in a new game I'm developing.
This is how I plan to use procedural generation in my next games going forward. The core progression and content of the game will ultimately need to be created by hand, to achieve design that is intelligent, original, and keeps the flow and player experience in mind. But, I can make a few low-detail areas by hand, and by using a progression graph, I can then string those areas together and add details to them. This method will save a lot of development time, while still ensuring that the game is exciting and that the progression and overall game structure are just as strong as if the entire game was hand crafted.

Tuesday, January 12, 2016

Tip: Don't be afraid to cut features!

We're all familiar with feature bloat. You think of a great new idea that just has to be added. Or after receiving feedback, you come up with an over-complicated way to resolve issues mentioned. The fact of the matter is, games tend to get bigger over time.

The worst scenario: you start developing a new feature, you put work into it, and then you realize that finishing the feature will be a LOT more work than you expected. You feel stuck because you don't want to waste the work you've already done, but also don't feel capable of completing everything you added.

It's easy for this to happen - and all too easy to add new features. What's a lot harder is really looking at the design and deciding where and when it is time to cut something. You worry about crippling the design, and if the rest of the systems will work properly without those elements. But it can be done, and can actually make the game more streamlined (and probably better).

I recently made a tough feature cut - I cut out a component system which allowed customization and interesting design choices for ships in a fleet-management game. We had a decent amount of progress on the system, but I realized that it would end up adding a lot of complexity to other systems and the user interface. It was definitely an interesting feature - but at the end of the day the game was about managing a fleet of ships - not micromanaging individual ships. Having one fixed action (build, repair, attack, etc) and fixed capabilities per ship is not only a lot easier to code, but also a lot clearer for the player, who doesn't have time for much micromanagement.

Wait... I have to keep track of all of these components for every ship?!?

Keeping in mind what the core of the game actually is, and how different features add and subtract to that gameplay, will definitely help curb feature bloat and keep your project focused. However, we all make mistakes, and when you realize you've made a mistake, know that it's okay to make a cut even if it means trashing work that you (and other team members) have worked on. It may end up saving you a lot in the long run (and make the game better as a nice side effect).