[1GAM-Jun] 2 Wet 2 Furious: Progress Log #1

The guy who came up with the title is simply genius (and no, it’s not me)
One Game A Month

Hello again with me in another progress log for my OneGameAMonth entry. In case you don’t know, OneGameAMonth is a community that encourages people to create one game every month. This series of progress log will detail my OneGameAMonth entry for the month of June, and if you’re interested in my past endeavour, feel free to check out the previous logs here.

Some of you may wonder, what happened to my May entry? After all, on the last log I said that I’m gonna work on it some more. Well, there isn’t any need to worry, that is still the plan. However, the end of June is getting closer, so I decided to postpone the May entry for a bit and start working on my June one.

Fortunately, like last month, I’m not doing this entry by myself. A friend of mine has just finished a rather large game and is now hoping to increase his mastery of Unity3D. Well, OneGameAMonth seems like a perfect fit for it, so he decided to help me with my entry. At the moment he has some other project to work on though, so who knows how much he’ll be able to help.

Unity3D

Wait, did I just mention Unity3D? Yep, this month my tool of choice will once again be Unity3D. Unlike my February entry though (which also uses Unity3D), my entry this time will be a simple 2D game. So, to ease the development process, we decided to use a third-party 2D framework for Unity3D.

To my surprises, almost all of the available 2D frameworks for Unity3D are paid ones. Geez, I’m not planning to go commercial with these games, there’s no way I’m gonna pay. Fortunately, one of them, Futile, is not just free but also open source, so that’s what we decided to go with.

And besides, my Twitter timeline has been full of praises (mainly from the NimbleBit guys) for Futile, so I’m also kinda curious about it. Well, how is Futile, then?

I’ve created a really simple prototype using Futile, and so far I found myself really liking the framework. Mind you, Futile is very code-centric and doesn’t use a lot of Unity3D editor integration, but that’s kinda the point. With the inflexible Unity3D I feel like I’m the one being controlled, whereas with Futile I feel like I’m the one actually in control.

Hell, Futile is so flexible that right now the way I’m using it is really similar with the way I’m using my own game framework. Even now I’m kinda tempted to port my framework to Unity3D using Futile =/

Anyway, enough talk about Futile (for now), what about the game itself?

Game concept

Pictured above is the basic concept of the game. And as you may have guessed, it’s a game about water skiing, hence the title “2 Wet 2 Furious” =D

The game is simple, the player has to go through a water ski course while dodging various obstacles. Every few meters or so the player will encounter a ramp which will let the player enter the trick mode and increase his score by doing tricks. Also, the score he gets will be multiplied by how much speed he has accumulated during his run in the course. Well, that’s the game in a nutshell, and it will end if the player hits too many obstacle.

To be honest, originally the game is about skiing instead of water skiing. But then I realized that winter isn’t going to come any time soon and the control scheme I thought of actually makes sense for water ski, so I modified the theme a bit. Not to mention that a game about water skiing is much more rarer than a game about skiing.

I actually came up with the original idea several months ago. At that time though, I was in the middle of working on my April entry and something else also came up in the next month, so I only got to work on this idea now. Fortunately I have recorded a detailed note about the game idea on Evernote, so now I don’t need to worry about forgetting some crucial gameplay element.

Anyway, it’s the last week of June, how far has the development progressed?

Prototype screenshot

Well, not far. We have just started working on it pretty recently after all.

I managed to work my way through Futile pretty quickly and came up with a really simple prototype, which can be seen above. It’s pretty basic at this point, just a couple of scrolling sprites (no collision detection yet) with a character that you can control. Not much, but enough to imagine how the game would feel.

The most surprising part is probably how much I dig the control scheme. Basically, you don’t control the character directly but instead you control the boat that’s pulling the character by dragging your finger around. If you thought about it, that kind of control scheme isn’t very precise, but that’s exactly why it provides a much more hectic and intense game experience.

The control scheme is so fun that I’m contemplating to remove the trick part and just focus on the obstacle-dodging part. To be honest, the original idea hangs on the concept of rewarding player with the trick stuff, so I’m not so sure about eliminating it yet. However, the end of June is approaching fast, so simplifying the game is probably a good idea.

Well, there’s definitely still a lot of things to work on, wish us luck!

Advertisements

Project Mirror Final Log [1GAM-Feb]

Since this log is comprised of 2 weeks of progress, it’s longer than usual.
One Game A Month
Yep, it’s pretty late and I’m sorry for that. Got some stuff to do for the past 2 weeks, some of them boring while others are exciting (which you’ll find out some time later… or maybe not, I haven’t decided yet). Now that I have apologized, let’s get on with the post! Oh, and in case you missed the previous log, it can be found here.

