Candylicious

Hey there! Before doing a followup post on Hexatron, I decided to first post some details about Candylicious, another game we did previously. I’ll go in detail about the concept, the process and the final result, and I’ll probably do the same with future assignments, such as Hexatron. Beware this is all student work, done in little time overall.

Candylicious is a 3D platformer game done in Unity3D in about 2 weeks, with an emphasis on aesthetics and overall art style.

TL;DR: Did prototype game, check out screens/video and download game at bottom of post.

The concept

The idea for the game is quite simple gameplay-wise: a platformer with a bouncy ball (easier to code, etc), although the ball’s movement was hard to tune. However, we wanted to give it a defined art style and nice aesthetics, and given that the gameplay was relatively short to code, we could do a lot of assets in a short amount of time. So we had to look for a nice setting for the game.

The overall first concept of the style was “cute”, nintendo-like, etc. This was because in such a short amount of time, doing a lot of very detailed, realistic assets is not easy, considering that as students we had other responsibilities. Also, I knew that with some shader magic we could get close to that look.

Also, at the time I was completely immersed on Team Fortress 2, developed by Valve. In fact, I did a video which became somewhat popular and was featured on Kotaku, titled Cinematic TF2. Shameless plug apart, the Pyroland Update had been recently released, and I loved the color palette of the Pyroland maps and concept art, and thought “Hey, that fits entirely with our idea!”, and so Candylicious was born, a cute world with lots of candy!

The color palette for the Pyroland update.

So we started doing the concept art for the platforms and background, and really liked the results. We even used them as placeholders while coding the game before the assets were done.

The initial, rough concept art for the game. The background is very similar, with gigantic candies and smooth green hills.

Assets

With the idea well developed in mind, we started doing the assets for the game. All of them were done with Maya, ZBrush, xNormal and Photoshop, depending on the level of detail wanted. As a side note, part of the original concept was also incorporating some candies from my country (Argentina) to differentiate it from similar games. With that said, some assets!

Low poly versions of the platforms inside ZBrush. A nice advantage of being a sidescroller is that a single platform has 2 sides and can be reused much more.

Shader and lighting

We knew that just putting the assets with a rim shader wasn’t going to do any good, or at least not how we wanted. So, thanks to Unity’s awesome shading extension capabilities, we coded a very simple “Candy” shader, which is heavily dependent on Unity’s soft shadows. It isn’t complex or novel, just some common features tuned to look good with the assets.

The shader uses a ramp for the diffuse shading and two Blinn-Phong factors; one for each light and a frontal one with the camera. Above this, yes, some rim shading based on another ramp, and an Ambient color, independent from Unity’s own ambient lighting. While this is fairly standard, the main trick was factoring each component by the ambient color and the attenuation of the light (which also handles the shadow contribution) plus the light influence. This is analogous to using the Luminance node on Maya’s Hypershade. To give an example:

fixed3 rimColor = tex2D(_RimFalloff, float2(0,facingRatio)).rgb * lerp(float3(1f), _AmbientColor.rgb, step(atten, .25f)) * saturate(atten + .25f) * lightInfluence;

Here, the rim color is calculated by a lookup to the rim ramp texture, then multiplying it by the ambient color only when the pixel is not illuminated (and interpolated in between). It also obscures it in the shadow, with a minimum value of .25f, and then factors in the lightInfluence, which is the light color but with some tweaks. This way, the light also influences the rim, which makes possible some nice alternative settings like night, etc, without having to change the rim ramp.

The result:

The shader in action. Notice how the rims are attenuated by the shadows and the ambient color, making the transition to the background more natural.

Conclusion

While we couldn’t do everything we wanted to (in fact, we even coded 2 powerups we ended up not using, and had like 4 or 5 more levels sketched), the experience was great and we learned a lot, while finishing something that looks relatively good and fun. Unity has proven to be extremely useful and easy to learn, with a very, very fast pipeline for asset managing and level design.

So that’s it! After Candylicious, we had to do another game which we called Hexatron, which is based on the popular game Tron, and is already finished (probably will post in some days about it).

Here are some screens, a gameplay video, and a download link! Any feedback is well received =D

Download

If you have Mac, Linux or any other OS, please download the Web version and install the Unity plugin!

Web version | Win 7 x64 version

Gameplay

Screenshots

4 thoughts on “Candylicious

    1. mmerchante says:

      I’m glad you like it! I really hope someday I’ll get the time to finish it and deploy it to mobile, but I guess it will have to wait for now. And thank you a lot for posting on respavvn! =D

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s