Home

Advertisement

Spectre Gruedorf Challenge Blog [entries|archive|friends|userinfo]
Spectre Gruedorf Challenge Blog

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

(no subject) [Nov. 23rd, 2009|04:13 am]

mad_and_crazy
A long absence from Gruedorf has been interrupted to inform y'all that the Dredmor source tree has now hit its two thousandth SVN commit.

And that's only counting those SVN commits made to the tree since we last had a server blowup.
LinkLeave a comment

(no subject) [Mar. 30th, 2009|03:22 am]

mad_and_crazy
Docks make everything better.

Naturally, there's a fair amount of cleanup to do on this: docked windows don't collapse, there are some interesting sizing issues, some tool windows need to be redesigned to account for a change in vertical/horizontal space, etc. But that's all just easy stuff.

Shadows, on the other hand, are pissing me the hell off. Sancho the sad octopus, no matter where I put him, does weird shit when you light him. What's worse, he *always* has shadow acne. Maybe that's why he's sad. One thing that did help with the VSM was biasing depth space so that, instead of going from [0,1] it now goes from [-0.5,0.5]. You wouldn't *think* this makes much of a difference, but it does. Basically, floating point precision sucks. Floating point precision on the GPU sucks more than usual. I still haven't been able to get everything operating with respect to the original distance metric suggested by Andrew Lauritzen (z-distance before projection in eye space), though. And I haven't added a blur pass yet, which will probably help things a bit.

In other news, I upgraded the version of the Bullet physics library that we use to 2.74. This one includes an actual character controller, which beats the hell out of my hacked together thing even if it does tend to get stuck on geometry sometimes. That might be me, you never know.
LinkLeave a comment

(no subject) [Mar. 28th, 2009|03:00 am]

mad_and_crazy
Note to self: store coordinates for shadow maps in eye-linear space, not post-divide space.

I really need to stop hacking on the fun graphics stuff and get back to the boring toolchain, don't I?
LinkLeave a comment

Meanwhile, back to the interesting development [Mar. 27th, 2009|01:06 pm]

mad_and_crazy
Back in Spectreland, the only thing that has fired me up so far from GDC is the new footage from the Project Offset people. This is for two reasons:

- it explains what the hell happed to Sim Dietrich after his indie thing suddenly stopped posting
- they have interesting footage of their level editor.

The level editor stuff is neat. They have one video that particularly impresses me of their prefab builder, where they just go and build a house and randomly just start splatting paint on it. I don't know if this is unique texturing across the world, or just across the prefab, but by god, that's the future right there. There's some other stuff that is unclear to me about how it operates - how do we pick where the texture is painted? How do I stop from painting on, say, the doorway, or the other models? - but just being able to paint in daub textures and dirt and general ugliness is very impressive.