I’m participating in OneGameAMonth, and my entry for February is Project Mirror which is some sort of a platformer game from first person view made with Unity3D. So, what did I do in the third and fourth weekends of February?

Or you can skip reading the whole thing and just try the game here.

Gameplay

Well, when developing a game, I like to have most of the game life cycle (pause screen, game over screen, etc) ready before perfecting the gameplay. And that’s exactly what I tried to do on the third weekend.

Following the example on BurgZerg Arcade video tutorials, I tried out UIToolkit, a free plugin for Unity3D that provides a quick and easy way of building interface. Unfortunately, the plugin doesn’t came with any example or asset that can be used to check out the plugin capability. Not to mention that the plugin requires the font to be made in BMFont creator that isn’t available in Mac for free. So I struggled with UIToolkit for the whole weekend and in the end I didn’t manage to come up with anything new.

(A little trivia, I’ve been using BMFont to draw text on my game for a while, but I never knew that it’s a widely-known format 0.o)

By that point, I was very frustrated. The third weekend has ended and the game hasn’t progressed much. So I vented my frustration on Twitter (as can be seen below). Fortunately, a certain CEO of Unity Technologies picked up on my complaint, and after I explained my problem, he suggested that I used NGUI plugin to do the UI stuff. I quickly checked it out and was quite impressed by the WYSIWYG capability of NGUI. After finding out that NGUI has a free version, I made a mental note to try NGUI for my game on the next weekend.

When the next weekend came, I have other stuff to attend to, so I moved the development to be on the last few days of February.

On the third day before February ended, I started exploring NGUI, which fortunately came with examples and some UI assets so I can quickly test out stuff. This time things fared much better and by the end of the day I have an idea of how to build those other screens. I started working on the UI assets later that night and by the next day I finally have functional title, pause, and result screen. I don’t know if I did it the right way, but at least I have them working.

Now that the interface has been taken care of, it’s time to work on the gameplay again. I have one night (of February 27th) and one morning (of February 28th) to pull it off and wrap the whole things up.

At this point I already have a randomly generated platforms that can make a turn and goes up and down. For me the difficulty is already challenging enough, but I need to make it ramp up from easy to difficult (like having only straight path in the early section). In the end I spent the whole night tweaking the difficulty progression and fixing various little things.

The last morning of February came and I remembered that I haven’t put any form of audio on the game other than for button clicking. So, I browsed NoSoapRadio and quickly found a suitable music (which reminds me of Mirror’s Edge music, how fitting). To spice things up I also added a “ding” sound effect every time the player stepped on a platform, and whoa, the result of this little addition is surprising.

This “ding” SFX actually made the game much more exciting and gives feedback to players that they’re doing the right thing (by jumping to the next platform). Seeing this, I decided to amplify the result even further by making the platform light up when it’s being stepped on. The result is quite pleasing that I thought it’s possible to twist the game into some sort of musical game where you play music note by note by moving on these platforms. No need to hurry though, there are still 10 months left in 2013.

By noon I finished up the development and hosted the final version of the game on Dropbox. And with that, the development of Project Mirror is wrapped up.

Title screen

Oh right, I finally decided on the name of the game: Dimensioneer, since the player is supposed to be adventuring in some sort of shifting dimension (though that particular setting never actually appear in the game).

And I also skipped on one thing, exporting the Unity project to a browser-playable game. At some point in the middle of February I wanted to ask feedback for the game, so I exported the project as a webgame and hosted it on Dropbox. The responses were quite unexpected, some people were saying that the game keeps asking for Unity webplayer even though they already have it. Apparently Chrome refuse to check for Unity Webplayer if it’s requested via an insecure channel. So I simply changed the HTML page to request using HTTPS instead of just HTTP and now it’s solved, phew!

So yeah, now you could play the game on your browser here, or just watch the video below if you don’t want to download the webplayer.

While I’m quite pleased with how the game turned out, it isn’t exactly what I envisioned when I started the project. I think the main problem is with the first person view. While first person camere is good to make the player more immersed into the game, immersion requires tons of resources like sound and animation, things that I don’t have the time to make. Oh well, let’s chalk this one up to experience.

