--- Log opened Tue Jul 21 00:00:22 2009 |
01:05 | <@Derakon> | Hmph. It takes about 3.5s just to read a small map file and initialize everything... |
01:05 | <@Derakon> | That's no mapgen; just loading all the stuff needed to run the gameplay aspect. |
01:07 | < SmithKurosaki> | :( |
01:07 | <@Derakon> | Ehh, it's not too bad. Just gets a bit annoying when I'm testing. |
01:07 | < SmithKurosaki> | Yea |
01:13 | | * gnolam blarghs some more at Systems Hungarian. |
01:26 | <@ToxicFrog> | The evil! |
01:26 | < SmithKurosaki> | ? |
01:28 | <@Phas> | Systems Hungarian: putting the internal type of a variable into the variable's name. |
01:30 | < SmithKurosaki> | o.0 |
01:30 | <@Phas> | In a compressed format. |
01:30 | <@Phas> | iFoo for instance is an integer. |
01:30 | <@Phas> | ipFoo is a pointer to an integer. |
01:31 | <@ToxicFrog> | http://mindprod.com/jgloss/unmainnaming.html - scroll down to 30 and 31 |
01:32 | <@Phas> | a_crszkvc30LastNameCol is a const, reference, function argument that was holding information from a database column of type Varchar[30] named "LastName" which was part of the tables primary key. |
01:33 | < SmithKurosaki> | :gonk: |
01:35 | <@gnolam> | There are times regular Hungarian is more readable. :P |
01:36 | <@gnolam> | The whole issue of decent IDE's making it completely redundant aside. |
01:36 | <@ToxicFrog> | There's also the much more sensible Apps Hungarian, where the prefix encodes the variable's conceptual type; for example, us for Unsafe String or r/c for Row/Col |
01:40 | | Orthia is now known as Reivthia |
01:44 | <@McMartin> | Incidentally, the fact that you get things like "crszkvc" is why it's called "Hungarian" in part~ |
01:45 | <@McMartin> | The best part of Systems Hungarian is that when you go from 16- to 32-bit in your API, the function names start to lie. |
01:45 | < SmithKurosaki> | whaaaat? |
01:45 | <@ToxicFrog> | I thought it was because it was invented by a Hungarian programmer. |
01:46 | <@Derakon> | SK: because all your ints have their bit depth encoded in their names. |
01:46 | <@ToxicFrog> | SmithKurosaki: everything still says that it's, say, a 16-bit int, because changing the names will break everything. |
01:46 | <@ToxicFrog> | But since it's now a 32bit system, they're actually twice as wide as the name says. |
01:46 | < SmithKurosaki> | Who the hell uses this? |
01:46 | <@McMartin> | The official Windows APIs. -_- |
01:47 | < SmithKurosaki> | :gonk: |
01:47 | <@McMartin> | On the other hand, these days it's only in the arguments and the structure names, and they've been mostly switching to Apps Hungarian. |
01:47 | <@McMartin> | They also aren't mortally terrified of vowels the way POSIX is, nor do they put the names of all their arguments into the function names the way Apple does. |
01:48 | <@McMartin> | It's really more :scigonk: at the system level no matter who you're targeting. |
01:48 | <@gnolam> | Well, a single WinAPI function call usually takes up a few pages, so putting the names of arguments into the function names themselves would probably break the compiler. ;) |
01:49 | <@McMartin> | After writing a few files using CoreFoundation, gnolam, I found myself wishing mightily for the Win32 API's brevity. |
01:49 | <@gnolam> | Heh. |
01:49 | <@ToxicFrog> | CoreFoundation? |
01:49 | <@McMartin> | Since MS at least will use constant names like INFINITE_WAIT instead of kIPCFrameworkWaitTimeNoLimitRequired. |
01:50 | <@McMartin> | TF: CoreFoundation is the C library that underlies the data types that the Mac OSes use for everything. |
01:50 | <@McMartin> | CFDictionary, CFString, CFArray, etc. |
01:50 | <@McMartin> | CFString is an opaque type that is not a C string, but you can sort of make one with CFStringCreateCFStringWithCStringWithEncoding ("....", kCFStringEncodingUTF8) or what have you |
01:51 | <@McMartin> | (It's worth noting that it's *doing* most of this by having you hand-mangle the Objective-C functions.) |
01:51 | <@McMartin> | (And the CF structures are directly castable to Objective-C NeXTStep objects, even across link boundaries) |
01:52 | <@ToxicFrog> | o.O |
01:53 | <@McMartin> | Despite having Smalltalk/Python method semantics, ObjC is actually much closer to C than C++ is. |
01:55 | <@McMartin> | http://developer.apple.com/documentation/CoreFoundation/Reference/CFStringRef/Re ference/reference.html |
01:55 | <@McMartin> | Oh, right. CFStringCreateWithFileSystemRepresentation. That's the one I usually needed to see whether or not a POSIX pathname matched something from LaunchServices or some other high-level OS X facility. |
02:04 | <@McMartin> | Having now down "man 2" level programming on all three of the major OSes, I find that modern Win32-level stuff and POSIX are different but basically peers, where I'd prefer one over the other depending on problem domain, and non-POSIX OS X is a very distant third. |
02:04 | <@McMartin> | (Regarding problem domains, I like Windows Named Pipes more than UNIX domain sockets, because they do a lot of the tedious bookkeeping automatically.) |
02:10 | < SmithKurosaki> | What's up with posix and the lack of vowels anyways? |
02:10 | | Thaqui [~Thaqui@121.98.166.ns-22683] has joined #code |
02:10 | | mode/#code [+o Thaqui] by ChanServ |
02:10 | <@McMartin> | I'm mostly just making fun of "creat" |
02:11 | <@McMartin> | But really, it ends up being "AT&T's programmer culture vs. MS vs. NeXT" |
02:11 | <@McMartin> | If your style is telegraphic, your APIs will be too. |
02:12 | <@McMartin> | Once they moved away from Hungarian in function names, MS's API is the closest to "this function is named as a description of what it does", with a few extra bits of wonkiness to be back-compatible with old non-Unicode versions of Windows |
02:13 | <@McMartin> | If you're reading code and see a call to CreateProcessAsUser, you know basically what it does |
02:13 | <@McMartin> | If you want to write it though, you need to look it up to see what all 17 of its arguments mean |
02:13 | <@McMartin> | Both of those probably have more to do with Windows NT being designed by the VMS guys. |
02:21 | | gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has quit [Quit: Z?] |
02:26 | | * SmithKurosaki sighs |
02:41 | <@Derakon> | Ha-HA! http://derakon.dyndns.org/~chriswei/games/jbrl/actions/kick1.gif |
03:06 | <@Derakon> | Phew. There. All reviewed and checked in. |
03:06 | <@Derakon> | Did you know that the Jetblade project has some 2094 files? |
03:08 | | Attilla [~The.Attil@92.1.54.ns-25924] has quit [Quit: <Insert Humorous and/or serious exit message here>] |
03:12 | <@McMartin> | I think you mentioned something similar a while back |
03:12 | <@Derakon> | Yeah, well, the scope of this project continues to surprise me. |
03:15 | | Thalass [~thalass@Nightstar-8070.sud-cable-cmts2-69-60-245-73.vianet.ca] has joined #code |
03:15 | < Thalass> | arr |
03:16 | < Thalass> | it's a python script to allow google earth to see a gps, but it doesn't work out of the box with gpsd |
03:16 | < Thalass> | I don't know what I'm doing, just fiddling around and googling. I'm sure it's been done before |
03:17 | <@Derakon> | Is it the Python that's giving you trouble, or the integration with Google Earth? |
03:18 | < Thalass> | what I'm trying to do is documented here: http://devslab.blogspot.com/2008/02/playing-with-freedom-keychain-gps-2000_22.ht ml |
03:19 | < Thalass> | but when I run the script, I get "Import error: no module named serial" |
03:20 | <@Derakon> | Then you either don't have the serial module installed, or it's not in your path. |
03:20 | < Thalass> | I wouldn't have to edit the modules thingo to add "serial", would I/ |
03:21 | < Thalass> | ah. perhaps it's not in the path. I'm running the script from desktop |
03:21 | <@Derakon> | Do you know where the module is? |
03:24 | <@Derakon> | Here's a bit of documentation on Python's module search path: http://www.python.org/doc/1.5.1p1/tut/searchPath.html |
03:25 | < Thalass> | I have no idea. My code-fu is nearly nonexistant :P |
03:27 | <@Derakon> | ...oh, whoops, I was counting the Mercurial files when I spouted off that 2094 number. It's actually 784 files. :) |
03:28 | <@Derakon> | Thalass: okay, I'd bet you don't have the module installed, then. |
03:28 | <@Derakon> | You can get it here: http://pyserial.wiki.sourceforge.net/pySerial |
03:28 | < Thalass> | hrm. I may not have it. locate serial.py turns up nothing |
03:28 | <@Derakon> | Try following the default installation process for whatever system you're using. |
03:28 | < Thalass> | thanks :) |
03:30 | <@Derakon> | ...dude. Jetblade is the third (or second, depending on how you count) result on Google for "procedurally generated code". |
03:30 | <@Derakon> | Despite the fact that it doesn't generate any code itself...still, awesome. |
03:32 | < Thalass> | woo. That seems to have fixed it... now for the next error haha |
03:33 | <@Derakon> | Heh. |
03:38 | <@ToxicFrog> | Derakon: sweet. |
03:40 | <@ToxicFrog> | Sigh. Why is it so hard to find a decent Linux audio player? |
03:40 | <@ToxicFrog> | XMMS was great ten years ago, but XMMS2 is still in development and nothing seems to have stepped up to fill the gap. |
03:41 | <@Derakon> | Because audio players are basically all about UI and audio decoders, both of which are full of spiders? |
03:42 | <@ToxicFrog> | Well, yes. |
03:43 | <@ToxicFrog> | But there's no shortage of audio players; it's just that all of them are going the itunes route - huge, bloated things that manage your collection of music and download album art and sort things by release date and might, somewhere in there, have a feature to actually play the music. |
03:43 | <@ToxicFrog> | Whereas I want something like Winamp. Or XMMS, only, you know, working reliably on modern system. |
03:46 | < Tarinaky> | ToxicFrog: mplayer? mpd/mpc? |
03:46 | <@Derakon> | Linux doesn't get Media Player. |
03:46 | < Tarinaky> | No. mplayer. |
03:47 | < Tarinaky> | It's a program. |
03:47 | <@ToxicFrog> | mplayer is a video player. It's great for playing videos. It's less great at managing playlists of tens or hundreds of thousands of music files. |
03:47 | <@Derakon> | I was referring to MPD/MPC. |
03:47 | <@ToxicFrog> | In particular, I require playlist persistence, queuing, and jumping. |
03:47 | < Tarinaky> | ToxicFrog: mpd. |
03:48 | < Tarinaky> | http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki |
03:48 | <@ToxicFrog> | What client would you recommend for it? |
03:48 | < Tarinaky> | I use gmpc. |
03:48 | <@Derakon> | Ahh. I interpreted that as "Media Player Deluxe". |
03:48 | <@Derakon> | I'll just stop talking now~ |
03:49 | < Tarinaky> | I expect there's a kde equivalent if GTK bothers you. |
03:49 | < Tarinaky> | s/kde/Qt |
03:50 | < SmithKurosaki> | I also heard about exaile being decent from Zom |
03:52 | < Tarinaky> | I also use mpc to a lesser extent (invoking it using keyboard shortcuts). |
03:53 | | * ToxicFrog throttles MPD |
03:54 | < Tarinaky> | What's up? |
03:54 | <@ToxicFrog> | MPD is a daemon, runs as 'mpd'. |
03:54 | <@ToxicFrog> | My music is sshfs-mounted and thus accessible only to 'ben' |
03:54 | <@ToxicFrog> | Note that due to the way sshfs works even root can't get at it. |
03:54 | < Tarinaky> | No problem. |
03:55 | <@ToxicFrog> | So I start up mpd and it goes "aughwtf I can't read the music directory, streaming mode only mate" |
03:55 | < Tarinaky> | I run mpd as my user account, lemme pull out my config. |
03:55 | <@ToxicFrog> | Aha, I think I see what I need to do |
03:56 | <@ToxicFrog> | The /etc/mpd.conf has all the entries for running in user mode, just commented out |
03:56 | < Tarinaky> | Add the line 'user "ben" ' to your /etc/mpd.conf |
03:56 | < Tarinaky> | Yeah. |
03:58 | <@ToxicFrog> | Let's see if I can get it to use pulseaudio at the same time. |
03:58 | < Tarinaky> | Should be able to. |
03:59 | < Tarinaky> | http://mpd.wikia.com/wiki/PulseAudio |
04:00 | <@ToxicFrog> | Yeah, the config file already had a block for it, just commented out. |
04:00 | <@ToxicFrog> | ...hmm. Now it needs to scan the music directory. |
04:00 | < SmithKurosaki> | That will be fun |
04:00 | <@ToxicFrog> | Yeah, might take a while, especially over ssh. |
04:01 | <@ToxicFrog> | What with it containing ~36000 files. |
04:02 | | TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has joined #code |
04:04 | <@ToxicFrog> | The DDR stuff is confusing it a bit because there's lots of non-music files in there. |
04:04 | < SmithKurosaki> | Heh |
04:05 | | Tarinaky [~Tarinaky@Nightstar-16638.plus.com] has quit [Ping Timeout] |
04:16 | <@Derakon> | DesArt? |
04:16 | <@Derakon> | Mischan. |
04:20 | < Consul> | I'm waiting for the really embarassing mischan to happen on of these days. |
04:21 | < Consul> | one* |
04:21 | < SmithKurosaki> | That would be funny |
04:21 | | Thaqui [~Thaqui@121.98.166.ns-22683] has quit [Client exited] |
04:22 | | Derakon is now known as Derakon[fud] |
04:22 | < Consul> | Yeah, it's really hard right now. |
04:22 | < Consul> | Oops, mischan |
04:22 | < Consul> | Something like that. :-P |
04:39 | <@McMartin> | Oh hey, new Septerra Core updates |
04:40 | < SmithKurosaki> | haha |
04:40 | < SmithKurosaki> | Reading TF's thread> |
04:40 | < Consul> | No kidding? |
04:40 | | * Consul has that game and loved it. |
04:40 | < SmithKurosaki> | Getting the lava boss vid was a bitch |
04:41 | <@ToxicFrog> | Yeah, I ended up doing that fight three times to get a decent recording |
04:41 | <@ToxicFrog> | And needed screenshots from all three of them |
04:41 | <@ToxicFrog> | Consul: yeah, same here. I've been doing a Let's Play of it. |
04:43 | <@ToxicFrog> | Currently halfway through Shell 7. |
04:43 | < Consul> | It's been too long since I've played it, so I can't remember much, I'm afraid. |
04:43 | <@McMartin> | SmithKurosaki: Yeah, I mostly read the gamebook threads but SC is on the list. |
04:44 | < SmithKurosaki> | :p |
04:44 | < Consul> | I remember unlocking the tower by rescuing all the birds. |
04:44 | < Consul> | That seemed a but anticlimactic, but there were some nice items. |
04:45 | < Consul> | bit* |
04:45 | <@ToxicFrog> | Yep, that's going in |
04:45 | <@McMartin> | Birdseed is, in fact, the key to ultimate power? |
04:45 | <@ToxicFrog> | Although it'll be quite some time, we don't even have all the party members yet. |
04:45 | <@ToxicFrog> | McMartin: feeding all ten birds gets you the local Infinity Plus One gear. |
04:46 | | Thaqui [~Thaqui@121.98.166.ns-22683] has joined #code |
04:46 | | mode/#code [+o Thaqui] by ChanServ |
04:46 | < SmithKurosaki> | Ahh, that's what you get |
04:47 | < SmithKurosaki> | I thought you got a shiny thing that goes boom from it |
04:49 | <@ToxicFrog> | No, the Sphere module is dungeon loot~ |
04:49 | | Derakon[fud] is now known as Derakon |
04:49 | < SmithKurosaki> | :p |
04:50 | < Consul> | Okay, so when McMartin said "update to Septerra Core", he wasn't referring to new game elements from the publisher? |
04:50 | <@Derakon> | He was probably referring to Let's Play Septerra Core. |
04:50 | < SmithKurosaki> | http://forums.somethingawful.com/showthread.php?threadid=3080042 |
04:50 | <@ToxicFrog> | Consul: no; the last patch was in 2007. |
04:50 | < SmithKurosaki> | This |
04:50 | <@ToxicFrog> | Fixed the crash bugs on win2k/XP. |
04:51 | < SmithKurosaki> | Was it just the sonic boom boss that crashed the game on 2k and xp? |
04:52 | <@ToxicFrog> | Ahahahahahahahano |
04:52 | <@ToxicFrog> | Far from it. |
04:52 | <@ToxicFrog> | It was just the first one that would crash the game consistently. |
04:53 | <@ToxicFrog> | Some of Led's attacks (the ones that emit a ring of light - notice a pattern?) would crash it sometimes. |
04:53 | <@ToxicFrog> | Pretty sure the Big Bang spell would as well. |
04:53 | < SmithKurosaki> | heh |
04:53 | < SmithKurosaki> | Have I seen Big Bang yet? |
04:54 | <@ToxicFrog> | Nope |
04:54 | <@ToxicFrog> | We don't have any of the required cards. |
04:55 | < SmithKurosaki> | (I meant outside of the LP :p) |
04:56 | <@ToxicFrog> | You haven't seen me play it when not recording the LP, so. |
06:04 | | Syloqs-AFH [~Syloq@ServicesAdmin.Nightstar.Net] has quit [Connection reset by peer] |
06:30 | | Phas is now known as Vornicus |
06:42 | | Consul_ [~Consul__@Nightstar-2425.dsl.sfldmi.ameritech.net] has joined #code |
06:43 | | Consul [~Consul__@Nightstar-2425.dsl.sfldmi.ameritech.net] has quit [Ping Timeout] |
06:47 | | Derakon is now known as Derakon[AFK] |
07:08 | | S_Kurosaki [~Smith@Nightstar-7213.cpe.net.cable.rogers.com] has joined #code |
07:08 | | You're now known as TheWatcher |
07:08 | | SmithKurosaki [~Smith@Nightstar-10671.dsl.teksavvy.com] has quit [Killed (NickServ (GHOST command used by S_Kurosaki))] |
07:08 | | S_Kurosaki is now known as SmithKurosaki |
07:10 | | AgentIchiro [~Smith@Nightstar-10671.dsl.teksavvy.com] has joined #code |
07:14 | | mode/#code [+o SmithKurosaki] by ChanServ |
07:15 | | AnnoDomini [~farkoff@Nightstar-29296.neoplus.adsl.tpnet.pl] has joined #Code |
07:15 | | mode/#code [+o AnnoDomini] by ChanServ |
07:52 | | * ToxicFrog ponders chunk creation. |
07:53 | <@ToxicFrog> | It may be easiest if I just load the entire resfile into memory on open(). |
07:54 | <@ToxicFrog> | Hmm. Actually, should a Chunk know anything about its representation on disk, or should that be entirely up to the ResFile? |
07:56 | <@ToxicFrog> | It occurs to me that it is (should be) possible to create chunks entirely in memory, without a file backing them. |
07:56 | <@ToxicFrog> | Ok, new policy. |
07:57 | <@ToxicFrog> | The Chunk class stores only information which is not relevant to its representation on disk. |
07:57 | <@ToxicFrog> | In particular it doesn't know about the compressed flag or how big it is when packed. |
07:57 | <@ToxicFrog> | It's up to the ResFile to worry about actually serializing the chunks it owns. |
07:58 | | * Vornicus wonders what TF is building. |
07:58 | <@ToxicFrog> | ss1edit. |
07:58 | <@ToxicFrog> | Now that the libraries I need to write the libraries I need to write the program are done. |
08:02 | <@Vornicus> | Ah, so. |
08:02 | <@Vornicus> | wh.. |
08:02 | <@Vornicus> | You needed to write libraries to write libraries? |
08:03 | <@ToxicFrog> | The libraries for manipulating SS1 data files, like ss1.ResFile, require a library for generic manipulation of binary data. |
08:03 | <@ToxicFrog> | That would be vstruct. |
08:03 | <@SmithKurosaki> | That's why you did vstruct... |
08:03 | <@ToxicFrog> | Yep. |
08:04 | <@SmithKurosaki> | Sneaky bastard :p |
08:04 | <@ToxicFrog> | Neither of the existing struct libraries supported 24-bit integers or 24.8 fixed point rationals. |
08:04 | <@SmithKurosaki> | Night all |
08:04 | <@ToxicFrog> | (or repetitions or named fields, but those are bonuses) |
08:04 | <@ToxicFrog> | ...huh. |
08:04 | <@ToxicFrog> | Ok, I pretty much have to either: |
08:04 | <@ToxicFrog> | - load the entire resfile into memory on open() |
08:05 | <@ToxicFrog> | - or, disallow commit(), and permit data writes only with close() |
08:05 | <@ToxicFrog> | Of those, the former is probably better. |
08:05 | <@Vornicus> | These files are small. |
08:05 | <@Vornicus> | Like, itty. |
08:06 | <@Vornicus> | We're talking "can be loaded entirely into RAM on a machine that is also doing software 3d" |
08:06 | <@Vornicus> | "in 1994" |
08:06 | <@ToxicFrog> | Apart from stuff like the 50MB audio logs file. |
08:07 | <@ToxicFrog> | The "real" version of SS1 is the version on CD for a reason. |
08:08 | <@ToxicFrog> | But yeah, apart from that, all the resfiles are <16MB |
08:09 | <@ToxicFrog> | Not small enough for SS1 to load the entire file into memory by any means, but small enough that a modern machine could load the game's entire dataset without difficulty. |
08:10 | <@ToxicFrog> | Now I'm wondering if open/commit/close should be renamed load/save/delete |
08:10 | <@ToxicFrog> | Because there's no longer any reason for it to hold an open file handle. |
08:10 | | * ToxicFrog upshifts to find out by writing a library that uses this API |
08:12 | <@ToxicFrog> | ...ok, that doesn't help at all, ss1map doesn't actually need to use anything but the constructor. |
08:13 | <@ToxicFrog> | Well, in that case, I'll write the constructor and fill in the rest as I need it. |
08:14 | <@Vornicus> | TF: so anyway, Vorn in Space was me looking at EV and Transcendence and saying "Both of these have pieces of the depth I want but not all of it" and then at EVE and saying "This has economics! But also bad crazy." |
08:15 | | * ToxicFrog nods |
08:15 | <@ToxicFrog> | I'm drawing pretty much entirely on X2 for the gameplay here |
08:16 | <@ToxicFrog> | Since my impression of X2 after something like ten hours of gameplay (and three hours of mod installation and two hours of struggling with the game's inexcusably terrible in-game script editor) was "this would be a kickass game if I could play it" |
08:16 | <@ToxicFrog> | Oh god I can't hate on that script editor enough |
08:17 | <@ToxicFrog> | It's like someone decided that what the world really needed was the ability to write mods for a huge, complex game using a TI-83 graphing calculator |
08:17 | | You're now known as TheWatcher[afk] |
08:18 | <@TheWatcher[afk]> | I think that sums up the whole X series, actually |
08:18 | <@TheWatcher[afk]> | They'd be good games, if they were developed by people who had a fucking clue |
08:18 | <@TheWatcher[afk]> | But, anyways |
08:18 | <@Vornicus> | One of the things I wanted to do with VornLink is have a script editor that you could run three ways: as a macro device, as a... flowcharty thing, and as an actual text script, which you could even open in YTEOC |
08:19 | <@ToxicFrog> | TW: they're like Dwarf Fortress, except where DF has "I'll do it after the important stuff is finished" scrawled under "user interface", the X series has "huh?" and a stick figure drawing. |
08:20 | <@ToxicFrog> | "macro device"? |
08:22 | <@Vornicus> | macro recording |
08:25 | <@ToxicFrog> | Aah. |
08:37 | | Vornicus [Vornicus@Admin.Nightstar.Net] has quit [Quit: ] |
08:38 | | Vornicus [~vorn@ServicesOp.Nightstar.Net] has joined #code |
08:38 | | mode/#code [+o Vornicus] by ChanServ |
08:43 | <@ToxicFrog> | ...hmm. |
08:43 | <@ToxicFrog> | I need to do more analysis, but vstruct may be slower than I thought it was. :( |
08:46 | <@ToxicFrog> | If I don't have it unpack the TOC entries, and instead just read the data and discard it, it loads ARCHIVE.DAT in around 0.05s. |
08:46 | <@ToxicFrog> | If I have it unpack the TOC entries, it takes 20s. |
08:54 | <@Vornicus> | Also I couldn't get X2 running so I don't even know how it plays. :( |
08:57 | <@ToxicFrog> | It plays like Sid Meier's Galactic Empire Construction Game, if you were playing it from the cockpit of a TCF P-64 Ferret. |
08:57 | <@Vornicus> | Pffff |
08:57 | <@ToxicFrog> | Note that this applies even if you are commanding a kilometers-long supercarrier. |
08:58 | <@ToxicFrog> | Oh hey. That's the bottleneck. |
08:58 | <@Vornicus> | Tell me more! |
08:58 | <@ToxicFrog> | So, it turns out that it suddenly goes a lot faster if I read() the entire TOC into memory and unpack it from there. |
08:58 | <@Vornicus> | Yes. |
08:58 | <@ToxicFrog> | Because then it's a bunch of substring operations, rather than several thousand one-byte calls to read(2). |
08:58 | <@Vornicus> | Pffffff |
08:59 | <@ToxicFrog> | Implementing that change caused it to go from 20s to 1s. |
08:59 | <@Vornicus> | Which is more sensible; how big is ARCHIVE.DAT? |
08:59 | <@ToxicFrog> | Which is still twenty times slower than it would be without unpack, but I can live with that. |
08:59 | <@ToxicFrog> | 200k. |
09:00 | | * Vornicus nods. |
09:00 | <@ToxicFrog> | Although a more useful metric (since chunk info management is now dominating over IO) is number of chunks in the file |
09:01 | <@ToxicFrog> | Which is around 900, I think |
09:01 | <@ToxicFrog> | 832. |
09:01 | <@ToxicFrog> | (16 maps * 52 chunks/map) |
09:02 | <@ToxicFrog> | So figure it can load 800 chunks/s less IO time. |
09:02 | | * Vornicus counts. actually 16 maps? ...10 decks, 3 groves, and a couple of cyberspace zones. I guess so! |
09:04 | <@AnnoDomini> | CYBERSPACE. |
09:07 | <@Vornicus> | It seems like more thanthat. |
09:08 | <@ToxicFrog> | 10 decks, 3 groves, SHODAN C/space, and the rest of the C/space areas are packed several to a map. |
09:08 | <@Vornicus> | I knew the latter. |
09:09 | <@ToxicFrog> | And yeah, it does feel larger. |
09:09 | <@ToxicFrog> | The devs are good at that. |
09:09 | <@ToxicFrog> | Interesting tidbit: the SS1 engine has a max render distance of 14 tiles. |
09:09 | <@ToxicFrog> | I have so far found exactly one place in the entire game where it's possible to actually see this. |
09:09 | <@ToxicFrog> | Even on Deck 8. |
09:09 | <@Vornicus> | I know of several. |
09:10 | <@Vornicus> | Deck 3, looking between the elevators. |
09:10 | <@ToxicFrog> | Oh? The one I found is on Deck 1 - turn right after exiting the medical recovery rooms and have both doors open. |
09:11 | <@ToxicFrog> | (which requires you to have completed the deck, move quickly down the hall opening the doors, and then turn around) |
09:11 | <@Vornicus> | The view distance may be shorter on mac. |
09:11 | <@ToxicFrog> | Let's ask shockmap! |
09:11 | <@ToxicFrog> | (the hacked-together C program I am working on replacing) |
09:11 | <@ToxicFrog> | http://www.funkyhorror.net/toxicfrog/projects/shockmap/03_Maintenance.html |
09:12 | <@ToxicFrog> | The central area of Deck 3 appears to be just inside the limit, so yeah, open a few doors and you could exceed it. |
09:12 | <@Vornicus> | It's from an alcove on the north end to an alcove on the south end. 15 to the 2-deep alcove there. |
09:13 | <@ToxicFrog> | The 2-deep alcove there is actually a small crawlspace near the ceiling and is pitch-black anyways. |
09:13 | <@Vornicus> | Huh. |
09:13 | <@Vornicus> | The east-west passages in the southern one also do it, but I think that's dark. |
09:14 | <@ToxicFrog> | Yeah, most of the central area is dark. |
09:14 | <@ToxicFrog> | The better for invisible mutants to sneak up on you in. |
09:14 | <@Vornicus> | The southern maintenance tunnels, I mean |
09:14 | <@ToxicFrog> | Even in the endgame, I go through Deck 3 at a dead run from elevator to elevator, stopping for nothing. |
09:15 | <@Vornicus> | I think the Very Radioactive straight zone in R is long enough. |
09:15 | <@Vornicus> | Or I thought that area was Very Radioactive, I see Rad: no on it |
09:16 | <@Vornicus> | (west center, it goes east-west and is 2 units wide) |
09:17 | <@ToxicFrog> | That's actually not, although everything around it is; it's the shielded tunnel you take to get to the shield safety override control |
09:17 | <@Vornicus> | The north side of the hub corridor in 5 should be long enough. |
09:18 | <@ToxicFrog> | Looks like it, yeah. |
09:18 | <@Vornicus> | As should the corridor that goes past the escape pods, along with those two hangars. |
09:18 | <@ToxicFrog> | That hall is damn dark in game, though. |
09:18 | <@Vornicus> | Though I don't know if you can see that. |
09:19 | <@ToxicFrog> | The one that goes past the escape pods definitely would be, but getting both doors open at the same time is AFAIK impossible. |
09:19 | <@ToxicFrog> | Or at least, getting them open at the same time while far enough away. |
09:19 | <@ToxicFrog> | Maybe with maxed-up JET ROLLERSKATES. |
09:19 | <@Vornicus> | Similarly there's crawlspaces on 6... |
09:20 | <@ToxicFrog> | The crawlspace is dark and filled with rollerbombs, I think, although I'd have to go back there to check. |
09:20 | <@ToxicFrog> | (fuck Rollerbombs) |
09:21 | <@Vornicus> | Alpha Grove, looking south from the northeast corner... may have overhangs. |
09:21 | <@ToxicFrog> | Oh hey. So, I said it was down to 1s? |
09:21 | <@ToxicFrog> | That's with the profiler enabled. |
09:21 | <@ToxicFrog> | Without profiling it's more like 0.3s. |
09:21 | <@Vornicus> | Wheeee |
09:22 | <@Vornicus> | Delta Grove, looking east from the westernmost room... |
09:22 | <@Vornicus> | The CSpaces have many places where it happens. |
09:25 | <@Vornicus> | Indeed you can hardly avoid it in CSpace, seeing as the walls are seethrough. |
09:32 | <@ToxicFrog> | True. |
09:32 | <@ToxicFrog> | Heh. "This doesn't make sense...the data it's getting for tocbuf is complete garbage! It's like it's reading from a different part of the file!" |
09:32 | <@ToxicFrog> | Some fiddling around in the debugger later, I realize what I'm looking at: |
09:33 | <@ToxicFrog> | local tocbuf = fin:read(nrof_chunks * 10) |
09:33 | <@ToxicFrog> | fin:seek("set", data_offs) |
09:33 | <@ToxicFrog> | ...bunch of debugging code and whatnot goes here... |
09:33 | <@ToxicFrog> | local tocbuf = fin:read(nrof_chunks * 10) |
09:33 | <@Vornicus> | Um |
09:33 | <@Vornicus> | Yep. |
09:33 | <@ToxicFrog> | Yeah, that would do it. |
09:35 | <@Vornicus> | It's not quite as fun as class Foo { ... Foo foo = new Foo(); ... } though |
09:52 | | AnnoDomini [~farkoff@Nightstar-29296.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
09:55 | | You're now known as TheWatcher |
09:59 | | AnnoDomini [~farkoff@Nightstar-28935.neoplus.adsl.tpnet.pl] has joined #Code |
09:59 | | mode/#code [+o AnnoDomini] by ChanServ |
10:53 | | You're now known as TheWatcher[d00m] |
10:58 | | Rhamphoryncus [~rhamph@Nightstar-7168.ed.shawcable.net] has quit [Quit: Rhamphoryncus] |
11:21 | | Consul_ [~Consul__@Nightstar-2425.dsl.sfldmi.ameritech.net] has quit [Ping Timeout] |
11:24 | | Consul [~Consul__@Nightstar-2425.dsl.sfldmi.ameritech.net] has joined #code |
11:24 | | mode/#code [+o Consul] by ChanServ |
11:32 | | Reivthia [~Orthianz@Nightstar-22340.xdsl.xnet.co.nz] has quit [Ping Timeout] |
12:08 | | You're now known as TheWatcher |
13:00 | | gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has joined #Code |
13:01 | | mode/#code [+o gnolam] by ChanServ |
13:03 | | Thaqui [~Thaqui@121.98.166.ns-22683] has quit [Client exited] |
13:11 | | gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has quit [Ping Timeout] |
13:14 | | gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has joined #Code |
13:14 | | mode/#code [+o gnolam] by ChanServ |
13:34 | | Attilla [~The.Attil@92.1.54.ns-25924] has joined #code |
13:34 | | mode/#code [+o Attilla] by ChanServ |
14:41 | | gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has quit [Ping Timeout] |
14:43 | | gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has joined #Code |
14:43 | | mode/#code [+o gnolam] by ChanServ |
14:53 | | Tarinaky_ [~Tarinaky@Nightstar-16638.plus.com] has joined #code |
14:54 | | TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has quit [Ping Timeout] |
15:08 | | You're now known as TheWatcher[afk] |
16:07 | | Syloqs_AFH [~Syloq@Admin.Nightstar.Net] has joined #code |
16:08 | | Syloqs_AFH is now known as Syloqs-AFH |
16:09 | | Derakon[AFK] is now known as Derakon |
16:34 | | You're now known as TheWatcher |
17:44 | | Namegduf [namegduf@82.25.200.ns-12231] has joined #code |
18:11 | <@SmithKurosaki> | Windows conversation, see here: http://xkcd.com |
18:20 | | Namegduf [namegduf@82.25.200.ns-12231] has quit [Quit: More partitioning...] |
19:13 | <@gnolam> | Arrrgh |
19:14 | <@gnolam> | Testing 10 minute averages isn't fun. :P |
19:16 | <@gnolam> | Step 1: Compile. Step 2: Set up the test. Step 3: Go and do something interesting for 10 minutes. Step 4: Check the result, go back to step 1. :P |
19:16 | <@Derakon> | Hey, it's better than 10 minute compiles, where you come back ten minutes later to "Missing semicolon on line 1523". |
19:24 | <@gnolam> | If it takes 10 minutes to get to that point, I'd say there's something wrong with your build setup. |
19:24 | <@Derakon> | The "something wrong" would probably be that you're working with two-decade-old hardware. |
19:39 | | GeekSoldier [~Rob@Nightstar-8573.midstate.ip.cablemo.net] has joined #code |
19:39 | | mode/#code [+o GeekSoldier] by ChanServ |
19:50 | | * Derakon amuses himself with his first "AI" object in Jetblade. http://derakon.dyndns.org/~chriswei/games/jbrl/actions/spawn1.gif (warning: 1MB GIF) |
19:52 | <@TheWatcher> | But hey, at least 10 minute builds would give time for office chair swordfights |
19:52 | <@SmithKurosaki> | ^5 TW |
20:13 | <@Vornicus> | Arg, who the fuck decided that Excel should error when given arguments of different signs to floor? |
20:20 | <@gnolam> | It takes more than one argument? |
20:21 | <@Vornicus> | Yes. |
20:22 | <@Vornicus> | And considering that I can write it unambiguously in one line of code and have it /not/ throw an error, there's something wrong here. |
20:24 | <@Vornicus> | As it is, to get the same behavior, for negative inputs I have to switch to ceiling. |
20:28 | | Rhamphoryncus [~rhamph@Nightstar-7168.ed.shawcable.net] has joined #code |
20:37 | < simontwo> | obviously... ;) |
20:45 | | * TheWatcher ponders these image save functions |
20:45 | <@TheWatcher> | To patch SDL_image or to not patch SDL_image... hmmm. |
21:01 | | * TheWatcher eyes the SDL_image code |
21:01 | <@TheWatcher> | ... yeah, I'll not be patching that |
21:43 | <@McMartin> | heh |
21:43 | <@McMartin> | sidelib~ |
21:53 | <@ToxicFrog> | What's the contract there, anyways? floor(x,y,z) -> ?x?,?y?,?z?? |
21:56 | <@Vornicus> | floor(x,y) = (x // y) * y |
21:57 | <@Vornicus> | It's the highest multiple of y such that x is no smaller than it |
22:00 | < Thalass> | huzzah. I got the google earth gps .kml file thingy working. Only it's incorrect by about a kilometre. But whatever. :P |
22:03 | <@gnolam> | Thalass: what's it for? |
22:04 | < Thalass> | so i can use google earth as a gps program thingo. |
22:04 | < Thalass> | I had to learn a little bit of python fiddling but it seems ok so far. Good enough for me anyway :P |
22:04 | < Thalass> | My code-fu is now at about level 0.02 |
22:05 | <@McMartin> | Floating-point instability gets that up to 0.020000000000199999999 |
22:22 | < Thalass> | whee |
22:22 | | * Derakon facepalms. |
22:24 | | NamegPartitioning [namegduf@82.25.200.ns-12231] has joined #code |
22:26 | | NamegPartitioning is now known as Namegduf |
22:30 | | * gnolam stabs Valve for making everything in Source unicode-aware... except for Hammer. |
22:30 | | * McMartin <?> Unicode |
22:55 | | NSGuest-1445 is now known as EvilCaliforniaLord |
--- Log closed Wed Jul 22 00:00:36 2009 |