Okay, this is a hard one to write because it means accepting defeat and admitting to mistakes.
So, let's get that tough part over with right away: I promised a playable demo a week ago, and I didn't deliver it. The truth was that I had the level pretty much all ready to go and looking very playable, and apart from some minor jumping issues, I was happy with it. And more importantly, I so desperately wanted to move forward.
So, drunk with desperation, I announced to the few followers paying attention that, come hell or high-water, I was going to give something to them to play.
The Monday came and went without a peep. On Tuesday I managed to muster up the character to admit to needing more time, and the following Monday (today) I give you this.
So what's going on? Well, a few things: First, my intoxication (metaphorical, not literal!) period is over, and I'm back to seeing things realistically. The truth is that calling something finished just because you're ready for it to be doesn't make it so. Our little game was missing it's GUI, had some bad framerate problems, was getting some menacing exceptions from the enemy behavior, and there were some sound effects and animations missing. Pathetic!
Maybe I could have still given the thing out, unfinished, to a select few, but it would have just felt wrong. So here I stand, er, sit, hat in hand, begging your forgiveness. I'm afraid we still need more time.
But it'll be worth it! Murilo, as usual, has been hard to work on making the level more professional. This is the truth thing that I think we are waiting for and it is really going to make all the difference. Have a look at a preview render of the scene:
Versus the original:
It's a huge difference.
We've also since added the GUI in and a push animation, which you can see here:
Lower left is a death counter, we're missing the animation. The box is a placeholder, too, it'll be replaced with a kind of totem. Also you can see I need to fix the particle on the box so that it changes direction and side depending on the motion of the box! ALSO the pink water is just a placeholder!
Anyway, so the point is, lots and lots to do, but we're really close, I promise, and those select few of you who we trust and love will have first dibs on telling us all the things we did wrong!
This week's been mostly about finding and squashing bugs, of which there are plenty. Luckily for us, Mihai has got a pretty big boot with a hard sole.
Metaphor's aside, he's been doing fantastic work at quickly finding ways to deal with the weird stuff that tends to crop up in the game, as well as giving time to making a couple of adjustments to other issues. Meanwhile, Murilo continues to slog away at getting those animations ready for use.
Here's the main bugs we've been working on this week:
- Enemy's. Just about everything about them needs to be tweaked, but nothing more so than their ridiculous, moonwalking, badly aligned, floating appearance.
- Not exactly a bug, but the jumping needs to be a little more forgiving. Mihai's added some code that will allow the player to jump just a fraction of a second after Sprout's feet have left the platform.
- Respawn. Currently, as the player dies on a layer other than the one where he spawned, he respawns on the layer of death. Usually, there is no platform there, which means he will die forever by continuously fallingspawningfallingspawningfallingspawning
There's others, but we'll focus on talking about them. As for enemy's you can see most of the problems with them (there are many) in this video:
The preview image there shows some pretty offensive floating. This is occurring for several reasons, none of which have anything to do with Mihai's work. The biggest problem is trying to get a collision box that fits the enemy shape and cooperates with movement. The second problem is that we haven't quite got the animations and model perfected for use, yet, though we are close.
The jumping issue is kind of impossible to show an example of. Basically, I decided early on that if I ever find myself testing the game and getting frustrated, then I need to undo or fix whatever the cause of the frustration is. Sometimes it's okay, but rarely, and only when it is completely by design. Falling into pits that should be easy to jump over is not a fun experience. I also read on this article that forgiving jumps are practically expected.
Mihai's put some seriously brainscratching work into this issue and managed to come up with a system that does exactly what we were hoping for. No more yelling at my computer screen!
The respawn bug is pretty much already fixed, though its possible that some new and somewhat related issues have reared their ugly heads. I need to do some more testing to be sure, and also to make sure I know exactly what was done to cause the issue.
Also this week, I've been experimenting with the Unity terrain feature to try and temporarily fill in the background, because it's just far too clumsy and unimpressive looking with nothing. After Murilo's finished up the animations work, he'll be able to move on to what is essentially the demo's final aesthetic need: going over the level and making it pretty the way only someone like he can do.
Also added some final jump puzzles to end of the level so the thing is technically playable now.
In the above, I show you that it's way easier to cover up imperfections with the lights off! Woo! As for that box, that's gonna be redone into something magical-looking, too. Just you wait!
Last week's post did pretty well on reddit's gamedev. The game got some nice attention and some much-needed praise, despite my lack of a plug in the OP. Thanks to all you who searched it out and left your encouraging words.
With that said, the days following that post brought me into exactly the kind of situation I described. I got stuck in a couple of places. There were two key issues I could see happening and they were both causing some major problems for me personally and for the game at large.
- The vines looked ugly. Very ugly.
- Something in the middle of the level felt off and uninteresting
We'll talk about the vines second, since that problem's resolution is a lot more tangible.
This is supposed to be the second level of the game, which means it should still be pretty easy and relatively straightforward. But the lack of choices in the level were bothering me. Having just played Duck Tales on Xbox, I could see that putting pathway choices in a sidescroller can be stressful to the player, but it also adds a larger sense of mystery, responsibility, and tension (what if I should have gone the other way!) to a level.
So I pulled out a wall and added some stairs and a bridge. I also moved an enemy over this new area so that the player would have a much more simple meeting with the enemy on his first encounter. But then, not being able to kill an enemy feels frustrating, so I've got to add some clouds so we can rain happy thoughts down onto the evil devil-dog. The level feels better right now, but the empty backgrounds are still bothering me. These will be fixed after the gameplay is ready to go.
But now we have a new problem. The enemy is having trouble on sharp angles. His sphere collider is getting stuck on things and the enemy itself is sliding away from it, giving him the appearance of floating over land. This is a huge problem and one I can't get my head around just yet. I'm going to wake up tomorrow and make this my main goal so I can go into it with a completely fresh head.
As for the vines, I've got some neat little gifs to show as a way of taking you along the path. We started with the vines coded and using a simple grass texture as a placeholder. It looked "not-beautiful" to say the least:
Murilo then remade the vines using a 3D model and textured that. This will allow him to easily make many variations of the vine growth path by rotating the camera and rerendering. The vine's growth path is decided using a gradient texture rigged with a special shader done by Mihai. I then took Murilo's new vine and set it into the game, only to find that something felt off. It grew too fast and wasn't quite magical.
So I knew we needed to slow it down and that we needed to add some magic- aka particle effects. Unfortunately, the latter is pretty low down on our list, but Mihai did add a nice Growth Rate variable that I could easily change to experiment with speeds. So I cut the speed in half and...
Okay, better, but not perfect. I showed this to Murilo and he pointed out that the leaves on the vines are way too big. That would be my fault- some improper, sloppy scaling. So I narrowed the plane appropriately and...
Looks a lot better. You can also see that I fixed that little enemy on the right so that he moves again and I moved the background around so that the vines' growth fits with the environment. Low priority stuff at the time, but didn't take long.
The vines still aren't completely perfect, and we still need a way to make the look more magical (as Kevin Kitlesa suggested on Twitter,, having the ground break apart when things grow might be a good way to add some life to the animation), but that's some time away. For now, I'm happy with how it looks.
Next up, we'll be adding some new animations to the game: pushing objects, a proper idle animation (so he no longer grabs his hat over and over and over), run against wind, sprint, and others.
Stay tuned. Also, as always, please don't forget to help spread the word by clicking Life or +1 or Follow or Watch or whatever one you like the most! We need your support!
I'll start by boldly declaring that I am currently experiencing an "Up." I'll follow that by not-so-boldly knocking on the wood-top of my desk.
I'm pretty sure I'm not alone in my perception of this process as being ahem emotionally turbulent. My sixth-month project is now entering is 18th month (that's one year and six months for all you baby-haters), and I want to take a minute to post what it's been like in case it helps any of you who might be currently experiencing a "Down".
And the lows get low. It starts with a problem. Something comes up that I can't solve. And I stare at it for hours wondering why this isn't right. It might be something technical (why isn't the enemy following over the obstacles?!) or it might be something intangible (why isn't this fun?).
An impressive moonwalk, sure, but not exactly what we're looking for from a scary enemy.
But whatever it was, it starts to eat and by the following day I've woken up with a feeling of dread. Some days I'm unable to even work up the courage to start up the project which causes me to feel even worse the following day, knowing I got nothing done. And then the thoughts like this come:
- "I'm worthless, why would I even attempt something like this. Of course I can't do it."
- "This game isn't working. There's nothing I can do to fix it because I'm not smart enough to fix a broken toilet flusher."
- "Everyone will be disappointed. Why did I even tell anyone?"
But it's fleeting. Well, kind of. It's less 'fleeting' and more 'goes away slowly and after a little while things seem a lot better'.
And if anyone is like me and has had to deal with this, I'll say, keep on keepin on. Do that work even when it pains you. Write down on paper and see what's wrong. Talk about it to people you trust, especially if they don't want to give you advice. Sometimes you just need a sounding board. Try different ways of tackling the same problem.
In writing, they say "kill your darlings." I'd say that's good advice for game design. If something isn't working, or is slowing the game down, kill it. My game's gone through some pretty masssssive changes since its inception, mostly for this reason. I was attached to things that worked only in theory.
18 months later (I won't reformat that number a second time, you baby-haters) and I really have to say that I have fun even just testing the freaking thing. I don't think it's going to blow the world up or be Braid or Limbo or anything like that, but I can say I'm damn, damn proud of what it's shaping up to be. One way or another, when it gets into people hands, I can say, "This is the game I wanted it to be because I wouldn't accept it when it wasn't."
Finally getting the sense of bringing the world back to life.
We took a bit of a break, all of us. Some time with our families over the holidays. I hope you'll forgive the silence on our part.
And while I still found time in the mornings and some evenings to keep tinkering away at things, it wasn't until this weekend that I got to really delve back into the project. I have to say, it felt good to give things a look with fresh eyes. My initial thought is, "Why the hell is he ice-skating everywhere?"
My second thought was: Oh yes, I am so glad Mihai changed the camera motion. Everything looks much more organized now, and it's easier to feel more comfortable in the game.
Unfortunately, some things still felt off, (and still do, if I'm being honest) so I continued to trial and error my way into a better game by making slight changes to movement speed, jump height/speed/control, texture choices, tree size/growth speed/etc. After each tiny change, I'd give it another whirl. If it felt right but not enough, I'd go more. If it felt like too much, I'd tone it back the other way. It felt a lot like lockpicking in Skyrim.
I also redid the entire ending to our demo (AKA second) level because something felt really wrong about it. I've now got the player doubling back through the level at the end but on a different Z plane, and that really makes everything feel a lot more organic.
Then I rearranged some of the decorations at the start and moved some of the camera nodes a bit. I've also decided to make water a mandatory feature in the game (as was initially planned in the design doc) which can be used by the player to notify him or her when plants can be grown. I think that this is ultimately going to make the game a lot more interesting to look at and a lot clearer to play.
I also managed to more or less finish the first level (which you won't be seeing, but as I've hinted at on Twitter several times, it moves kind of Land Before Timey). That feels pretty good. The others I've been working on are moving nicely and I think I've got some good layouts here, but ultimately with the features we have in right now I fear we haven't enough to fill an entire game. So, the plan for a Kickstarter continues forward.
Whew! Started feeling really rotten there at the end of the "break". Had too much going on in my personal life to spend a proper time on Sprout's Tale, but we're back now and, dare I say, with a vengeance.
Our enemies are, unfortunately, still rolling balls, so you'll just have to continue waiting on that front. But the good news is we've now got that awesome darkness effect with enemies that you could see in the 2D version AND we've now got a really cool but not-quite-finished system for the fire burning grass away.
Touching burning grass is deadly!
I've also just about finished the first part, and what will hopefully end up being the larger part, of the main demo level. These will boil down to being basically the first and second levels of the game and basically active tutorials. There is no reading to do and there are no verbal instructions. Glean from symbols and context like it's 1998, ya'll.
Here is the first forty-some seconds of that level. Don't cheat too hard.
And yes, I forgot to edit out the Unity bar at the top. So sue me.
The second part of the level is going to be much more fairy-heavy. You'll have direct control of her actions and you'll need her to light the way, pick stuff up, and generally be your little helper. She's so nice.
I've got the thing mapped out and blocked out in white blocks, so let's see how it ends up.
Stay with us, we're almost ready.
In our last bit of big news for today, voting for IndieDB's coveted Indie of the Year title has begun! Please lend us your support with a click of the mouse- vote for Sprout's Tale! And spread the word! Thank you!!