From what little I can see off of their HD video, their shadowing solution looks really good too (although it's probably just either VSM or PCSS)

This weekend's Spectre TODOs:

- docks for the level editor. I'm sick of having all this floating windowed hackneyed bullshit.
Proper stretching horizontally and vertically too.
- try my luck at implementing random painting-on-things (and making important decisions about the role of SVT in a game engine)
- start the JIT mess.

... who the hell is still gruedorfing these days? I notice that even Grue and Dorf have not Grued or Dorfed recently, so I guess the founders are now Losing. Kael, however, you get a callout. That shit looks GOOD. Let's see some shadowing on those moving platforms versus the world, though - they look like they need a depth cue of some sort in order for them to stand out a little.
Link2 comments|Leave a comment

(no subject) [Mar. 27th, 2009|01:00 pm]

mad_and_crazy
Dredmor TODO for being finished:

- scrolls
- test all remaining unimplemented skills
- fix click accuracy and highlighting issues
- finish implementing all achievements
- put in new funny sign text
- amulets and rings
- repair the artifact system, fix item spawn rates for artifacts
- monster spellcasting: it's done, but monsters need to be equipped with appropriate spells and to know how to use them better
- small bits of monstrous AI code: pathing, doors
- redo any spell effects I don't like (+ get real license for our effects package instead of using the 30-day trial)
- repair load/save system
- meat, other foods
- pet eggs
- locks, lockpicks, and treasure chests
- more balance work on lower levels
- general fixing of bugs

And that's basically all she wrote.
LinkLeave a comment

(no subject) [Mar. 22nd, 2009|07:24 pm]

mad_and_crazy
I said I wasn't going to do anything more to the renderer right now. I lied. (We will stop enhancing the truth in 3...2... *BZZT*)

Dropped in variance shadow maps. Took me all of half an hour, and it improves shadow quality tremendously. What a clever idea. No blur pass yet, because I'm really a lazy sod, but even with just plain linear filtering you get good results.

I have to figure out why the hell my bias in the variance term is so fucking high, though, and I also have to figure out a way to try and clean up artifacts on the edges of 'sharp' pieces of geometry that are coplanar to the light. (i.e. the tops of crates and things) Nothing is perfect, but it's not bad...
Link4 comments|Leave a comment

(no subject) [Mar. 22nd, 2009|03:02 am]

mad_and_crazy
Dredmor: now has an automatic updater which is, well, basically rsync + a wxWindows based wrapper knocked up by the Mighty Icculus. So we can now download updates automatically, distribute them to our users, watch them play the demo, and scrape their new log files to see what the heck they are, and are not, doing correctly. That's how you run a beta, folks.

Spectre:

Hooked shadow maps back into the pipeline for spotlights only. This would have been significantly less of a pain in the ass if I was passing the correct world->eye transform matrix to the spotlight rendering pass. As a result, I spent much of my time today chasing after swimming texture bugs. Now, however, everything actually stays where you draw it. Which is good.

In the process, I tried about three different sets of precision values for various things, thinking that my problems were due to some combination of poor precision reconstructing the depth value, bad sampling offsets, or storing post-projection (and hence with varying precision emphasis) z coordinates as opposed to linear ones. No, it was just a stupid bad matrix.

Shots: here and here. Mmm, jagged chunkies. I also have no idea why Darin isn't casting shadows; probably he isn't writing to the depth buffer. Odd.

There's lots of cleanup that needs to happen here. Point lights don't cast shadows at all, and everything needs variance. I also need to build the various systems responsible for doing first-order radiosity stuff to see if it will work. However, the emphasis right now is on Ruby scripting and cleaning up the level editor now that I'm sort of back where I started with the renderer.

EDIT: Incidentally, the competition seems to be moving. The GG guys - or whatever's left of them, it's all very weird - have announced their new version of Torque complete with various exciting new bangs and whistles. The terrain system looks nice. The lighting system is a light-index deferred renderer... okay, same sort of idea as what I'm doing. I think they still have some kind of a lightmapping solution. The kicker is the price point hitch - you now don't get source code (without which I suspect Torque is pretty useless) or the advanced lighting for less than $1000 USD. This suits me fine in the long term. Torque has fundamentally never been a good product, and this now gives me more room to maneuver vis-a-vis price range. It also indicates that at least somebody else thinks I'm targeting the right things...
LinkLeave a comment

(no subject) [Mar. 17th, 2009|01:42 am]

mad_and_crazy
- specular power and intensity are now material properties, instead of engine constants (and we really should be able to set them to be baked into a texture instead of flat, but that's no big deal.)
- fixed a particularily annoying bug where only the last rendered specular highlight was actually showing up, and the rest were being erased. What a pain in the ass. Turns out that GL_ARB_DRAW_BUFFERS does not actually specify the behaviour of blending across all render targets. So we now support GL_EXT_arb_draw_buffers2 for this case, and if you don't have it... well, it's the luck of the gods. Maybe you get no specular, but this seems kind of ridiculous... maybe I have to do my blending myself?

In other news, the dungeon dwellers are slowly piecing together a web page. Unmotivated by yours truly, even, which is nice.
LinkLeave a comment

(no subject) [Mar. 16th, 2009|04:52 pm]

mad_and_crazy
- put specular back in
- fixed material editing toolbar

shot.
LinkLeave a comment

(no subject) [Mar. 15th, 2009|12:21 am]

mad_and_crazy
Dredmor screenshot:

Read more... )

No real excitement to report, just the grinding out of bugs. This weeks' bugs have all been caused by the devil-spawned auto-logging system.

Oh, yeah, we're into alpha testing right now. Our three testing monkeys are busy giving us feedback and insight. And the game is actually, despite not being finished at all, getting pretty damned fun.
LinkLeave a comment

(no subject) [Mar. 6th, 2009|01:33 am]

mad_and_crazy
When last we spake, it was December.

Now, it is is March.

However, I am not dead. My game company still seems to be chugging away on Dredmor, and we have actually let builds out of the offices for people to play test. Automatic logs are being uploaded to the new webserver and Daniel and David are busy fighting, tooth and claw, to further refine the accessibility of the UI and to balance any last niggling little concerns regarding playability, fun, and so forth. As for me, I'm just happily banging my way through bringing any old systems in line with Daniel's newly designed (and so far, quite fun!) combat system. At this point, the last stragglers are bringing the weapon and armour artifact describers back online (and making sure that unique artifacts spawn correctly, and in an entertaining fashion), implementing the non-implemented random quests, and also adding an options menu so you can actually adjust, y'know, the volume of things.

We have fabulous unique artifacts, too. Writhe beneath the pastry-filled fury of the Shield of Caketown! Turn objects into delicious Lutefisk with the Horadric Lutefisk Cube! (Eat lutefisk!) Try and figure out where you left the Invisible Shield! Marvel at the Helm of Sir Albrecht, who ignored the devil and ran away from Death himself by exploiting its poor peripheral vision! Wield Triangulon's Staff of Greater Triangulation! ... and so forth.

We are nerds. The items in the game are distributed according to the Maxwell-Boltzmann probability distribution. There will be videos as soon as I can get the damned videos exporting correctly... le sigh. Life, she is not always fair.

Now, that said, while this is going on my mind is snapping back to Spectre.

So, Spectre. Oh, how I have missed thee.

When we last left our hero: rendering. )

