code logs -> 2012 -> Wed, 10 Oct 2012< code.20121009.log - code.20121011.log >
--- Log opened Wed Oct 10 00:00:00 2012
00:00
<&McMartin>
05:37 < gnolam> After all - if you put up a wiki, useful and correct information magically appears, right?
00:00
<&McMartin>
That's why they call it "Wiki magic"!
00:38 Derakon[AFK] is now known as Derakon
00:39 mode/#code [+ao Derakon Derakon] by ChanServ
01:01 You're now known as TheWatcher[T-2]
01:02 himi [fow035@D741F1.243F35.CADC30.81D435] has joined #code
01:02 mode/#code [+o himi] by ChanServ
01:04 You're now known as TheWatcher[zZzZ]
01:18
<&Derakon>
So, Pyrel has a problem.
01:18
<&Derakon>
Its flexible, generic structure does not handle the creation of massive numbers of objects at all quickly.
01:18
<&Derakon>
As in, it takes ~3s to create a 360x120 map, just because you're creating ~43k granite walls.
01:19
<&Derakon>
(Most of this cost goes into hashing the new walls for addition into set() objects)
01:19
<&Derakon>
This is obviously unacceptable for an oldschool game.
01:20
<&Derakon>
The only solution I've thought of so far that seems all that workable is to have a special data structure for holding "highly redundant" objects -- it maps a single instance of the object to all the tiles that it occupies.
01:20
<&Derakon>
This means hacking up all of the code dealing with "what's actually in this tile" though.
01:21
<&Derakon>
As well as keeping these aliased objects from knowing their position, since a single object would actually have 43k positions simultaneously.
01:21
<&Derakon>
All in all this sounds painful.
01:21
<&Derakon>
Any better ideas?
01:23
<@himi>
Can you extend the Pyrel classes to support the redundant object features?
01:23
<&Derakon>
Mm, I should provide more detail.
01:23
<&Derakon>
The GameMap is basically a big database of all of the objects in the game.
01:23
<&Derakon>
It has a large number of buckets (Python set() objects) that objects ("Things") get put into.
01:24
<&Derakon>
For example, a sword goes into the ITEM and WIELDABLE buckets.
01:24
<&Derakon>
It also goes into the bucket for a specific tile on the map, if it's not being carried by some other Thing.
01:24
<&Derakon>
So when we create a granite wall, it gets added to the TERRAIN, OBSTRUCTOR, and tile-position buckets.
01:25
<&Derakon>
This setup makes it very easy to say "I want to find all of the X that meet Y condition" -- it's great flexibility for most objects.
01:25
<&Derakon>
But it breaks down badly when we need to handle large numbers of objects.
01:25
<@himi>
Yeah, a separate data structure seems like the best option
01:27
<&Derakon>
Here's the profiling breakdown for generating a 360x120 map: http://derakon.dyndns.org/~chriswei/temp2/profiling.txt
01:31
<&Derakon>
I can gain a second if I don't keep track of what containers a Thing is in, but then I lose the ability to do fancy lookups.
01:32
< rms>
Derakon: Walls are the default object on a map right (assuming it's not an open space)?
01:32
<&Derakon>
Yeah.
01:33
< rms>
If so, I suggest not doing anything instead
01:33
< rms>
Thus if a location isn't meant to be walkable, render it as a wall.
01:33
< rms>
Then render secret doors as walls until they're opened.
01:33
<&Derakon>
The problem there is what happens when a modder wants to represent an ocean or a field of grass or any other large amount of the same terrain type?
01:34
< rms>
Make it so they can change the default tile renderer on a per-map basis
01:34
< rms>
If they want a mixed map though, then yes, do your idea.
01:45
<&Derakon>
...hm, simply aliasing the wall to multiple tiles actually works a lot better than I'd expected it would.
01:45
<&Derakon>
No need for a separate data structure; the game engine just needs to be able to tell the difference between an alias of a Thing and the Thing itself when it comes to removing it from the game.
01:48
<&Derakon>
So there's a good 2s of generation time removed.
01:49
<&Derakon>
Unfortunately it turns out generation is still slow; I was running my profiler too deeply and didn't capture the entire runtime for map generation.
01:49
<&Derakon>
Currently at 4.2s...including 518k calls to GameMap.getContainer. Hm.
02:35 Attilla [Obsolete@Nightstar-6d0dced8.as43234.net] has quit [Ping timeout: 121 seconds]
02:52 Orthia [orthianz@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
03:06 celticminstrel [celticminst@Nightstar-05d23b97.cable.rogers.com] has joined #code
03:17
<&McMartin>
oh god >_<
03:17 * McMartin just discovered they've been running a 3-year-out-of-date version of libcurl with a bunch of patches on it, some of which made it into later versions, some of which made it into later versions in different places
03:17 * McMartin is now in the process of upgrading it.
03:17
<&McMartin>
This is gonna be a long night.
03:17
<&McMartin>
(Especially since I can't, apparently just say "go back to pristine" since some of these patches still address outstanding bugs)
03:18
<&McMartin>
On the other hand, I did not hit this problem:
03:18
<&McMartin>
[inform] zarf says, "one guess what's going wrong with this code:"
03:18
<&McMartin>
[inform] zarf | routine_starts_line = ErrorReport.line_number + 0x10000*ErrorReport.file_number;
03:18
<&McMartin>
[inform] DavidW says, "No idea, but I'll randomly gamble on missing spaces around the *."
03:18
<&McMartin>
[inform] zarf says, "the correct answer is: Hadean Lands is up to 86007 lines"
03:21 Orthia [orthianz@3CF3A5.E1CD01.C6689C.33956A] has joined #code
03:23 * Vornicus would have caught that one!
03:39
<&McMartin>
Yeah, but that's a line inside the compiler~
03:42
<&ToxicFrog>
...why is it storing the line number like that? o.O
03:54
<&McMartin>
Because it was originally written for the Acorn Archimedes by a non-computer scientist~
03:54
<&McMartin>
(Inform 6's internals are infamously horrible)
04:03
< Reiv>
Which is the good one?
04:03
<&McMartin>
Inform 6 is the C-like language that saw heavy use before Inform 7. Inform 7 is the language that looks like a text adventure is used to parse it, and it's an Inform 6 emitter.
04:05
<&Derakon>
That sounds like the original implementation of C++, which IIRC was implemented via preprocessor directives.
04:32
<&McMartin>
Emitters are considered a cut above that.
04:32
<&McMartin>
You can't get from I7 to I6 with preprocessing.
04:44 * ToxicFrog once again fiddles around with n-way synchronization
04:49 * Derakon gets level generation down under a second, at the cost of completely breaking the drawing logic.
04:49
<&Derakon>
More importantly, I can't figure out why the drawing logic is broken.
04:49
<&Derakon>
Bah...
04:51 * Vornicus is vindicated.
04:51
<~Vornicus>
I say "guys, army of robots" and they're like "oh right, we have those"
04:54
<&ToxicFrog>
Why is everything terrible @.@
04:56
< Reiv>
Vornicus: They had those?
04:56
<~Vornicus>
Because it's still amazing that this stuff works at all, TF
04:56
<~Vornicus>
Reiv: it's called a computer
04:57 * Vornicus is pretty sure McM introduced the term to us.
05:02
< Reiv>
Vornicus: Hahaha
05:02
< Reiv>
I thought you meant "oh yeah, we had a script written already" or something.
05:03
<&ToxicFrog>
Vornicus: the thing that floors me is that Dropbox is basically exactly what I want except for the whole "you can't run your own server" thing
05:03
<&ToxicFrog>
And everything else, commercial or free, proprietary or open source, is unrelentingly, shockingly awful
05:08
<~Vornicus>
aha
06:13 Derakon is now known as Derakon[AFK]
06:36 himi [fow035@D741F1.243F35.CADC30.81D435] has quit [Operation timed out]
07:00 Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has quit [[NS] Quit: ]
07:10 PinkFreud [WhyNot@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
07:24 gnolam_ [lenin@Nightstar-ccbf4b44.cust.bredbandsbolaget.se] has joined #code
07:24 gnolam is now known as NSGuest41635
07:25 gnolam_ is now known as gnolam
07:28 NSGuest41635 [lenin@Nightstar-ccbf4b44.cust.bredbandsbolaget.se] has quit [Ping timeout: 121 seconds]
07:34 Vash [Vash@Nightstar-3ba4108e.wlfrct.sbcglobal.net] has quit [[NS] Quit: I lovecraft Vorn!]
07:39 celticminstrel [celticminst@Nightstar-05d23b97.cable.rogers.com] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!]
08:21 RichyB [richardb@7D8456.14C5E0.08BE20.B646E9] has joined #code
08:43 * McMartin seethes
08:43
<&McMartin>
Builds on my system, but not on buildbot
08:44
<&McMartin>
Fuck it, it's one in the fucking morning, I have had entirely too much fucking shit to deal with today
08:44
<&McMartin>
Yesterday
08:44
<&McMartin>
What the fuck ever
08:48
<&McMartin>
WARGHLE WHAT THE SHIT
08:48 * McMartin stabs everything in a 50-foot radius
08:50 RichyB [richardb@7D8456.14C5E0.08BE20.B646E9] has quit [Ping timeout: 121 seconds]
08:54 * jerith gives McMartin a small pile of sleepy kittens and a delicious warm beverage.
08:57 * McMartin keeps his distance from the kittens, as there is a noticably danger he might punt them.
08:58
<&jerith>
:-(
08:59 * jerith offers some punching bags instead?
09:00
<&McMartin>
oh hey I could judge some shitty ifcomp entries
09:00
<&jerith>
Ooh, good plan.
09:12 himi [fow035@Nightstar-5d05bada.internode.on.net] has joined #code
09:12 mode/#code [+o himi] by ChanServ
09:33 You're now known as TheWatcher
12:21 Attilla [Obsolete@Nightstar-6d0dced8.as43234.net] has joined #code
13:01 RichyB [richardb@7D8456.14C5E0.08BE20.B646E9] has joined #code
13:19 Attilla_ [Obsolete@Nightstar-c0d703de.as43234.net] has joined #code
13:19 Attilla [Obsolete@Nightstar-6d0dced8.as43234.net] has quit [Ping timeout: 121 seconds]
13:24 Attilla [Obsolete@Nightstar-95f91359.as43234.net] has joined #code
13:25 Attilla_ [Obsolete@Nightstar-c0d703de.as43234.net] has quit [Ping timeout: 121 seconds]
14:44 RichyB [richardb@7D8456.14C5E0.08BE20.B646E9] has left #code ["Leaving"]
15:07 Syloq_Home [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
15:18 Reiv [NSwebIRC@D4E70A.D52DB0.820B13.98C775] has quit [Ping timeout: 121 seconds]
15:36 Attilla [Obsolete@Nightstar-95f91359.as43234.net] has quit [Ping timeout: 121 seconds]
15:43 Attilla [Obsolete@Nightstar-31dc2af6.as43234.net] has joined #code
19:30 Vash [Vash@Nightstar-3ba4108e.wlfrct.sbcglobal.net] has joined #code
19:30 mode/#code [+o Vash] by ChanServ
23:16 * iospace squees
23:16
< iospace>
I GET TO WORK ON CODE AGAIN :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
23:19
<~Vornicus>
:D
23:24 himi [fow035@Nightstar-5d05bada.internode.on.net] has quit [Operation timed out]
23:39 celticminstrel [celticminst@Nightstar-05d23b97.cable.rogers.com] has joined #code
23:51
<&jerith>
iospace: \o/
--- Log closed Thu Oct 11 00:00:15 2012
code logs -> 2012 -> Wed, 10 Oct 2012< code.20121009.log - code.20121011.log >

[ Latest log file ]