Anyway, how’s my first date with Unity3D? Well, it’s… different. I totally hated a lot of Unity’s way of doing stuff, but I really, really liked the 3D engine. Unless I’m doing a 3D game, I think I’ll stick with other, more conventional game engine (Shiva3D looks mighty interesting tough). That said, I think a friend of mine summed it up the best, Unity3D makes difficult things easy and easy things difficult.

So, now we’ve got February game in the bag, what about March? Well, the original plan is to continue working on Project Mirror on March, but something came up for March. I can’t share you any detail yet, but I’ll just say it’s another mobile game. Yeah, I’m back to my home turf, baby!

Project Mirror Progress Log #1 [1GAM-Feb]

It’s that time again for another progress log!
One Game A Month(oooh, I really like how this header image turns out =3)

Well, as some of you may have known, I’m participating in OneGameAMonth, a movement that encourages people to release a game every month. You can check out my game for January here, but since it’s now February, let’s talk about my new game!

Other than the gameplay, my January game is pretty much a familiar territory. It’s for a familiar target platform and made with a familiar tool. So February is time to try out a new tool (which is Unity3D), a new dimension (which is the third dimension), a new approach, and a new challenge. Basically, I’m trying to get out of my comfort zone.

So what will my February game be? Well, the original idea is from a twitter conversation some time ago (sorry, too lazy to dig through my tweets) and this is the light version of that idea:

The player is stuck on a temporal dimension that keeps changing. To survive, the player must keep moving, jumping from one platform to the next as quickly as possible to avoid getting swallowed. The game is viewed from a first person perspective.

Think of the game as an endless Mirror’s Edge but with randomly generated level. And so, since I haven’t got a proper name for the game, I’ll call it Project Mirror for now (even though the game has no mirror at all).

Mirror's Edge

Mirror’s Edge.

That said, the inspiration actually came from playing Assassin’s Creed III. Running and jumping around on that game feels really, really fun, so I wondered if having that kind of experience on first person view would be even more awesome. Oh, and the radio tower puzzle on Far Cry 3 is also another inspiration since it’s rare to see such a well-executed platforming puzzle on an FPS game.

Usually I would start developing a game by sketching how the game would look. However, this a 3D game with a first person camera, I don’t think sketching how the game looks from the camera would help visualize the game. So this time around, I decided to just poke around inside Unity3D engine and tried to get a feel of the game. Like I said, I tried a new approach for this game.

Well, I played around with Unity3D for a bit and this is what I’ve got so far:

Note that the platforms will be totally randomly generated, so there shouldn’t be any big jumping section like that in the early part. I just put it over there to have fun with Unity3D level editor =D

As can be seen from the video, I haven’t got really far with the game since I’m still learning the rope with Unity3D. I managed to generate a series of disappearing platforms that player have to jump across, but that’s it. As expected, generating an exciting platforms that’s fully random is hard since people will get bored if it’s just jumping and jumping, it have to be more varied.

That said, variety can be improved by increasing player’s skill set. Right now it’s only running and jumping, but simply adding something like a wall run or ladder climbing would improve the kind of platforms that can be used. I haven’t decided any additional ability to add yet though, I would have to find the formula for generating fun platforms first.

This time around I’ll try to stick with horizontal platforming. The original idea that I tweeted before is actually a Prince of Persia-like game with first person view where the player has to climb an endless version of the tower of Babel (even I got the title already: “Babel”). Who knows, may be that will be my March game?

As for the graphics, since the game takes place in some sort of inter-dimensional realm, I can stick with those white cubes for the platforms. The visual I’m trying to achieve here is similar to Assassin’s Creed loading scene where it’s just white stuff all over the place. That said, it won’t be only cubes though, I’m hoping to have more complicated forms like a stair, an L shaped platform, and other stuff.

Another thing I’m hoping to have is some sort of cool effect when a platform appears. I really like the scattering polygon effects on Assassin’s Creed III loading scene, so I’ll try to emulate that. I It seems a bit to complicated though, so I may have to simplify the effect into something like multiple tiny cubes gathering together to form a bigger platform block.

Assassin's Creed III

Assassin’s Creed III loading scene.

It’s interesting to see that this game development can be separated into several big challenges. The two biggest challenges that I can see are how to generate a fun platforming section and how to implement various movement abilities like sliding or wall running. I feel like if I can get those two problems solved, I would have a nice game at my hand. Oh, and implementing that “scattering polygons” effect like in Assassin’s Creed would be tough too, but it’s low priority for now.

That said, there are only 2 weekends left in February, I don’t know how much I could do with them =/

Trivia: some of my friends claimed their dream game is an RPG. Me? I guess my dream game is a really immersive FPS game =)