JIT Level Editing; Lessons learned from Dredmor )Ruby )

So, yeah. Not dead. Just not Gruedorfing.
LinkLeave a comment

(no subject) [Nov. 17th, 2008|03:33 am]

mad_and_crazy
Still Dredmoring. I wish I had something interesting to say, but the truth of the matter is that, while every day we work on it Dredmor becomes better, this doesn't necessarily translate into an interesting post. In fact, most of it is very tedious. And I will be glad when this is over.
Link1 comment|Leave a comment

(no subject) [Nov. 7th, 2008|09:34 pm]

mad_and_crazy
Still beating Dredmor into a beta-able state.

Cut for screens )
LinkLeave a comment

(no subject) [Oct. 9th, 2008|11:48 pm]

mad_and_crazy
Getting a game to beta? Is actually really, really boring. The only really interesting thing that has happened on Dredmor was our new auto-logging system, where we can log user interactions and then replay them at our convenience. So far this has proved very invaluable for debugging Dredmor's 'bizarre, random crashes' caused when half of your damn game is procedurally generated.

Like any good indie game developer, we stole the idea from Casey Muratori.

Here is a screenshot.

That is all.
LinkLeave a comment

(no subject) [Sep. 29th, 2008|02:00 am]

mad_and_crazy
A brief change of priorities:

Dungeons of Dredmor now has a beta date of October 24th.

That is all.

(wanna be in on the beta and test out our really nifty Roguelike dungeon crawler that is actually, y'know, 95% finished? e-mail mordred at gas lamp games dot com and get in on the fun. Testers get to use our really neat automated logging system.)
LinkLeave a comment

Yet More Lighting [Sep. 16th, 2008|11:43 pm]

mad_and_crazy
Materials can be created, defined, and destroyed in the editor.

Shot 1.
Shot 2.
Shot 3.

The world parts have bump maps. Darin does not as of yet. (Falthorn! Come back! All is forgiven! I will finish Dredmor one day!)

Lighting Todo:

- Specular. Right now we don't do any sort of a specular term at all, even though we could and stuff is set up for it to be done. I kind of like having the low-key "everything is dingy" look on everything, but I respect that this is not for everybody.
- Emissive surfaces. For that neon, Blade-runner-esque glow!
- Saving and loading of materials. Right now you can create, but they're not saved out.

Lighting Todo, In The Future:

- Shadows, obviously. Probably the next thing that requires a major investment of time and energy, because shadow mapping really is just a bitch to get working "correctly".
- Re-think the directional lightmaps. It might be nice.

First Version Todo:

- track down that crash in the material editor that I can never reproduce
- track down all crashes related to NVMeshMender being fed invalid data. Shoot NVMeshMender. (Real men calculate their own tangent spaces!)
- The Immediate Lighting TODO
- Finish the Visibility Crap.
- Do some testing on other people's hardware.

I'm going to leave the scripting stuff for Release 2. Again, anybody who wants to be in on the Release Roster, gimme a shout at mordred at gas lamp games dot com.
LinkLeave a comment

More Lighting [Sep. 16th, 2008|02:20 pm]

mad_and_crazy
Spotlights work. Yay. Took me about 2 hours, which is a pretty good testament to the extensibility of the deferred renderer.

It's interesting to note that with the way things are set up, and even using a 16 bit floating point buffer for our depth information, you can still get banding artifacts. Yes, still. 32-bit kills them stone cold dead, but who wants to start lugging around that much data per pixel? Not me. So it's time to research depth precision.

Of course one of the problems is that when we store the depth value, we store it post-projection transform as pixelPos.z / pixelPos.w. Obviously this is a Bad Thing. It really does reinforce the fact that your depth buffer does get less precise the further away you get from the near clip plane when you see it, in action, in the form of giant banding artefacts. I have to go through and puzzle out the mathematics to store linear depth and to be able to compute view space position for a screen pixel from its NDC position and only a linear space depth, not an NDC space depth. Then, at least, we will get crappy precision on everything. :-)

