Sunday, June 7, 2009

28 Erlang

I read an article on DevMaster.net this morning on how straightforward it is to code an MMO server with Erlang.  I haven't even started looking at issues of scaleability yet, but if it's really as effective as he claims, this could be a good choice should Evidyon become extremely popular (like we hope ;)

Coding is going very well--I'm looking forward to having the new map engine integrated with the editor, client, server and new map editor by Tuesday.  This will be a huge step forward since we'll be able to build a massive, interesting world with minimal pain.


--

It's technically day 29 now, but this is like 28++ because Im not going to sleep tonight.  Good stuff happening, gotta get it while it's hot!

3>../bin/sandbox/\sandbox_d.exe : fatal error LNK1120: 158 unresolved externals
3>Build log was saved at "file://c:\Unseen\Projects\Evidyon\apps\build\sandbox\Debug\BuildLog.htm"
3>sandbox - 1331 error(s), 0 warning(s)

Whoops.  That's ok I'll be there by morning.

Saturday, June 6, 2009

Has it really been 27 days?


I'm amazed the time has passed so quickly.  Fortunatey, plenty has gotten done and more is on the way.

Today's white noise:  Myth of the Genius Programmer

Map renderer does its job perfectly--occlusion, lighting, fluids, pits, walls...you name it.  I'll add new features as time allows (corner walls is on this list), but the framework to support them is solid and will let me get on with integrating this into Evidyon's client and editor either today or tomorrow without jeopardizing future functionality.

I've coded up improved scenery and mesh renderers too.  Scenery renderer takes over the job of its predecessor from the client application (drawing items on players and drops on the map) as well as some of the burden from the old map renderer (drawing trees/bushes/lamps/etc).  This should make the client HUGELY more efficient, and hopefully solve that nasty BSOD bug.

Also, the new scenery renderer is buit to have special effects attached.  Sparkly swords, flaming torches, and dazzling armor--here we come!

Friday, June 5, 2009

Day 26, T minus 9 and counting


I go home for vacation in 9 days, and Evidyon needs to be in a mostly-compete state by then.  It's time to get down to business (again)!

Today:
1. Map editor
2. Map editor
3. Map editor?

2300
Shabam!  I can't do the new map editor without this new format, and boy am I glad I waited on finishing it.  I found a much more efficient way of doing what I was doing before, and I've made huge strides today.  I should be abe to have a basic working editor up tomorrow if all goes well, followed by a reasonably usable one on Sunday.

Thursday, June 4, 2009

25% = 1/4

Creative, I know.

Anyway I fixed some stuff with the questing this morning and they seem to be working just fine now.  In the future I'd really like to support group quests--they could be a lot of fun!

I'm going to work on the map editor today.

2035
Well, I ended up taking a personal day instead.  Went to the store, cleaned, etc.  Two things to report on from this front that aren't strictly Evidyon or Unseen-related, but are cool enough to mention:
1.  For the most enjoyable coffee I've had in a while from beans I had thought were a bust, mix 2 tbsp sugar with 1/3 cup grounds and brew (small flat-bottom).  It comes out so mild and delicious that I don't even add any sugar and only a splash of milk.  I think putting some sugar in the grounds separates them and allows them to steep differently, because the difference is like night and day--not even comparable to brewing then adding sugar.
2.  This is the first thing that I'm writing on a pair of keyboards that I hacked up to allow me one keyboard for each hand*.  Using two USB keyboards, I cut each such that I can sit in a chair, rest my hands on the arms and without moving them, type on the computer quite comfortably.  It's a somewhat unnerving effect because typing like this is so comfortable and natural that it almost seems wrong.  Now if only I could control the mouse by looking I would have a perfect interface!  Hehe.  Geeky, no?

Anyway, tomorrow I'll need to do some more cleaning around here (using a hacksaw on the keyboards created a lot of plastic dust and it's late enough I can't spot it all) but I'm going to start, quite comfortably, on the map editor coding tonight.

*Hooray!  No more RSI effects :D

Wednesday, June 3, 2009

twentyfour - show quests on client

Ok, so all I have to do is get quests showing up on the client and I can finally release this quest update.  The big decision here is how much info to give the client: should the client be told how much they've progressed on a given quest?  The description says they have to kill 230 orcs to complete this quest and bring back a golden rapier from one of their corpses.  Should the quest display "210/230 orcs killed"?  This seems a bit...well, artificial.  It would seem to me that would make the game seem less pure.  Plus it's not fun to code and puts a burden on the server...

