More Fun Shots

I'm pretty excited as my graphic artist is now finished with most of the tileset work and now it's time to do backgrounds and monsters!

Slowly but surely, the story seems to progressing.  I know have tons of ideas for little quests, it's just a matter of implementing them and herding the player through the global story.

Anyway, here's some more screenshots.


Fun Shot - #?

Hi All,

Working on adding static background images to the game.
Because I used OpenGL, scaling came free!
Here's some snapshots.


The Art of Storytelling

It's been a while since my last post and that's mostly because I've been working a full time job.
I thank God that I got this sweet gig as a mobile app developer.
This gives me the chance to learn and develop for iPhone/iPad and BlackBerry.  Which means more potential clients for the game.
That, however, is in the distant future.  I've still got to get the Android release out there.
What's even better is that the job doesn't require insane hours.  I've still got plenty of time to work on SolomonRPG.

So, toward the goal of releasing the first version, I've slowed down development of the game engine and am now focusing on the art and storyline.  This doesn't mean the engine has stalled, I just feel that it's at a point where it's good enough and has enough features that I can start concentrating on other critical aspects of the game.

Believe it or not the programming is not the most important aspect of a game.
At least for what I've had in mind since the beginning.
I really hate many of the MMORPGs out there for a few reasons.
 For example, Pocket Legends, has great gameplay and graphics but I have no idea what the story is.
Granted I've only seriously played it for a few days.  There is no insentive to play beside just leveling up and collecting items.
What's even worse is how you can actually buy items and powers using real money.
I hate this.  It cheapens the game and feels like a sell-out move.
Another thing is the story, or lack of story.

What I love about RPGs are the stories.  I remember the good old days when I played the greats.  Breathe of Fire, Chronno Trigger, YS 1&2, Secret of Mana, Zelda, Final Fantasy, etc.

These games ruled in the story telling aspect.  They introduced characters and story lines that progressed and changed, climaxed and concluded.  Some of the characters would even die.
Now in most modern MMORPGs this notion is gone.  They are not true to their ancestors and have become nothing more than a cheap quest fill system to make some quick cash without actually making a game.

I'm not saying that I think the story line that SolomonRPG has is any better.  In fact, it might be worse because I'm not a professional writer.  I haven't written a story for a long time

I'm saying it is a unique challenge to have a few races/classes and develop stories around them.
These stories have to be cohesive to build/narrate the story of the virtual world.  They have to drive to a point and a conclusion.  There is drama and conflict in the middle.

At the same time, you must keep in mind the constraints of the virtual world.
For example, the engine was designed to use a magic battle system.  So you have to give a good background/narrative has to how or why the characters are able to use magic.
You have to motivate them to continue to level up and interact with the virtual world.
You also have to keep it simple enough where casual users don't have to read through tons of text to be able to pick up the game and play.

These and other factors make story telling challenging.  These are the types of questions that forced me to really examine the story:

What am I doing here?
What is my goal?  What is my history?
Why is this town here, why are the other towns there?
Why are those monsters there?  Where did they come from?
Why do I have to fight them?  Why do they fight?
Why should I do a quest?

Furthermore, the idea of having to write a bunch of brain-dead short quests that don't really tie into anything was not acceptable.

Back to the things I hate about most MMORPGs.  You may have noticed that in the Android market you'll see that most MMORPGs are crappy website type 'games' that don't even have any moving graphics.  You click on a button and you see some text change.  Boring!
To top it off these games don't offer anything in terms of story telling either.
They usually consist of the same old: Go here, get me X of these, and I'll reward you with this.

This is why I never play World of Warcraft, what's the point?
I don't care about the characters, and I don't care about leveling up for the sake of leveling up.
I guess the only real motivation there is the end-game.  Where you can battle against other players and do party raids.  That's the real fun in leveling up.

SolomonRPG doesn't have a raid system, or even PvP yet.  So, I had to come up with a concept that'll motivate players to co-operate and level up.  To continue playing toward something.
However, in there lies yet another issue.  What to do once the story 'ends'?
I guess at some point I'll have to implement PvP and raiding of a king.

