Sunday, August 16, 2015

Annapurna

I've never finished a game. All this time I'm stuck between trying to make something in 3D to help my friend's with their projects, and trying to finish my own game that would probably take years to finish. Somehow they just can't seem to work with each other.

I took a look at other people's first games, and they're mostly something simple like racing, sidescroll 2 player fighting game, and stuff like that.

I thought making an RPG was gonna be easy. I thought making my game idea smaller, from a super MMORPG with hundreds of features, to a single player RPG was the right decision. Well, it was the right decision, but not right enough.

An RPG was something I tried to make before, and as I learn the parts to make one, I find it's too much for a solo developer. Making a multiplayer online game is much simpler than something single player with AI for monsters/allies, among other reasons.

Fortunately I learned a lot from that. I've actually made all the parts to make an RPG, from item database to stats to a little bit of AI, but they're all sloppy because I didn't polish any of it.

The other thing I didn't do is to make an asset list, or in other words, managing my project.

I'm dedicating this year to work on the visual aspect of the game. It's much easier to see what the game really needs and when to stop adding (unpolished) features.

This post is gonna be about making that asset list, taking the visual arts into consideration.

Asset list:
6 characters paper scissors rock. Low poly, non-skinned, segmented, parented to joints and animate.
3 types Coconut tree
Ricefield
Pasar
Trees Flowers
Bali Beach hotel?

On progress:
Bringin tree
Annapurna warung tooned
Cat
Bamboo boat


That's roughly it. Now, about the game itself.

https://www.facebook.com/pages/Annapurna/114960858639673

Annapurna is my friend's donation-based restaurant in Bali, Indonesia. I felt like making something that is both a game and a social media, for the people who have visited the restaurant and are already back to their own country.

