code logs -> 2009 -> Tue, 03 Feb 2009< code.20090202.log - code.20090204.log >
--- Log opened Tue Feb 03 00:00:10 2009
00:00 crem_ [~moo@Nightstar-28703.adsl.mgts.by] has joined #code
00:01 crem [~moo@Nightstar-28703.adsl.mgts.by] has quit [Connection reset by peer]
00:11 * Derakon shrinks the ship's flanges down a bit. http://derakon.dyndns.org/~chriswei/temp/bulletmlship5d.png
00:11
<@Derakon>
It was looking grossly out of proportion earlier, when the flanges were ~2x the size of the main fuselage.
00:11
<@Derakon>
Might shrink it even more...
00:15
< Tarinaky>
...Does //! mean anything in C++? My text editor highlighted it differently to a regular comment.
00:15
<@Derakon>
Not to my knowledge. Might just be a documentation convention.
00:16 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Ping Timeout]
00:16
<@McMartin>
That's my guess.
00:16
<@McMartin>
Though IIRC Doxygen's is ///
00:16
<@McMartin>
Derakon: Looks good
00:17
<@McMartin>
Also, the red emitters on the back are *very* important for making it look like it has a facing.
00:17
<@McMartin>
And isn't, say, the Tempest clawship
00:17
<@Derakon>
Heh.
00:17
<@Derakon>
Those are hidden when you're looking from the top down.
00:17
<@Derakon>
But then you're playing the game, so it hardly matters~
00:17
<@McMartin>
That's OK, because it's clear, then.
00:18
< Tarinaky>
Yeah. It highlights the same colour as ///.
00:18
<@McMartin>
Definitely a doc convention of some kind then. Dunno whose.
00:20
<@Derakon>
Dammit I have got to get some blinds. >.<
00:20
<@Derakon>
I can barely see my work here.
00:40
<@Derakon>
That's very worrisome. Twice now I've gotten the errror "No module named expat; use SimpleXMLTreeBuilder instead" and then had the program work again on the second invocation.
00:41
<@McMartin>
That's pretty ugly, yeah. And weird.
00:41
<@McMartin>
It's like something isn't being installed
00:43
<@Derakon>
Maybe it has something to do with Azureus running in the background~
00:44 * Vornicus shows up.
00:45
<@Derakon>
Updated ingame screenshot: http://derakon.dyndns.org/~chriswei/temp/bulletmlscreen20.png
00:47
<@McMartin>
Improvements.
00:48
<@McMartin>
What map is that?
00:48
<@Derakon>
Very beginning of fandance.
00:48
<@Consul>
Yeah, looking really good.
00:49 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code
00:49 mode/#code [+o ToxicFrog] by ChanServ
00:49
<@Derakon>
The only problem with Ethnocentric (that font that McM likes) is that it's not fixed-width.
00:49
<@Derakon>
I wonder how faking it would look...
00:49
<@Vornicus>
Are the numbers fixed width?
00:49
<@McMartin>
That's only important for numbers, right?
00:49
<@Derakon>
No.
00:49
<@Derakon>
1 is narrow.
00:50
<@Vornicus>
Blegh.
00:50 * Vornicus beats font designers that don'tmake their numbers fixed width.
00:51
<@Derakon>
Maybe I could modify the font...
00:51
<@Derakon>
Just stick some whitespace in.
00:52
<@McMartin>
Yeah
00:52
<@Vornicus>
It's practically Rule 1.
00:52
<@McMartin>
Or draw it a digit at a time
00:52
<@McMartin>
The lower left is looking crowded.
00:52
<@McMartin>
I think you need to bump the radii a bit.
00:52
<@Derakon>
Drawing it a digit at a time is "faking it".
00:52
<@McMartin>
Maybe buy the space with shrinking the outline down to the size of the letters.
00:52
<@Derakon>
Are the meters crowding the bomb count, or the life count?
00:53
<@McMartin>
The life count is simply way too big
00:53
<@Derakon>
Ah. That is easily fixed.
00:53
<@McMartin>
The meters are crowding both right now. Shrinking the outline for life will fix that
00:53
<@McMartin>
Making the bomb charge be where rank is now, and largening rank out one unit further, should fix the other
00:53
<@Derakon>
This is very consistent. Every other invocation of the program breaks.
00:54
<@Derakon>
Oh, wait, it broke twice in a row.
00:54
<@Derakon>
I haven't even installed anything!
00:54
<@McMartin>
The other channel also doesn't really like the outline much, preferring just a shrunken sprite.
00:54
<@McMartin>
Shrinking the sprite to the size of the letters is probably my preferred look
00:55
<@Derakon>
I prefer the stylized outline myself.
00:55
<@Derakon>
Do we have good reasons to prefer either?
00:55
<@Derakon>
Or is it just a matter of preference (in which case the side with the most votes wins)?
00:56
<@McMartin>
The outline is claimed to be harder to interpret, but I think it's preference.
00:56
<@McMartin>
It definitely needs to be smaller, though.
00:56
<@McMartin>
Maxing out at two-letters-tall.
00:56
<@Derakon>
Yeah, I've shrunk it 50%.
01:32
<@Derakon>
Mental note: highlight the most recently-obtained high score.
01:33
<@Derakon>
Also, thoughts on this menu screen? http://derakon.dyndns.org/~chriswei/temp/bulletmlscreen21.png
01:34
<@Derakon>
I need to figure out how to buttonize the options.
01:34
<@Derakon>
And there's a fair amount of dead space.
01:34
<@Derakon>
I was thinking maybe making a computer console type of thing for the demo view and course information.
01:37 gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has quit [Quit: Z?]
01:45 Attilla [~The.Attil@Nightstar-9469.cdif.cable.ntl.com] has quit [Quit: <Insert Humorous and/or serious exit message here>]
01:59
<@McMartin>
"Current course" &c should be in the easier-to-read font.
01:59
<@Derakon>
I kinda want to have only one font...
02:01 * Derakon determines that the cockpit is too hard to make out, makes it bright red.
02:03 You're now known as TheWatcher[T-2]
02:05 You're now known as TheWatcher[zZzZ]
02:08 * Derakon coughs as he rerenders the splash screen...and the ship's nose is buried in a bullet. Whoops.
03:19
<@Derakon>
So, registration codes. I assume the way this works is that the program has a key hidden in its binary somewhere that it uses to decrypt the code, then runs a checksum on the result; if it's valid, then the program unlocks itself. Yes?
03:32
<@Vornicus>
That's the usual way.
03:36
<@Derakon>
I guess I should figure out a good checksum implementation then.
03:38
<@McMartin>
SHA1.
03:39
<@Derakon>
Hrm. Let me walk through this in my head.
03:40
<@Derakon>
If I get a result of 1, the game unlocks. Any other result is useless.
03:40
<@Derakon>
I want many values that each evaluate to 1 under some algorithm.
03:40
<@Derakon>
...crud, my crypto-fu is weak.
03:41
<@McMartin>
SHA1 of their name + a magic string.
03:41
<@Vornicus>
The way you do it: Have the dude send you (for instance) his name and a unique registration code.
03:42
<@Vornicus>
YOu encrypt that using your private key, and send the encrypted string back to the dude.
03:42
<@Derakon>
I was hoping to let them just use a code...guess that's not feasible?
03:42
<@McMartin>
Well, only if you want it to be trivially crackable.
03:42
<@Derakon>
Heh.
03:43
<@McMartin>
Oh, and, of course, it occurs to me that it can't use strong crypto if you want it hosted here or the NSA will kick your door down~
03:43
<@Derakon>
Okay, yeah, so I send me "Chris", use the key 123abc to encrypt "Chris1", send that back to me, I plug "Chris" and the encrypted string into the program, it unencrypts using the same key and gets "Chris1" back out.
03:43 * Derakon faceplams.
03:43
<@Vornicus>
He inputs his name as given to you, and the encrypted string, and the program decrypts it using the public key in the binary; if the decrypted version matches the typed/generated version, win.
03:43
<@Derakon>
s/plam/palm/
03:44
<@Derakon>
Public key, not private key, right.
03:45
<@Derakon>
If the private key gets out, then anyone can make their own code.
03:45
<@Vornicus>
RIght, which is why you guard it carefully.
03:50
<@Derakon>
And I assume I do want to insert some extra text into the text that the user provides?
03:50
<@Derakon>
Which my program would know to look for and discard after decrypting?
03:50
<@McMartin>
Right
03:50
<@Derakon>
That would be the salt, yes?
03:51
<@McMartin>
Indeed
03:51
<@Derakon>
Yay I remember something!
03:51
<@McMartin>
You'll also probably not want to have it lying around as an easily greppable string
03:51
<@Derakon>
The public key?
03:51
<@McMartin>
No, the salted amount.
03:51
<@McMartin>
The public key... is trickier, since you can run afoul of export laws that way.
03:52
<@Derakon>
I was figuring something like the salt being "123-" and "-456", and then the program, after decrypting, does /.*-(.*)-.*/
03:52
<@McMartin>
Right
03:52
<@Derakon>
Except with a less common delimiter.
03:52
<@Vornicus>
I was under the impression that the export laws had been fixed as far as that goes.
03:52
<@McMartin>
The other thing you can do is hash it
03:52
<@McMartin>
Add the salt on the client side, hash it, make sure it hashes the same as the reg code.
03:52
<@McMartin>
Which is basically what /etc/passwd does
03:53
<@Derakon>
I don't follow...
03:53
<@McMartin>
OK, I have a name: McMartin.
03:53
<@McMartin>
I give you five bucks, you take an MD5 of the string "123-McMartin-456" and send me that.
03:53
<@McMartin>
I enter it in as a reg code.
03:53
<@McMartin>
Along with my name.
03:54
<@McMartin>
It then takes an MD5 of the string "123-McMartin-456", which it computes in a somewhat roundabout way to make it not obvious on hacks.
03:54
<@McMartin>
It ensures that the result matches the registration code.
03:54
<@Derakon>
Ahh.
03:54
<@Derakon>
Wouldn't that basically make the salt into the key?
03:54
<@McMartin>
Yeah.
03:55
<@Derakon>
Really my goal here is to keep honest people honest, same as a door lock.
03:55
<@Derakon>
If you're really so into pirating that you'll pirate a $5 game, I'm not going to try especially hard to stop you.
03:59 Bob_work [c6b3e33a@Nightstar-14595.mibbit.com] has joined #Code
05:46
<@Reiver>
Derakon: I notice the ship design is changing awfully quickly.
05:46
<@Derakon>
I made a model yesterday, and was happy with it until one of my friends pointed out it looked like a cornstalk, thus ruining it.
05:46
<@Reiver>
And what brought about the change of the meters, idly? They look... bigger.
05:47
<@Derakon>
The meters are a bit bigger, yes, and they should probably grow a bit again. The text inside is bigger and the meters needed to grow to contain that.
05:47
<@Reiver>
Mm.
05:47
<@Reiver>
Can you use a smaller X beside the X2 etc?
05:47
<@Reiver>
If that would help keep the size down, I mean.
05:47
<@Derakon>
Not conveniently, really.
05:48
<@Reiver>
Pity
05:48
<@Derakon>
I mean, I could.
05:48
<@Derakon>
But it'd involve multiple calls to drawText and I'd have to fiddle with alignments and so on.
05:48
<@Reiver>
Do you need the X2 on the bomb at all and lives then?
05:48
<@Derakon>
The counts must be there.
05:48
<@Derakon>
I suppose the 'x' could go.
05:48
<@Reiver>
This was what I was thinking.
05:48
<@Reiver>
Could also give you more space to draw inside the meters.
05:49
<@Reiver>
And I warn that if you make them too big, they start being hard to read with peripheral vision.
05:49
<@Derakon>
...how does that work?
05:49
<@Reiver>
Once an object gets too big, you need to actually /look/ at it to parse what is being said.
05:50
<@Derakon>
Ah.
05:50
<@Reiver>
Smaller ones can be interpreted without actually looking at it; and it seems you're after a minimalist interface to start with, so
05:50
<@Derakon>
As a general rule, you take away until you can't take away any more.
05:51
<@Reiver>
Then ditch the Xs - I see you already did that at the top.
05:51
<@Derakon>
Fair enough.
05:51
<@Reiver>
What's the number represent, anyhow?
05:51
<@Derakon>
Next to the linear meter? Score multiplier.
05:51
<@Reiver>
And the linear meter?
05:52
<@Derakon>
Progress towards increasing the multiplier.
05:52
<@Reiver>
Aha.
05:52
<@Reiver>
And I agree on cutting down the size of the outline too.
05:52
<@Derakon>
Okay, looks like I get to solve that problem sooner rather than later. ElementTree is now consistently broken after I tried to reinstall it.
05:53
<@Derakon>
...and now it starts working again. WTF?
05:53
<@Reiver>
What did you change?
05:53
<@Derakon>
Nothing. I just invoked it five times in a row and four times, it failed.
05:54
<@Reiver>
(Final thought is that if you can reduce the size of the meters, go for it. I suspect it will help once the lives token is smaller anyway; any lack of clarity is possibly because it appears your ship model has increased in size dramatically since I last saw it, and the outline is less obvious.)
05:54
<@Reiver>
Were the four calls absolutely identical?
05:54
<@Derakon>
Which image are you looking at?
05:54
<@Derakon>
Yes.
05:54
<@Derakon>
./bulletml.py
05:56 * Derakon comments out the nice error handling code he wrote, so that next time it happens, he gets a stack trace instead of an apology.
05:57
< Bob_work>
hehe
06:01
<@Derakon>
Reiver: which images were you looking at, anyway?
06:02
<@Reiver>
bulletmlscreen20.png
06:03
<@Derakon>
Ahh, yeah. Try 22b instead.
06:03
<@Reiver>
Also: Is there any way to inherently balance track difficulty to score? Just having high scores based on total points could be a bit flawed otherwise.
06:03
<@Derakon>
High scores are specific to course.
06:03
<@Reiver>
If there was, say, a very high scoring, relatively easy one
06:03
<@Reiver>
Ah, okay.
06:04
<@Reiver>
I just saw the one that listed highest score, and noted track seperately.
06:04
<@Derakon>
...though I just realized there's a hole in my logic there.
06:04
<@Derakon>
I take an MD5 of the course file and use that as the key for the highscores table.
06:04
<@Derakon>
So if you change the course, you get a new highscores table.
06:04
<@Derakon>
But if you change the patterns, then it isn't.
06:05
<@Reiver>
Sounds like you want to MD5 the whole course+pattern
06:05
<@Derakon>
Yep.
06:12
<@Derakon>
Mind you, this is still "vulnerable" to modifying the BulletML files mid-game.
06:12
<@Derakon>
Since they get re-parsed every time I spin up a new emitter.
06:12
<@Derakon>
I could fix that...but do I really care?
06:14
<@Reiver>
Do you intend to have a 'global' scoreboard anywhere, ala Audiosurf?
06:14
<@Derakon>
No.
06:14
<@Reiver>
Then not really, no.
06:15
<@Derakon>
Security's too bloody difficult, and jerks will dedicate way more effort to breaking it than I could spend maintaining it.
06:15
<@Reiver>
(Note: The global scoreboard was one of Audiosurfs better features.)
06:15
<@Derakon>
It also requires setting up a dedicated server and giving the game networking capabilities.
06:15
<@Derakon>
(Mind you I'd have a server for the website anyway, but still...)
06:16
<@Derakon>
We can call that a version 2.0 feature if the game's popular enough.
06:16
<@Reiver>
Fair.
06:24 UndeadAnno [~farkoff@Nightstar-29653.neoplus.adsl.tpnet.pl] has joined #Code
06:24 mode/#code [+o UndeadAnno] by ChanServ
06:54
< Tarinaky>
Morning.
07:22 Derakon is now known as Derakon[AFK]
08:11 Vornicus [~vorn@Admin.Nightstar.Net] has quit [Quit: ]
09:04 You're now known as TheWatcher
09:34 gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has joined #Code
09:34 mode/#code [+o gnolam] by ChanServ
09:36 Bob_work [c6b3e33a@Nightstar-14595.mibbit.com] has quit [Quit: http://www.mibbit.com ajax IRC Client]
10:35 Rhamphoryncus [~rhamph@Nightstar-7184.ed.shawcable.net] has quit [Quit: Rhamphoryncus]
10:59 * TheWatcher readsup
11:04
<@TheWatcher>
Dera: I really wouldn't bother attempting any kind of registration code that unlocks the game. If someone pays for it, give them a link to a download, maybe let them customise the install with their name or something, but honestly? If someone isn't going to want to pay for it, they're just going to get the cracked version anyway
11:04
<@TheWatcher>
and there will be a cracked version
11:04
<@TheWatcher>
no may, no perhaps, no possibly. There *will* be one.
11:05
<@TheWatcher>
And the more effort you put into creating the protection scheme, the chances are you'll just get it cracked *faster*
11:06
<@TheWatcher>
Crackers, in many cases, don't crack games to play them. Most of them couldn't care less about the games themselves. They do it for the challenge of trying to crack the protection, just because it is there. Some because of idealism, some simply because it's an intellectual challenge to try and work out the most efficient ways around it
11:08
<@TheWatcher>
Trying to come up with anything remotely like moderately decent protection is just winching up a big neon sign saying "Here's a cracking challenge!" on it
11:11
<@TheWatcher>
People who are going to be honest will be honest. People who won't will find a way around it no matter what you do. So you're better off expending your efforts on things that make the game better, or maybe thinking up ways to reward the people who are honest. Copy protection treats your customers like criminals, and is never actually seen by the pirates, when the better thing to do is to reward the legitimate users somehow.
11:23
<@gnolam>
Or the TL;DR version: If your game appeals to people, it will get cracked no matter what. If not, there's no need for copy protection anyway.
11:54 * gnolam wanders off to meet his client.
12:19 thalass [~thalass@Nightstar-19500.dyn.iinet.net.au] has joined #code
12:19
< thalass>
yarr?
12:19
< thalass>
I've got a linux-type question. Mostly out of curiosity as I won't use the info for quite a while.
12:20
< EvilDarkLord>
Ask.
12:20 mode/#code [+o EvilDarkLord] by ChanServ
12:20
< thalass>
I'm wondering if it's possible for to set up a laptop so that when external power is removed, it automatically suspends to ram.
12:21
<@EvilDarkLord>
Yes. For details, consult someone else. :)
12:21
< thalass>
This is for a carputer, where the external power comes from the car, and the battery would be a backup. Perhaps it'd be better to have a timeout of a few minutes or something.
12:21
< thalass>
awesome!
12:28 gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has quit [Ping Timeout]
12:29 gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has joined #Code
12:29 mode/#code [+o gnolam] by ChanServ
12:29 thalass [~thalass@Nightstar-19500.dyn.iinet.net.au] has left #code [thanks]
12:36 Attilla [~The.Attil@Nightstar-9469.cdif.cable.ntl.com] has joined #code
12:36 mode/#code [+o Attilla] by ChanServ
13:27
<@Reiver>
Thalass: Define 'suspends to ram'
13:36
<@TheWatcher>
Reiv: 12:29:55 -!- thalass [~thalass@Nightstar-19500.dyn.iinet.net.au] has left #code [thanks]
13:37
<@TheWatcher>
(it's 13:37:00 now)
13:38
<@Reiver>
Doh
13:38 * Reiver makes a minor correction to his system colors; for some reason he had 'parts' as the wrong color.
13:59
<@GeekSoldier>
I suppose it's better than having 'pants' as the wrong color.
14:06
<@Reiver>
GeekSoldier: I have joins/quits colorcoded for ease of tracking
14:06
<@Reiver>
I'd forgotten to set 'parts' to the same color as 'quits'.
14:06
<@Reiver>
(Given it is effectively the same thing, afterall.)
14:10
<@GeekSoldier>
ah, mine Just Always Did It That Way.
14:11
<@Reiver>
Mine probably did too.
14:11
<@Reiver>
But it's been so long since I've used a default install that I really wouldn't know any more.
15:03
<@gnolam>
Yay, the client had very reasonable expectations.
15:04
<@gnolam>
And pastries.
15:05
<@Reiver>
That's a pretty awesome client, twofold.
15:10
<@gnolam>
Also, he looks like Chief Tyrol from BSG.
15:15 * gnolam starts trying out his borrowed Geiger counter.
15:21
<@gnolam>
10 uSv/h. Nominal.
15:35
<@gnolam>
+0.
15:47
<@Reiver>
gnolam: Did you ever have luck with making your island generator standalone?
16:15
<@gnolam>
Oh, that. I got... sidetracked. :o
16:16
<@gnolam>
The actual generating bit, yes. The fancy UI... is still on its way. :)
16:38 KBot [AnnoDomini@Nightstar-29470.neoplus.adsl.tpnet.pl] has joined #Code
16:40 KarmaBot [AnnoDomini@Nightstar-29653.neoplus.adsl.tpnet.pl] has quit [Ping Timeout]
16:40 AbuDhabi [~farkoff@Nightstar-29470.neoplus.adsl.tpnet.pl] has joined #Code
16:41 UndeadAnno [~farkoff@Nightstar-29653.neoplus.adsl.tpnet.pl] has quit [Ping Timeout]
16:41 KBot is now known as KarmaBot
16:48
<@ToxicFrog>
Reiver: presumably what he means by STR is the usual: stack registers, power off peripherals, spin down clocks.
16:48
<@ToxicFrog>
As opposed to suspend to disk (hibernate) or shut down.
16:49
<@ToxicFrog>
<Ceron> what kind of if-clause should be used to recognize n and n+1 character. If a word is or if are a word is not?
16:49
<@ToxicFrog>
um
17:08 Vornicus [~vorn@Admin.Nightstar.Net] has joined #code
17:08 mode/#code [+o Vornicus] by ChanServ
18:22 Derakon[AFK] is now known as DERAKON
18:22 DERAKON is now known as Derakon
19:39 Syloq [Syloq@Admin.Nightstar.Net] has joined #code
19:40 Syloq is now known as Syloqs-AFH
20:17 Rhamphoryncus [~rhamph@Nightstar-7184.ed.shawcable.net] has joined #code
21:35
< AbuDhabi>
o_O
21:36
< AbuDhabi>
What's a "backwards" search?
21:36
< AbuDhabi>
Is this supposed to mean the situation when you run out of child nodes at a level, so you backtrack?
21:37
<@EvilDarkLord>
Could be searching from the goal.
21:37
<@TheWatcher>
yeah, it could be determining the path through your structure to a known target.
21:38
<@EvilDarkLord>
You can sometimes eliminate a big chunk of the search tree by searching both ways.
21:38
<@TheWatcher>
context could be handy, though
21:38
< AbuDhabi>
There is no context.
21:38
<@TheWatcher>
Only Zuul?
21:39
< AbuDhabi>
"Explain how 'backwards' search works and what is its computational complexity."
21:45
<@EvilDarkLord>
Are you doing depth-first and breadth-first and all that stuff?
21:46
<@EvilDarkLord>
(Just trying to establish some kind of context.)
21:47
< AbuDhabi>
I have no idea.
21:47
< AbuDhabi>
BFS is the other question.
21:47
< AbuDhabi>
I think.
21:47
< AbuDhabi>
I can run with that, but WTF is backwards search?
21:48
<@EvilDarkLord>
I'd guess it's where you search from the goal and from the start and find routes where they cross each other.
21:48
< AbuDhabi>
I will be promptly going to bed. Exam at 0730.
21:48
< AbuDhabi>
I see.
21:49
<@EvilDarkLord>
Computational complexity is on the order of O(b^(d/2)) where b is the branching factor and d is the maximal depth of the search tree, as I recall.
21:50
<@EvilDarkLord>
s/computational/space and time
21:50
< AbuDhabi>
Right. I'll try asking people IRL tomorrow.
21:50 AbuDhabi [~farkoff@Nightstar-29470.neoplus.adsl.tpnet.pl] has quit [Quit: The screams are not loud enough.]
22:12 crem [~moo@Nightstar-28703.adsl.mgts.by] has joined #code
22:12 crem_ [~moo@Nightstar-28703.adsl.mgts.by] has quit [Connection reset by peer]
--- Log closed Wed Feb 04 00:00:22 2009
code logs -> 2009 -> Tue, 03 Feb 2009< code.20090202.log - code.20090204.log >