So unless players ask for it, I'm going only to display timers (and names)!

1315
Quests are sent to clients and there is now a display panel for them accessible via right-clicking one's own player.  It also displays tooltips (compiling this to test right now) with the description in them.  Move the text-wrapping method to the font...finally...so it doesn't run on forever.  Can probably use exactly the same thing for the chat log.  Super cool.

Last thing I need to test:  being able to give up on a quest by clicking it in the quest log.

1415
IT IS DONE!  Time to make some quests that people can actually test out.

Tuesday, June 2, 2009

Microsoft's "Natal" is like a Wii times 23

If the "Natal" project from this video by Microsoft Research is really as good as it looks...it will completely revolutionize the world.  No kidding.  From the post by Johnny Lee on his blog, the 3d pointcloud scanning ability already far exceeds the ability of even the most state-of-the-art ragefinders.  Not only is the density hugely impressive, it's behaving in friggin real-time!  That's incredible!


Anyway, quests are nearly complete!  I'm coding the last two database methods now and am about to test :D

1715
SWEEEEET!!!! The Aurelian Blade quest works great.  Doesn't save quest history to DB yet, will add that in now.  Left to do:
  1. set up day/week/month quest offer times
  2. saving quests to db
  3. load quests from db
  4. log kill count (specific & qualified)/pk count/death count/map change/etc.
  5. instantly fail quests w/ that parameter enabled
  6. show quests on client, allow quest failure
  7. competitive quests
1730
BAM time finished.  Going to test taking items from players on quest complete.  Already tested and confirmed that only items generated *after* a quest starts qualify to complete that quest.

1800
2, 3 done; fixed bug with % showing up in speech log.

1830
4 done .. dinner ... 4 tested & works!

2330
Moved 56k of data off the stack in the client, maybe this will solve login issues since windows won't have to allocate such a big amount of stack memory.  Did some code reorganization, too.  Also...quests might not be working quite as well as i thought, looks like I can repeat the blade quest as many times as i want on an alternate character.  hrm.

Monday, June 1, 2009

22 Quests

Questing is going GREAT!  I've coded all the behavioral stuff into the NPC (the different phrases) and I'm about to test him out.  Gotta recompile because I added another phrase, though:  accepted quest but can't pay.

Here's my list for today:
  1. Test NPC dialogue for various situations with hard-coded quest parameters (half an hour)
  2. Implement quest proposal display on client with accept/decline buttons (1 hour)
  3. Write quest interaction code that checks to see if you qualify for a quest, have completed a quest, etc
  4. Save questing data between sessions and ensure consistency
6 pm already?!?!?!!?!?!!?
Well that was crazy, I woke up at 7...had some food...took a shower...wrote this post around 8:30 and started coding.  I forgot lunch, whoops!  I guess that's what happens when you're having a BLAST doing something you're really interested in.  Quick accomplishment list then I'm going to work out:
  1. NPCs speak to the player and can have very long phrases that don't interfere with one-another.  Situation:  two players both trigger an NPC to say a different set of phrases at the same time.  Whose phrases win?  Well, in this system BOTH do!  The NPC sends out the entire phrase at once to all clients when it is generated, along with the actor to whom he is speaking.  If a client realizes that the NPC is speaking to its avatar, it will lock the NPC's speech as "persistent" and only display that NPC's phrases, even if the NPC is triggered to say something else by another client.  This also makes it so that the client is entirely responsible for rolling through the NPC's spoken phrases, which takes a lot of burden off of the server.
    REALIZATION: This is why I love this blog!  I just realized that because of this system I don't even have to sprintf the actor's names into the spoken text anymore, I can just leave the %'s and do a straight-up send on the text!  Since the clients know which actor is being spoken to, they know that actor's name implicitly!!!!!!  (minus the no-name bug....guess I'm gonna have to fix that one before quests go out)
  2. The quest accept/decline panel works great
  3. All methods for quest states are stubbed out
ten
phew, I've implemented the prerequisite method stubs.  tomorrow i should be able to do more coding, then actually be able to try out a quest or two!  Wednesday looks good for release =D