A sketch of the whole map:
I can't be bothered making buildings and advertisement billboards like how the city is actually like. Some major landmarks that I'd like to keep in there are shown there: Ricefields, Pasar Sindhu(market), Bringin(Banyan) tree, flower and pretty plants road(Jalan Hangtuah), and Bali Beach hotel in the background(I'll have to talk to them how they'd want me to depict their hotel. Right now I'll focus on other stuff).




Outside, the gameplay is just a typical free for all pvp side-scroll.
 

Inside is non-combat area, so people just chat or you talk to NPC.


The 6 characters are the generic classes that players play as, but there'll be additional custom characters like Ben(the owner of Annapurna) who will play as, well, Ben, when he's online. When he's offline, however, his character will just chill inside the restaurant as NPC. Other players can talk to this character and get whatever info such as when is the next live music event in the warung, what's tonight's special, etc.

More characters will be added talking about their own stories and place, and more maps will be added as well other than just Sindhu Beach.

Some stuff that I already started, just need polishing.

The bringin tree


Bamboo boat that's gonna be at the beach.



Annapurna warung itself. I got the whole warung with correct measurements, but gonna remake every furniture so that it's more, uhh, cartoony?


Some bamboo furnitures.




They're all past works that I've done for lots of different stuff, but with this idea, I can actually make use of all of them in a single, simple game.

The only part that I'm still confused is deciding the art-style. I'll have to decide, for instance, the playable characters' stylized proportions.

The concept art for the playable characters, as generic classes:



Before I make any cool looking, complex characters with long backstory, I have to make some of the "normal" ones. The playable characters that normal players get to play are these guys, trying to put Balinese influence whereever I could. Don't pay too much attention to the head and face, I'm still struggling with their proportions and didn't even consider how the face are gonna be like yet.


=====Beyond this line things are gonna get technical====

I've made several anime proportion head in 3D and they're a big confusion to figure out. Their huge eyes contributes a lot to this.
This time, however, I'm gonna do things low-poly style. Something like this:




Yes, yes, I'm experimenting again instead of doing what I know already works. But this is low-poly, so this is for the sake of doing less work (but more precision) for me.

In the end it'll probably look like good ol' FF7 stuff.




FF7 made their character mesh in segments(most noticable on Tifa's knees). I already decided to make things low-poly, but weight-skinning them to joints to a mesh that I know will deform horribly is not how I'm gonna do it.

Segmented body parts + cel-shade texturing(solid colors) is how I'm gonna do it. With solid colors, I'll avoid issues like shown on Tifa's knees.

The other thing I'll have to do is modify each vertex' normal direction so it gets lighting differently while maintaining the shape.

The body parts will be parented to the joints, which will be animated normally, getting both IK and FK functionality in animation. As long as all characters have the same hierarchy, transferring animations should also be easy.

Quite a few things to try out, and I'll probably have to learn yet another software(XSI/Softimage for vertex normal projection thing), but if this means I can model the mesh without worrying about deformation, AND I can avoid doing skin-weighting, then this sounds too good to be true(but only for low-poly works)!

Lastly, the face.
The flat face + sticker polygon with face expression textures is probably how I'm gonna do it. There's just no other way.

Even though I've made the concept art of the characters, I'm still not sure if that's the proportion I'm gonna go for. A more "squared" proportion(something like 3 heads tall like Ashe above) is definitely gonna be easier for setting up the hitbox collider when I deal with coding later, but if an adult is 3 heads tall, how do I introduce younger/older characters? I'll have to figure out a suitable proportion again later...

Before I start planning too far ahead, I'll stop the post here and get back to it when things are working out.

Wednesday, February 18, 2015

Character profile: Kat


(Technical stuff rant can be found at the end of this post)

So there she is, the imaginary friend of Luciano, Kat. Her design is based on my cat a long time ago, with the crown to emphasize how much of a princess she was.

Her role in Luciano's mind is as the one who moves the body. In short, she's the brain, the logic, the one who sits in the mind reading a book with the title: Luciano's muscle memory. The brain is a muscle, isn't it? All the logics and knowledge are therefore stuck in your brain because you've "thought" that way before, therefore you memorized the way the brain's muscle flexes.

All in all, Kat is the one who the players will be playing as. The game will have a very big psychological aspect to it, in which you(as Kat) has to decide what to do based on the body(Luciano)'s wants, and at the same time, has to pass the morality test performed by Doc(a dog), which is this other imaginary friend.

Doc will be coming soon, I can't wait to make him.

Because Kat is the more significant imaginary friend(simply because the player is playing as her, within Luciano's mind), she gets some character stats that the player can't freely adjust. Here it is:

Str:99
Agi:99
Int:99
Vit:99
Dex:99
Luk:99

Passives: Dash, Wall jump, Stealth.
Actives: All magic spells in the game.

Seems pretty imbalanced, eh? Well, you only literally play as Kat in Luciano's Dream, which happens after every episode or whenever you choose to sleep. Any other time, you play as Kat, controlling Luciano's body, in the game's reality.
The Dream only acts as the time when the game goes into mission briefing part, or contemplating some stories, and so on.

The other way you can play as Kat is when you Daydream, that is when you choose to stand still and gives up Luciano's control, and start moving around in reality as Kat. When this mode is active, Kat can only go to places where it's within Luciano's view.


So that's it about Kat's character profile. I will now rant about some technical stuff.

First of all, working with low poly characters is insane. Kat is at 2238 polys, 510 of which are her fur+eyelash+whiskers.
The body is 1130 polys. With just this much, she has to bend and do some funky acrobatics.
I made a big mistake on joint length as well. The bone from the pelvis to knee, and knee to ankle, has to be fairly equal. If not, your model can't sit properly. I redid the joint chains, but it's still not quite right.

I realized a proper joint chain is not the only thing. For a quadruped, the thigh area deforms so much that it's probably a good idea to add a few more edge loop there. That part is basically a super stretched piece of skin that gets pulled by the knee. I was banging my head as I weight paint that part, but now I learned enough to do better next time.

I'm lucky Kat is basically a ball of fur. When I make a normal cat, however, I think I'll need to adjust the mesh again...


Another thing was, I was planning to upload a video of Kat in-game, with free movements as I go around the game scene. But as I was importing and arrange the animation clips, I realized the character movement script is very programmatically wrong. Right now I have a bool check for when the character is running/not, grounded/not, and so on. While I was doing the monster AI, I was making State Machines, and I guess this is the time I go back to some old codes and re-make everything based on that single state paradigm.
The same method that gets called on each transition of the character's movement state can then be also used to trigger the animation. Right now, it's a mess, and working with Unity's Mecanim will mean having to write separate methods again...

So yes, that's what I'll be doing next: fix character movement states.
After that, make a proper demo game in the dream state, and then you can try out the game, as Kat!
Awesome?
Awesome!

Cheers