Wednesday, September 24, 2008

Still Here

Sorry for the delay lately in updates.. I know there are a number of people who check this blog regularly (I have google analytics set up). I have been busy lately but have managed to work on Drasil a bit at the same time. In the next couple days I will probably post a VIDEO of drasil on here for all to see some of the cool feature's I've been talking about. Nothing major has been added in the past few days except
  • Fixed a bug that could crash the server if a user runs into the edge of the map
  • Performance optimization to packet building of server-3dSound effect packet
  • Moved the close "x" over and down to be better aligned with the various windows of the game.
  • Slight improvement to the string compression which is applied for chat. (For more info about the compression click here
Anyways, please stay tuned.

Thursday, September 18, 2008

Lots more to do

Aside from the bigger features done lately like the skills system becoming fully functional, I've also done a bunch of smaller things like tweaking some graphics related things, fixing up some GUI stuff, adding sounds to menu clicks and window openings and closings etc. to give the game more substance and immersion. I'm really hoping to get a live Alpha test world up and running soon but it mostly depends on when our project leader can get that set up.

Next things on the agenda will be pretty big
  • Advanced character customization features (custom color of character hair, eyes? ect.)
  • Hammering out any bugs that come up with the skills system
  • Working on some basic foundation to support character class types or special abilities
  • Item crafting related skills
  • Buying / Building houses
  • Guild system

We have skillz!

Well, I finished the skills screen. There is some debate as to if we'll continue to call them 'skills' or if they will be called something else. Personally, I've always thought of anything you're able to do as a skill or an ability, but some of the other people working on Drasil want to possibly change the name. Anyways, for now they're called skills and here's what your list of skills looks like in game. Note the bar underneath each skill is the amount of exp. obtained towards that particular skill's next level up:

I'd already added skills and the exp needed for skills sometime a few weeks ago it just wasn't being displayed on the client. Having the skill's level + exp updated on the client cost the server about 8 bytes of bandwidth for every time you swing your weapon/cast a spell, but supports having a skill run up to level ~32000 and exp needed for skills run up to ~2400000000 or so.

Wednesday, September 17, 2008

Because the others are lazy xD

Well, I have the entire platform hammered out for the skills, but have been lacking a GUI to actually show your skills levels on the screen and such.. Finally I just decided to throw together a skills window myself, this is how it looks. (Haven't set things up to print your skills into it yet but basically it will be a list)

Saturday, September 13, 2008

Artist Needed.. Desperately

Well, a few people complained about some of the new graphics noting that the 'Lost Soul' looks like the Michelin man or the Marshmallow Man from GhostBusters and the Lava Troll looks like a walking Terd. But please don't judge from the in-game screenshots as blogger seems to resample my JPEGs and make them lower quality and thus give them a really crappy look, maybe from next time I'll start posting screens as PNGs instead.

BEFORE and AFTER:


I have come to agree with these statements but rather than give up I edited the graphics a bit, turned down the saturation on the Troll and added more definition so you can actually tell what part is the head, etc. Perhaps someday we can replace these graphics entirely, and Sandopan (the project manager) is on the lookout for a new graphics artist. As for finding an artist, I think it's one of those If you build it, they will come scenarios - if we show off a great game with mediocre graphics and say we need an enthusiastic graphics artist, we may be able to bring some talented people into the team; PS - if you're an enthusiastic graphics artist who wants to be a part of a community project like Drasil, make a post on our forum here.

On the coding side of things, I worked on the code pretty solidly yesterday for about 3 hours; Mostly under-the-hood stuff that users wont directly notice but also some important feature updates to make the stats system work better, some tweaks to the chance-to-hit and battle calculations to make them more easily balanced, and some tweaks to a couple of the AI routines including the Guard AI and the Run towards Users and Attack Them AI routine in particular.
Also added this skeleton dude, which hopefully looks better than the other monsters, I think it looks pretty cool in-game actually. But it begs for our main sprite-sheet to look less chibi-ish.

Also, I really need a UI Window made for the skills list before I can finalize the skills system (about 80% done already), Sando if you're reading this please hook me up, but anyone else who likes doing interface graphics and can work with an existing theme please drop a comment here!

Thursday, September 11, 2008

Trolls and Lost Souls

I took a few days vacation from Drasil to have fun out and about in Japan where I'm living. I also celebrated a birthday (yay me!) but on to the development update...

Well, we've added a few new monster types to the game and in the course of testing out some of the new stats system and skills and such I've temporarly changed all of the mice and rabbits in the tutorial town into our two newest monsters: Lava Trolls and Lost Souls:


And the same town with their AI turned to non-aggressive:


I know everyone likes screen shots, but hopefully we'll have the actual game up in the next few weeks. A lot of things that were on the main to-do list are now complete and it's become more of matter of polishing and squashing bugs and tweaking/balancing.

Monday, September 8, 2008

Damage


Left: Battle-Simulator dev-app.

Lots of work done today on the damage system and defense system. It still needs some tweaking but it's fairly intricate. Basically a player's attack skill (the skill related to the weapon they have equipt) is compared to to the weapon's usability rating - basically what skill level the weapon bearer needs to obtain a 'max damage' hit with that weapon - and also compared to the target's defense skill to come up with a min-max range of how much damage could be done, also before this is calculated there is a comparison only of the attacker's attack skill and defense skill of the target to determine the probability to hit the target.

I've developed the battle simulator app (seen in the screenshot) to basically play with the algorithm a bit and iron out any bugs + tweak it. Special thanks to my long time friend Parker for his input and help in hammering this whole system out. There will be more detail added to the system (such as the ability to aim for a part of the body to make a more critical hit) as this progresses.

In other news, I'm hoping to have some up-time with the server soon to try out an early alpha of Drasil 0.4a to see how the mechanics work out and squash any bugs before we move forward. This server up-time more or lest rests on the shoulders of Sandopan so bug him about it for me if you have the chance xD.

Wednesday, September 3, 2008

Input needed!

Well, we're at the first road-block. Not so much a technical difficulty as much as the need for some input and some brainstorming. I really need to nail down the type of calculation we're going to use to calculate the damage done by playerA when they attack playerB. By all means, if you're reading this and have any good ideas, please leave a comment explaining your idea.

Unlike the stock engine of VBGore, we now have a nice palette of skills and stats. The big difference being that in stock vbGore, the player has a stat called 'DMG' and 'DEF' that are basically used to roll two dice and the def. of the 'victim' is subtracted from the 'dmg' result of the attacker. But now, the system has more depth and needs a deeper reaching algorithm.

So instead, each weapon has a stat called minHit and Maxhit and the player has an associated skill (for example in the case of using Short Sword the players associated skill might be called Swordsmenship, etc.)

Subsequently the player / npc being attacked has 2 things going for them; First, they have an associated Defence skill (if being attacked with a sword, this skill might be called Melee Defence, if being attacked by a Mage's spell, this skill might be Magic Defence, etc.). Secondly, the defender might be wearing armor, which will give them an 'Armor' rating. Furthermore, this armor rating may be broken down into 3 categories; Magic Armor Rating / Missle Armor Rating / Melee Armor Rating which would somehow determine what percentage / ratio of damage is actually inflicted onto the wearer and how much is obsorbed/stopped by the armor they wear depending on if the attack is from a melee weapon (sword, axe, etc), missle weapon (bow, crossbow, spear, throwing dagger, etc) or magic weapon (spell, enchanted staff, etc.)

Basically I need an idea of how to plug these variables in, mix with a bit of a random number/ratio/percentage, and come out with a number that is shaped by each of these factors:
  • MinHit & MaxHit - Currently equipt weapon's minhit & maxhit ratings
  • Skill Rating - Player's skill level of the skill associated with the weapon (eg. if they are using a sword, this will be a skill called 'sword' skill (just an example).
  • Def. Skill - Defender's associated defence skill rating (eg. in the case of sword, a skill called 'melee defence'
  • Def Armor - Defender's armor's associated rating
Any ideas are welcome.

Tuesday, September 2, 2008

screen shot FTW

Just thought I'd share a more recent screenshot to show how the UI is comming together. Nothing is written in stone just yet, but basically the bar along the bottom above the quickbar will be the new experience bar, there are 3 new bars along the top that show food, drink, and sleep i believe (but we're not 100% on how these will be handled). There is a chance that the health and mana and stamina may be switched to be displayed in the bar along the top. Anyways, its comming together smoothly.


Stats and skills is starting to become more finished (but still a ways off). I will soon be releasing a 'battle simulator' app to the content development team so they can get a feel for how stats will affect the NPCs they design during combat.

of updaters and updates

We have a saying in Japan - チリも積もればば山となる - chiri mo tsumoreba yama to naru - it means basically Even specs of dust can pile up to become a mountain. And this is definately a philosophy to keep in mind when writing a large scale game. Every day lately has seen steady progress here on the programming side. Today was no different, except that I am still trying to decide how best to handle the skills system, but I think I have a good idea of how to do it effeciently now.

Drasil's UI is continuing to get a face-lift, so I think you will find it feeling leaps and bounds different and more polished than ever before come the next release.

I also spent a few hours today tackling a mini side project that is directly related to drasil and will affect everyone; I've re-written the Auto Updater platform completely so that it can run off of a standard webserver. This will mean much much faster download speeds when updating the game, and also mean that when people download updates, it will not affect the gameworld's server's bandwidth or performance in the slightest (unlike before). Here's a screenshot cuz I know how much everyone loves pictures:

Monday, September 1, 2008

Back to business

Alright, it's Monday here in Japan and I'm just trying to get my bearings straight again. I've been working on the stats system a little more, and now comes a tricky part where I really need to work on a skills system because the stats system and skills system are so linked. I find myself facing a kind of programmers' version of the Chicken and the Egg problem (which comes first?).

I'll keep plucking away. It's a slow start but I'm sure to get digging through the code again in no time.

On a positive note, I found 2 more small optimizations, one of which is a case of changing 1 line of code and making a certain commonly used function (part of the packet building engine) about 20 times faster than before. Anyways, more updates to come.

Friday, August 29, 2008

New Progress + ScreenShots

Well, all is comming along nicely.

The stats page is complete, and I'm still in the midst of implimenting the abilities to increase stats and skills and pretty much that entire part of the game is comming together at once. It is about a third functional right now, but looks pretty good, have a peak!


Don't mind the 25FPS, I set my frame-limiter super low to 25 because this laptop overheats and is old. Actually I found out the other day that drasil defaults to Software rendering on my system because it's so outdated. Without a framecap, it runs at about 70FPS, but uses 100% CPU because of my system running 100% in software mode.

In my time between tackling this particular problem, I found 3 small optimizations on the server (places where some commonly used packets could be cached and stored in memory instead of built in realtime [uses a few bytes of RAM, saves 10+ CPU cycles]).. Also changed the way server stats are displayed on the server end to be more useful AND use less CPU (it used to update the tooltip text of the server's tray icon whenever anything happened that changed any of the stats, now it only builds a stats string when its really needed, as I've added a stats label to the broadcast message window of the server):

In case you don't know what the broadcast message thing is, its just a little feature where the server operator can send a world-wide message to all players that pops up an in-game messagebox type of thing to notify the world if the server is going down for maintenance, etc.

Also note the bandwidth usage for 1 player is on average about 0.2-0.5KB/sec, this is INCLUDING the overhead of the TCP header and the IPv4 header.

Well, its the weekend so don't expect any more updates until monday. I'm looking forward to getting back to work on Drasil next week.
Feel free to post comments, it would be nice to hear any feedback from the community.
- Tim

Drasil has Leveled Up

Well, good progress has been made. An entirely revamped stats system, spendable exp system (more on this in a second), and skill points system is nearing completion. The way I am setting things up will put the infrastructure in place so that additional changes to what items do what, what weapons create what amount of damage, etc. will for the most part require no knowledge of the code base by content developers and truly rely on the SQL database to build up the various content and skill systems implemented into Drasil.

Spendable Experience
One thing we have recently decided to change in Drasil is how stats are increased. In most (albeit not all) RPGs, you grind away and finally hit a 'level up' point after X amount of experience is gained, at which time you are generally given some form of 'points' you can apply to increasing your various stats. But, we have a different approach that will offer more frequent, more finite tweaking of your character that doesn't require finally hitting the big 'level up' point after grinding for 10 hours. Using a different system, sandopan and myself decided to untie your stats from your level-up event almost completely. What does this mean? It means you don't have to wait to 'level up' in order to 'level up' your various stats. Rather, you will gain experience as normal (and in some ways that you might not of thought of), and then spend those 'experience points' at any time to level up your various stats, at any time. For example, from the beginning strength may cost 102 exp. to increase, quickness may cost 84 exp, so as soon as you've gained 84 exp. you can increase your quickness, or you can save that exp. until it reaches 102 and level up strength, etc. Does this sound familiar? yes? no? It has been done before.

In this system however, your lowest level skill will generally be the skill that cost the least amount of exp to raise, so in theory you could train Strength and Agility for ages and be a mighty hulk of a warrior, but then suddenly decide to get some magic skills and find that Wisdom and Intelligence are dirt cheap to level. To a less extreme extent this type of mechanic could be interesting, but if left unchecked completely it would lead to characters that are too over-powered in everything and do not need other players assistance, etc. This is where a class system (or hybrid class system as has been discussed by the Drasil team) could be applied. A warrior would have a much toughing exp. price to pay for Wisdom and Intelligence right from the beginning, and a mage would enjoy a cheap exp price for those skills but a tough price hike in regards to Strength and Agility. etc.

When all is completed, this new system should offer a more frequent feeling of progress rather than waiting to touch up the smallest of skills. Don't be surprised if we start using some big numbers though compared to some other RPGs that have less debth *cough* WoW *cough*. Bigger numbers that count for less mean smaller incriments. Essentially the same system, but with more frequent more finite tweaking to keep the game more interesting and give the user more finite control.

Thursday, August 28, 2008

Yay -.-

Well, not everything can be perfect all of the time.
Sometime between this afternoon and tonight I severely broke / botched up the main drasil client AND server code to the point where trying to create a new character would cause the client to crash with some sort of unknown exception error followed by one of those 'would you like to tell microshaft about this problem' boxes.

I do however make back-ups at relatively frequent intervals and generally only when I'm confident beyond a doubt in code stability. So I just rolled back the code to where it was at 1:50pm this afternoon. Nice and stable, and actually not much is lost. I had just implimented stats for NPCs and Objects. There are some new stats for objects, such as ReqSkillLvl which is basically the level of the skill associated with the object/weapon to use the object (for example, some fancy item might be called 'God's Perfect Wood Chizzle' and require Woodworking (the skill used for chizzle) to be at least level 82 before using, or something).

Sadly though, I did lose some progress on actually going through and implimenting the stats throughout the server and client code. I do find that re-writing code a second time often leads to better, faster, more robust, more optimized code that breaks less and is more expandable and ready for the future - that is, if you were lucky enough to learn anything the first time you wrote it.

Well, I'm off to bed now though, so although much of today was wasting, not all is lost, and here's to it comming out better tommorow.