Other notable accomplishments: extrusions talk to the triangulator, meaning you can do things like draw an arch, extrude it, and drop it into place. It doesn't replace having decent CSG ops, which I really need to get working on, but it is a step in the right direction.

EDIT: We also now have bump mapping. Unfortunately there is no way to really correctly associate a bump map with a given texture, so it's time to write the material editing system now.
Link2 comments|Leave a comment

Wade In Your Own Filth Day [Sep. 15th, 2008|04:29 am]

mad_and_crazy
My TODO list is actually trapped, on a server in Houston, that is without power due to Hurricane Ike.

The battle towards getting something useable for a public release continues. My carefully designed, brilliantly plotted TODO list is trapped on a server in Houston, Texas, that is without power due to Hurricane Ike. I also have no SVN. What a mess.

That said, I decided that the best way to puzzle out what needs to be done in order to get something useable for a public release for people is to actually sit down, and build a very small level of a first person game. Build a level, wander around, maybe interact with things. I have some vague design inspiration as well for what I wanted to build, too, which we will leave as a pleasant surprise.

It turns out that without the CF/Perseus bits - the tactical RPG plugin - we are left to fall back on what is left in the engine. That is to say, not very much. Further more, what IS in the engine that isn't tactical RPG-related has broken, all over the place, due to the switch to a deferred renderer and switching our physics libraries from ODE to Bullet. Ugh.

