I worked a bit on XID last night (working on the view and controller interfaces). Tonight I'll probably start working on the controls themselves, as well as the layout manager and the XML schema for defining an XID view.
I didn't do much at all on Novarunner -- I'm kind of in a motivational lull right now because I have to rejig the save/load system.
The problem is this: I need to track the current star system. I also track all the actors that are in the current star system. However, some of those actors are specified by the star system (such as space stations, etc), and so I shouldn't include them in the save file because they will get loaded twice -- once by the save loader, once by the system loader.
The best solution I have right now is to load up the system file again at save, read in the names of all the actors it specifies, and then exclude those actors from serialization. But in order to do that I have to go through and change a bunch of my serialization code, and I'm not really sure that's a good idea. This solution is a nasty hack, and I don't want to implement it -- but it's better than the alternate solution, where I just delete the actors from the active set and restore them immediately after saving.
Even though this is a bucket of fail, I'm still better than the Washington Post:
So, I was busy making the front end menu look cooler.
I started off wanting to make something that looked like this, which you can all agree is totally awesome.
So I wrote this implementation:
That's less than optimal.
So I modified it to this implementation:
That's even worse.
So then I decided I'd make an old-school demoscene tunnel effect. Well, initially, my memory of classical 3D geometry was wrong and I ended up with this:
Finally, I wrote a version that worked OK unless you started moving the rings:
Finally, I clued in, fixed it, and added a Lissajous curve (I really like Lissajous curves. If your game has one, I will love it) to make the tunnel "wiggle":
That's not bad for a few hours' work. In fact, I think it looks rather spiffy.
Now, the real question is: should I add shaders? I would have to add normals, but I could make the whole thing distort with waves.'
Tonight, I'll be working on XID.
Also, I want at least ten or so ideas for the minigame post, so if you haven't made your offer yet, you totally should.
So I started on the minigame for Novarunner, and made some sprites, then I realized that bowling is a really complicated game. So now I'm contemplating what minigame I could build instead with these little guys.
Best idea wins a star system named after them.
So I hooked up the sound engine to Novarunner last night. It works on an event system which is significantly better than invoking a sound engine singleton from inside game code, which is what I did for Glow.
I also cleaned up a few small bugs, and then combed over the code to look for more horrible bugs (such as the save/load system not actually knowing what star system you were in when you saved the game!) which I'll have to fix.
I also spent a lot of time working on the map format for Afterglow; I think it's doable, and I'll get started on a few prototypes to confirm this to myself soon.
Nobody can say I'm unproductive now! Except for everyone.
I did a massive ton of bug fixes last night, including:
Players and enemies are now properly created in a game context instead of all bolted together in the generateTestData method.
Players can no longer leave the space station without an engine, resulting in a crash
The HUD updates when a new engine is purchased
There is now a HUD indicator to show where you are going next. See below screenshot.
Jumping between systems activates the cinema scene now (which is totally awesome), although it does place you like four kilometers from the system centre.
The player can check their cargo and equipment status in flight, though they can't change their equipment without docking first
Framerate improvements from skybox overhaul
Full user configuration save and load
HUD displays status of engine recharging
The majority of the game data is brought up to spec with the new loading code
Basically, a lot of usability fixes to the in-game HUD and a number of fixes here and there to the underlying code. I think there's even more bugs I didn't bother reporting. I was at it for about four hours straight, which is good productivity.
What's next for Novarunner? Probably a few more fixes, then I'm going to get started on the merchant and combat AI. I'm not sure if I'm going to pick Leopard up any time soon, but if I do, I might have to spend a few days working on Leopard compatibility.
Also, I think once I get a few more bugs sussed I should really, for sures, be able to push out a proper alpha version.
I think I'm still on spec for a release near the end of November; I just need to have a few more days like yesterday to bang out the 'little stuff' that wears my motivation down when testing giant tasks.
Unlike certain people, who shall remain nameless, Napkins from IGLUnited managed to get me some models made. There's a star fighter and a star freighter; here is the freighter. Since I haven't had a chance to UV-unwrap it yet, it is just using the planet sphere map.
Less productive than normal this week. This is probably pretty bad, since November is coming up really fast.
Novarunner
Now you can use the equip screen to unequip hardware. Unfortunately, the game doesn't catch when you're trying to leave the station with no engine equipped, and as such crashes horribly trying to detect it.
There's also a bug related to the HUD not being updated properly when I upgrade the ship's stats, obviously this should be fixed somehow.
So I'll be fixing that tonight, as well as getting started on the "Sell" screen and the "Commodities Exchange" screen.
Doing all these UIs is a pain -- I'm glad XID is going to be available for Afterglow's UI system.
Afterglow
I'm pretty much sold on the 2.5D level design -- not only will it be easier to edit, but I could presumably also build random maps that way. Don't read too much into it.
Java rant
Okay, so Sun is getting rid of J2ME (Gosling, as usual, looks both respectable and intelligent. Seriously, Sun had trouble with the FSF?). Those of you who have used J2ME will be dancing in the streets. Here's a quick cut from talking to jpetrie about J2ME, for those of you who haven't used it:
Quote:
(8:17:31 AM) ravuya: have you ever used j2me?
(8:17:43 AM) ravuya: it's a platform where it's *arbitrary* if you get *framebuffer access*
(8:17:44 AM) jpetrie: no, not really
(8:17:51 AM) ravuya: and there's no caps bits to check
(8:18:03 AM) ravuya: there's also no standard for dealing with unsupported functionality
(8:18:08 AM) ravuya: so sometimes doing things like reading from files just fails
(8:18:24 AM) ravuya: so when I used the platform, I ended up reading from image files I loaded from inside the JAR for data
(8:20:42 AM) jpetrie: hahah
(8:20:56 AM) ravuya: and even then it was arbitrary whether things like PNG supported alpha
(8:21:05 AM) ravuya: unless you had a MIDP 2.0 device, which I didn't
(8:21:13 AM) ravuya: so on about half of the MIDP 1.0 devices, PNG supported alpha
(8:21:15 AM) ravuya: on the other half, it didn't
(8:21:18 AM) ravuya: on about one third, sound
(8:21:21 AM) ravuya: two thirds, no sound
(8:21:37 AM) ravuya: to make matters worse, the provider can also lock parts of the Java runtime (such as GPS or rumble)
(8:21:47 AM) ravuya: so you have to query for permission to activate this functionality
(8:21:54 AM) ravuya: if the functionality isn't there, you will always get permission
(8:22:05 AM) ravuya: also, when you're deploying your application, it has to support about a billion different resolutions properly
(8:22:16 AM) ravuya: oh, and most MIDP 1.0/2.0 devices in the USA can't load any binaries bigger than 56 kilobytes
(8:22:19 AM) ravuya: so good luck with that
But I kid. Except, no, I don't. J2ME is the worst thing to ever happen to game developers (second worst thing: Java), and the only possible benefit I got from it is that the shysters trying to make a quick buck on crappy licensed games managed to endure several months of acute pain porting their games to a platform whose sole purpose in life is to molest and scar them.
Now that you Java guys are good and angry, please continue to read...
Car Post
Since posting about cars seems to excite everyone into posting billions of comments, I am now considering the four door Honda Civic DX-G... probably a brand new '08, but I'll pop down the lot when it comes time to buy and see if they'll cut me a deal on an '07 just to get it off the lot. It's about two grand more than the Fit, but I think it'll be much easier to drive in the winter than the much lighter hatch.
I also looked at the Corolla, but it's ass-ugly and not much cheaper than the DX-G trim. Toyota's website is much better; it lets you save car configurations, compare them and recall them. And it's all built on WebObjects.
I test-drove a Sports Fit a few months ago, and the Dodge dealer next door was unbelievably eager to try and get me to come over and test drive one of his cars -- it might be because Dodge/Chrysler/Cerberus is running with over 120 days of unsold inventory, which at some points they are actually forcing dealers to take. Dodge will be dead within the next five years, if not this year.
The Porsche dealer took offense to my Emerson, Lake & Palmer t-shirt and ratty shoes and refused to allow me to test-drive a Boxster. It's probably for the best -- the poor attendant coming with me would've spent most of his time shrieking and clutching the dash as I chew up Deerfoot.
So I spent a few minutes working on the outfitter screen. You can now actually buy items, spend money, and filter items by type. This is good.
I also spent some time on Afterglow -- I'm now considering moving to a 2.5D style of level design rather than a full 3D design. I can still put "detail models" in there to give the appearance of 3D, but going to 2.5D (Doom-style, no room-over-room) simplifies a lot of the top-down aspects, especially the mini-map and tools.
The rest of the day went to Hellgate, which I am finding significantly more palatable now that I actually have decent items with modified weapons. I'm still not sure if I'll pick it up at retail, though -- I don't fancy starting over with a new character and slogging through 8+ hours of lame to get to the fun.
I suspect I should've made a post in the last 11 or so minutes, but I completely forgot about it.
I'd like to say this is because I was actually doing work, but not really. I've been fiddling with Vista Business on this machine, and should probably boot back to OS X so I can actually get some work done.
I screwed around with some extra scene support for Amaranth, though.
So, I don't know what's up with this month, but every crack addict with a C++ compiler seems to be releasing hot games.
Let's take a look at what I've picked up this month (SPOILERS, GOD DAMMIT):
The Orange Box
Portal -- Surprisingly high quality. The weighted companion cube is my only friend. I thought this would be shit, but the writing talents of the Old Man Murray guys make it the best release of the package. *pulls shirt off* WE LOVE YOU CUBE
Episode Two -- It was okay, but short. The muscle car is awesome. The battle near the end is dull. Alyx is much less one-dimensional, and the house raid sequence is brilliant.
TF2 -- Those of you that know I've been playing TF since 1999 know that I really like TF. I didn't like TFC, though. But TF2 is TF, and not TFC. So I want to make babies with it. Too bad my work PC's GPU can't handle the strain and crashes often. But at home -- aw yeah, double jump.
Peggle Extreme -- Popcap has a sick fucking sense of humour. I love it.
Phantom Hourglass -- I like it. It's not very hard, except my hand is always in the way of what's going on the screen. Nintendo: I can't see through my hand.
Metroid Prime 3 -- I haven't even opened this yet.
Final Fantasy XII -- Zellers had a sale on PS2s. I picked one up. I can't play the game until next month. I've been trolling games stores for copies of FF IX as well, since IMNSHO that was the last "true" FF game.
Perfect Dark Zero -- I haven't even picked this up from Purolator yet.
Viva Pinata -- Ditto.
Worms XBLA -- I played a lot of this with various people who came inside the bounding box of my home. It's great, except it's hard to read the little health numbers, even on an HDTV, from across the room.
Hellgate London Beta:
Okay, seriously. What the fuck. How many years have you been working on this? The game runs okay, but the UI chops along at 5-10FPS. This is unacceptable because half the game is the UI. On the plus side, the game respects Windows very well (doesn't take long to come up, alt-tabbing works well, it respects my resolution settings -- very nice!).
The multiplayer mode seems wholly superfluous, and I hope they aren't wasting a lot of money running these "hub" servers, because they're completely useless. I'd rather start a server and play with my four buds than wander aimlessly through a London train station packed with illiterate ethnic thugs armed with guns. I can do that for free.
Also, your installer and beta distribution is completely unacceptable -- if two multigigabyte files are the exact same, don't call one "Part 1" and the other "Part 2" and tell me to download them both.
I'll pick up the Mac port in a year or so, because at least then the game will be finished. Maybe then I won't get stuck on geometry while unbalanced boss demons whale on my helpless ass.
So... all these games, and I'm still looking at picking up a PSP and the Sam & Max collection off Steam. What is wrong with me?
I've also been looking at new cars since the Cavalier is really getting on my nerves lately. The Honda Fit gave me a fun test drive and is cheaper than all hell. However, going home I saw a Volvo C-30. I'm in love. Too bad it's twice the price of the Fit (three times if I take the 227 horsepower turbocharged ass-on-fire edition).
As for Novarunner, the "jumping" vignette is now done, or at least getting closer to it. I think I might spend tonight implementing sound.
As is now customary for Wednesdays, I got barely anything done; I did, however, get the "jump" vignette working (although it's rather buggy) and fixed some other bugs here and there.
This week I think I'm in a secure enough place to deploy a new alpha version for Windows and OS X, unless something catastrophic goes wrong.
Two new sort of completely useless graphical components today:
Whoosh! Whoooooosh! Whoosh.
Also, the targeting cursor's arrow now is in the middle of the screen, and spins around when you have a "lock" on your enemy. It actually looks really cool.
So I finally got around to fixing the homing projectiles; where before I was doing complicated matrix fuckery to make a "look-at" quaternion and then working from there, now I'm just using a "forward vector" and adjusting it based on inertia.
This is good because it works now, and bad because I still have to fix the "look-at" feature for when I'm trying to make the AI navigate in 3-space. Anyone know a decent primer on quaternions? I've been trying to figure it out between Eberly's book and the Ogre source code (which is mostly cribbed from Eberly's book, AFAICS).
I also did some work on Afterglow last night; it's surprisingly easy to figure out how to do screenspace effects once you get the hang of shaders.