Sunday, June 28, 2009

Animated Meshes and PNGOut

Animated meshes are rendering, but not animated. Animations will be working in the next hour.

Found a great utility this morning via Y-Combinator's Hacker News. Called "pngout", this tool compresses PNG files while maintaining all information they contain. I tested it on some of the stuff for the new website and found it made the files on average 10% smaller. It might be worth integrating this tool into the game editor to reduce the size of the compiled images... http://advsys.net/ken/utils.htm

Saturday, June 27, 2009

Slogging through the animated mesh /skinned mesh renderers. It's always annoying when things require so much code before I have anything to show. Right now I can't actually tell if the last few thousand lines I wrote even do what I intended. They compile OK and run through without error, but I can't see anything on the screen because the part that does the drawing isn't quite done. Today, hopefully, that will change.

Wednesday, June 24, 2009

Sounds & Special FX

Sound manger is in and working again, sounds seem to work fine.

Next up is the special FX manager which lets you do the really cool spell effects--combining sounds and patterning multiple visual effects together.

Ah, still so much to integrate. Going smoothly though.

Tuesday, June 23, 2009

Aaand, we're back

Vacation was great! I'm really recharged and am ready to head back into Evidyon again for the rest of the summer.

While on the 10 hours+ of plane-time, I managed to solve a couple of pressing problems:
  1. How portals work
  2. Making AI navigate easily
Both solutions are pretty elegant. Hopefully we'll have a dev meeting soon to discuss them.

For now I'm going into the editor and am finishing up the visual FX engine. Cool stuff going on there, screenshots soon. After that I need to work on the map a bit more--adding triggers and spawn points is a big priority.

Also, a formula I need to remember: (1/2*screen dimension) + 2*overlap border <>

Friday, June 12, 2009

More pics from the new editor



I'm getting tons of work done--so much I can't really stop to blog about it! Brand new features of the editor that work very well:
- Intuitive scenery editor that lets you rescale, move, rotate, retexture and compare side-by-side all scenery in the game. Lets you automatically create variations on scenery, too! Completely WYSIWYG: it uses *exactly* the same renderer as both the map editor and (soon) the actual game client. Includes a semitransparent ground-plane and wireframe tile renderers to give you a feel for the scale.
- VERY cool map editor. Lets you draw on different map masks directly and can update those masks to disk--no more going back-and-forth drawing in two colors in Paint or exporting from Photoshop every time you want to see how something would look. Also provides a very snazzy-looking overlay for navigability types (impassable wall, water, safe zone...)

Thursday, June 11, 2009

Tuesday, June 9, 2009

Day 30

So yesterday sometime around 2 or 3 pm the code started to crawl because my damn right-hand keyboard's up arrow stopped working. I verified the keyboard was working by disassembling it and making sure the arrow worked when I connected the circuit on the printed sheet, but I just couldn't get the thing working again. My momentum was broken and sleepiness finally started muddling my brain...as a result I gave up for the time being and packed for my trip home and cleaned the house. Looks pretty good now.

My goal is to have this editor working and integrated into the game by Friday night. This is going to be a lot of work because there is SO MUCH new stuff, but if I can do that then we're pretty much golden for Beta.

I do have to say though, a single keyboard just isn't doing it for me anymore. It's so cramped I feel carpel tunnel setting in just using this laptop keyboard. Ugh. I wish that stupid other keyboard were working.


2330
Leaving on a plane in the morning. Editor WORKS! The map system integrated *perfectly*. It does exactly what I want it to do and it's really easy to set up. I haven't tested all the features yet, I'm going to get some sleep tonight so I can knock all that out tomorrow. Score one for the home team.

I should also mention its REALLY slick--smooth, intuitive, and fun to use!

Monday, June 8, 2009

28++

Hour 25, still going strong.  Going to get through this and roll out an update like never before.  Finished:
  1. New map engine
  2. Unified map layer masks (can use any # of colors)
  3. Made layer masks even more awesome to use by allowing multiple references to the same mask
  4. Layers can even reference each other, and the system is very flexible & extensible.  Triggers, npc spawn points, etc. are going to be a breeze.  You'll also be able to see all of this stuff in the editor instead of just guessing at where it might be.
  5. Blending between layers is significantly more simple, more powerful and FAR faster.  Not tested yet, working up to it....
  6. Rebuilding editor tool to use all up-to-date code, which will significantly speed things up and make it easier to use.
  7. Wrote mesh converter from D3DX to unified format
  8. Finished all images & implementation, added preview functionality to test new rendering method
  9. Finished all textures & implementation--integrated new scene manager so that game will now run not only the same behavior but the same actual module of code.  Before two modules were emulating one-another.
Phew!  Gotta keep going....
  1. Meshes, mesh renderer added...
  2. Scenery, scenery renderer added..
Things are looking good!  Next up is the map in all its new glory.  *crossing fingers*... err ... *uncrossing fingers to type*

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