Finally a REAL developer journal.
In game development, one of the most important polish points is making sure that the game is always responsive to the user. It’s better to take 1 second longer than to stutter or hang for frames.
Unfortunately, it often gets very expensive in engineering hours to meet that objective.
In Elemental, we have two areas that are particularly problematic in that area before you even get into the game:
#1 When you first launch the game.
and
#2 Waiting for the game to start (i.e. the time after you start the game and you actually get to the map).
In both cases, the delay is due to parsing in XML. It’s completely a CPU bound issue.
Elemental is designed to support multi-core but we also support single core processors too. And when you first launch the game, that’s where the guy with the quad core is going to notice the biggest difference versus the guy with a single core CPU.
THIS…
BECOMES…
Which has to be parsed…
…
Anyway…
The “stuff” that has to be loaded before you even see the title screen is in the \english directory. All the other XML gets loaded after. The problem is, there’s a lot of stuff in that english directory.
Thankfully, tile designs don’t have to go in there. But UNITS do and “GoodieHuts” and anything you would expect to encounter while setting up the game.
As of now (1:43am on Wednesday, August 11) there is 3.31 MEGABYTES of XML (that’s just text mind you) that has to be read in and parsed. Heck, there's 65K of hats that have to be parsed (I mean literally, hats as in things to put on your guy’s head).
But by far, it’s the units that are the biggest chunk of it. And we’re adding more creatures every day. So this is something we’ll have to find a way to deal with between now and release otherwise, the first impression will be crummy for people with slower machines.
Either we have to find a way to move the unit parsing into a background thread (not as easy as it sounds) or we need to find a way so that we don’t have so many units being loaded up front.
Now, the other issue, which there really is no way around, is the time it takes after you hit “Start game” and you get to the map. All those wonderful tiles have to be loaded and parsed. There’s 11 megabytes of XML there. It’s the nature of the beast unfortunately and one that I think most would agree is worth it. But you can bet, many of us are looking forward to going through all 770 tiles we have as of tonight and seeing which ones we could get rid of.
Mini-game loading screen FOR THE WIN
Hah Hah I have a quad core i7 920 overclocked to 3.2ghz and 6gb of ddr3 1600 ram and an ATI 5770 1gb graphics card and I'll be running this game soooooo smoothly. Hah Hah. Too bad puny one corers you lose. Hah Hah
You should perhaps add in a few hundred more tiles, get to an even thousand or so. The added challenge could help spark those creative juices!
I remember that software and games are a large driver for the Consumer PC hardware market, So I guess I really have a reason to get a 4 core 3.5 Ghz proc. and a new video card now!!
> an interesting loading screenHow about showing randomly selected monsters, spells, etc. with there stats or effects? Or have some randomly selected tips?
I like that Idea - "sorry to keep you - just loading 37 different types of elven hairstyle"... Done
"oh look at this one...!
"Now on to the 756 different types of monsters that I can't tell you about"... Done
"Now the 13 different tech trees and civilisations".... Done
(it would also give modders some clue as to what to take out if they wanted to speed the loading time)
I think I just heard Robin Walker, from the Team Fortress 2 dev team at Valve, jump up and down giggling.
Excellent idea! Elven Legacy does this (although the loading times are a bit too quick to read tips), and the Battle for Wesnoth main web page (a random creature is shown every time you load the main web page). So I would strongly support a random monster showing up with stats/abilities etc. and/or a tip, although for tips it really needs to be at least 8-10 seconds to load the game so you can read the tip before it disappears.
Best regards,Steven.
It's REALLY painful in debug.
I am so looking forward to porting this stuff to Python so I don't have to reload the game when I make AI changes.
I realize I'll sound like a smart ass here, but I'm surprised you haven't considered that earlier since you've been using Python. Python scripts work pretty much that way; i.e compile .py file to byte code on first run, dump that in a .pyc file and use that as long as the original python file is not modified.
On a side note, I was a little surprised that you went for XML. I realize XML is pretty straightforward to use thanks to the wide range of available parsers out there but, it's also pretty slow. Besides, isn't it a little overkill for what you're trying to achieve? It seems you only use a small fraction of the XML syntaxic power.Besides, if the main objective of this data format is moddability and ease of use, well, I can't think of a less human-friendly format than XML, short of binary data. It's verbose, ugly, unforgiving and it's just a pain to edit. Did you consider JSON or YAML? I would have found them easier to use. And they might be faster to parse than XML, but only benchmarking could validate that assumption. Of course, the modding tools provided in Elemental may reduce the need to manually edit XML to almost zero in which case my point is moot.
Those long loading screens are a great place to display backstory bits of the Heirgamenon or gameplay tips. I've seen either option done to good effect.
Failing that, a message letting us know what's loading would be good; I've seen some games have fun with that by putting jokes in about what the computer is doing (i.e. "Buffing Titan's armor", "Making sure everyone has a hat and warm mittens", "Let there be light", etc.).
If you don't like any of those, a fairly accurate estimate of how long the process is going to take so we can plan bathroom break and snack procurement appropriately would be handy.
I don't think people mind waiting; it's a wait of undetermined length with nothing to do.
Well, during the 'crashier' parts of the beta, the HTTP download of the data files + the parsing overhead on each start up strained my patience quite a bit. I suspect the download part was the main culprit since my internet connection can get really slow when the TV is on (triple play ftw). If I remember correctly, the release version won't need to phone home each time the game is run so I guess that's one annoyance that will go away in the full game.
Yeah, just like in Civ4.
also agree with the suggestions of indicators of loading completion eg total annilalation with its 5 bars that are filled as it loads,
or the suggestion of the count of the type of items being loaded.
either or both would help to defuse the irritation of the loading process.
and my hyperthreaded 4ghz quad core for the win, second goes to my 4ghz quad core, honorable mentions to the dual core 3ghz, dual core 2.7ghz and last place to my 1.8ghz celeron, all have 3gb or more ram of the fasted speeds that they can work with.
harpo
Since I am in sales and not a code monkey like so many here seem to be (I wish I could code)...I am always looking for a way to cross market so I would splash up some of the lore or some sample chapters, etc from the book. so I can get my imagination "loading" with the game.
Loading screen just needs to be a fade in/out of dragon pin ups. Sexy shots of sexy dragons in various poses...
Playdragon? Pentlair? Gentledragon's Quarterly? Maxagon?
"putting skimpy outfits on the nymphs"
AOW2 had a sense of humor about it.
Putting in pages of the Hiergammeon in the loading screen, maybe with stats attached also- would be my suggestion.
I for one dont mind waiting and you could even bring back that neat Dos game like screen you had which I loved. I would start up the game just o see that! My wife came in and was like "What the hell is that"? And I responded "That my dear is what games used to be like!"
Can't do it, due to the ridiculous patent that the US patent office gave Namco for Ridge Racer.
http://arstechnica.com/gaming/news/2008/03/patents-on-video-game-mechanics-may-strangle-innovation.ars
One bit of advice is make sure that if you do a binary compilation that you do the first compilation during the install or include a precompiled binary so that (especially when people are reviewing the game) that first long load doesn't get stuck in people's minds.
I remember battlefield 2 use to 'optimise your porn collection' when you changed the graphics settings, that could take 5 mins plus then the 2 minuet level load...
Ugh.
So glad I have an SSD now (and a pretty good 1.5TB for the rest).
I think unit/spell cards and/or tips while loading would be good.
Not that I would have time to read them...I7-940@ 4 Ghz, 12 gb ddr3 1600 ram, Radeon 5870, and 4(!) Intel X-25M 80gb ssds in Raid 00 on an LSI 9260-8i controller. The angels sing when I turn my system on.
As long that
I don't think it should be a problem because I could actually do other things while it load.
Idea: You could put a small minigame on the loading screen.
Having a temporary binary version is also a good idea.
There are many great features available to you once you register, including:
Sign in or Create Account