This is the reason I have been so quiet for the past few months.
This adds yet another challenge to making SolomonRPG possible.

In the coming months I'll keep you updated on any progress I make.
So far I have the world story premise but I'll hold off on telling it for now until I polish it a bit more.
I'm also in the progress of making character lists and dialog for each one.
Creating an end-story that will be where all the sub-plots lead to.

These are all new aspects for me, but thankfully God's been giving me the chance to meet some really smart people who have helped give me tips and advice on how I should tackle this.

Anyway, for now I'll just post some random art for the game.  These are all still concepts.
Wish me luck, and don't forget: Jesus is King!

Here are some snapshots of some of the custom art and maps that I've gathered so far.
None of this is final, in the end I'll probably use tons of pixel art for the old school feel.
Also, thanks a bunch to Kinou Games for being awesome.  They've done a bunch of custom tilesets and character sets.  They've also been helping me with the art style and map concepts.   All in all, I HIGHLY recommend them for anyone who needs good game art at decent prices.
(The first hand drawing is by a personal friend of mine.)


Android: Canvas Frame by Frame Animation Tutorial

In this tutorial I will outline how to play an animation on a canvas on Android.
As you may already know, the canvas is the standard way of drawing on Android.
Drawing to a canvas is fairly straightforward.  You typically extend a View class and override the onDraw method.
In this case we will override ImageView for the sake of simplicity.

I will be using Eclipse for this tutorial.
First, create a new Android project with Eclipse.  You can use 1.5 as the target.  I've named the application animationtest.
Also, make sure you create a default activity, I call mine 'DefaultActivity.'
The package name I'll be using is com.solrpg.animationtest.

After you have created your Android project, create a new class named MyAnimationView.  
This class will extend ImageView and we'll do our drawing here.

Now, your view is ready to use.  Because DefaultActivity simply sets the activity layout to R.layout.main we'll need to modify it.
So, open up res/layout/main.xml and remove the TextView entry and replace it with your custom view using this xml: http://github.com/therevoltingx/android_animation_test/blob/master/res/layout/main.xml

Now we're ready to display our animation.  I have prepared a set of png images from a gif.
You can see the original gif here: http://solrpg.com/resources/attacks/2/2.gif
Then I imported them into res/drawables/ naming them shark_0.png shark_1.png shark_2.png and so on.
Where each number is the frame, all together this animation is 16 frames.

Now it's time to go back to MyAnimationView and add our animation code.  Basically, android calls onDraw every time the view needs to be drawn.
Typically this only happens once when the activity view is being set up.
After that, we have to call invalidate() on the view to have Android call onDraw().

First, we have to load the resource drawables into an array of bitmaps which can be drawn on the canvas.
So, we add a loadAnimation() method to MyAnimationView.  This method simply loads the frames from the res/drawables/ folder into a list of bitmaps.
In the example, we load the bitmaps when the default activity is created.
Once all the bitmaps are loaded, the animation is ready to be drawn.

Now, back to our onDraw method.  
First we have two private state variables called mIsPlaying and mStartPlaying.
Every time onDraw is called we check wether either one of these is set and draw the bitmap frame accordingly.
In order to start an animation we simply set mStartPlaying to true and call invalide() to have Android call onDraw().

When an animation is playing the variable mIsPlaying is set to true it checks which frame it has to draw.
In order to know which frame to play we need two variables play_frame and last_tick.
play_frame is set to the frame index of the animation that we're about to draw.
last_tick is set to a system time stamp.  This time stamp is set every time a frame changes.
This lets us calculate how long the current frame has been drawing.  
Once a specified amount of time has passed it increases the play_frame counter and calls invalidate()

Now you're ready to draw the animation.  We add a method called playAnimation() which simply sets mStartPlaying to true, then it calls invalidate().
In the tutorial application I added a button that when pressed calls playAnimation().

That's it!  Drawing an animation this way is fairly easy, I hope someone finds this helpful.