Anyhow, some unpleasant work later, and we have an engine template going again in my Corvus directory (my "let's test sh*t" project dir), with the lighting working (broken recently due to stupidity), and a first person character controller. (Still needs some work on the mouse side of things; in particular, you can't, uh, mouse look. That's because it's really a third person character controller being used as a first person character controller.) So that's better. I was reasonably pleased by how little work it was to get everything doing what it was supposed to do again, and getting a character controller working in Bullet is a hell of a lot easier than ODE.

I also bit the bullet and added view mode toggles to SLED. Now you get ugly buttons above every viewport that let you toggle your view mode. I hate them and am open to better ideas that do not require things that I do not have, such as right-clicking for tooltips or context menus or whatever. The Spectre interface is made for hard men that grew up in the Great Depression making movies with early versions of SoftImage and the first horrible versions of MapEd - so to hell with your useability. I also added groups to SLED and got half way through layers before I decided my brain had died. Specifically, how these work: groups attach objects into clusters that are then moved as a cluster and selected as a cluster. Layers are just collections of objects that you can turn on and off so you can see what the hell you're doing.

The third way of managing geometry is by sectors, which requires me to finish the hook-up of the portal/sector/occluder system. Probably a good job for later this week.

General TODO for moving ahead. Bare minimum, this needs to be done before Ye Olde Release onto the world:

- Ruby tie-ins that are more suitable for a FPS. If I click somewhere in the world, I want to know what script is associated with the object I just clicked on. And then call it.
- finish FPS character control
- hook up portals
- fix texture access in SLED: it sucked, I rewrote it, it still sucks. We need to have a thread that builds previews, or a way to import materials into the editor so you build the previews when you import materials, or anything other than what we currently have. (In fact, our entire pipeline system just sucks.)
- JIT work for SLED. May as well do this now instead of later because there's no way it'll suck less later.
- FIX: crash when C&P-ing lights

I now have about four people wanting to try this sucker. This is progress. Progress is good.
LinkLeave a comment

(no subject) [Sep. 10th, 2008|03:44 am]

mad_and_crazy
As part of the recent work on the Tactical Thing, I've had to implement a mesh splitter. By which, I mean that you pass a mesh in, and another mesh comes out the other side. Dandy. I started with John Ratcliff's implementation, but discovered that it didn't handle texture coordinates. Sent John an e-mail, and got a confused reply about where I could download the current version which didn't have texture coordinates. Oh well, I guess that one's abandoned.

So with that in mind, I set out to write my own mesh splitting tool. You feed it planes, it produces cut up output. I started with the same idea as the paper that John had, because I had it independently before I read the paper - identify 'rings', fill them in. (Sean: I noticed your post on the site about the edge case where you have two rings coaligned at a single vertex. So it'll be interesting to see how I handle that - maybe there's something I'm not reading in the paper? I suppose the cheater's way is to look for such vertices and then add an extra dummy vertex to handle it.) Anyhow, I wrote the first 90% of it, and Spectre now has a mesh splitting tool that doesn't produce end caps but does handle the texture mapping stuff (this was easy), the ring identifier (reasonably easy), and an ear triangulator. Now to glue all this crap together.

Oh, and all our Spectre windows now have viewports that support the same camera model as the rest of the engine. And, oddly, I wrote a dual paraboloid shadow mapper that doesn't quite work yet. Le sigh. Shadows? Mengh.

Does anybody in Gruedorfia actually want to try this thing? If so, I need to do official builds for [info]egometry at some point in the near future, so anybody who wants in should e-mail me at mordred at gas lamp games dot com and I'll let you know where le drop site will be.

screenshots later, I'm tired...
LinkLeave a comment

Language Blag [Sep. 3rd, 2008|03:14 am]

mad_and_crazy
No development update here, but rather a straw poll. (Today's feature, adding a fucking .INI file, is pretty boring.)

First off, note that [info]egometry has now bet me $250 that his game will be in a better state at the end of the year than mine. He was foolishly drunk. I was foolishly sober. Note that he is actually building a game with Spectre and has yet to crack the engine open, and also that he has no 3D guy yet. Poor bastard. Easiest $250 I ever made. Friends, don't play Gruedorf Challenge for money. Why? Because NOBODY WINS.

That said: I want a sanity check on how we're implementing scripting in Spectre. Here's how it works now. Certain scripts are loaded:

- on game initialization
- when you open a new level (always)
- when you open a new level (this is defined in the level header)
- when you have an object embedded in SLED that is a Ruby object (namely, it runs the script containing the object definition, and then creates an object, does the Spectre<->Ruby tie song and dance and the Spectre<->Networking song and dance, and calls various functions on the Ruby object to set it up)

And kaput, you're done.

During the loading business, you have the option to request hooks on certain event signals. A non-definitive list of these is as follows:

- finished 3D rendering
- finished post-processing pass
- finished 2D rendering (i.e. you have rendered everything except the console, and this needs a flip)
- mouse click down event received
- mouse click up event received
- focus leaves app
- focus returns to app
- (one of) a (selection of) user configurable timer(s) just ticked
- physics collision (this one is a bit finicky; you call it on the Ruby object with an attached physics object associated with it, and takes some dancing.)
- some networking stuff

and basically, other general events. This seems like a reasonably balanced approach: the game events, whatever they may be, end up decoupled from the engine logic very forcefully, and fuck-ups tend to be localized to one thing and don't bring the engine down.

There are two other candidate models, which I will call the Ben model and the Nick model, after their instigators.

Ben Model: we sent all events to the user in one place, in one big lump, and let him puzzle it all out.

Nick Model: rather than the engine pumping scripts, the scripts should pump the engine. Then, possibly, make the script-running layer more complicated.

I reject the Ben model out of hand, because by explicitly not allowing the creation of specialized game object types, it makes it very hard for a scripter to add something new and interesting to a level without the intervention of a programmer. If I have a computer terminal object, however, my idiot level designer (no offense, Jesse) can just drop in a new computer terminal and it works. I think both models make it harder to do that. This also has some problems with the Nick model, namely that you're never really sure what happened and you have to do something very much like pumping the engine to figure out what actually happened. It's much nicer, IMO, that I do all this bookkeeping for you, especially when it's much easier for me to tell you, "Oh, hey, go render your 2D stuff now" rather than throwing "Something happened" and letting you puzzle out what.

Nick's model is more interesting, because of where it comes from. Nick is a fellow I have programmed with for many years, and who recently got a bee in his bonnet to download Spectre, in all its glory, and embed it into Squeak, a Smalltalk environment written by insane people. Now my decision to not let the engine get pumped by the scripting language has made things very difficult here for him, and he ended up splitting my main loop in Spectre into two pump calls. Okay, so it's not so bad right now, but it could conceivably get worse. However, I don't know if I like this as much. For Squeak, this isn't so bad. Squeak is, AFAICT, pumping Smalltalk scripts and the engine, so all we've done is hidden the problem behind a layer of abstraction. Possibly a net benefit to the user. In general, though, I dislike having everything - again, including code possibly written by blind monkeys - being responsible for engine pumping.

Anybody have any thoughts on the right way to embed a scripting language into a game?

(Part of this is not due to Nick and Ben, but is due to a conversation with a Noted Game Luminary, to whom I am much indebted and who really made me realize that I should be more nitpicky about detail.)
Link6 comments|Leave a comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]

Advertisement