--- Log opened Wed Mar 23 00:00:10 2011 |
00:01 | | Attilla_ is now known as Attilla |
00:15 | | cpux [chatzilla@Nightstar-c978de34.dyn.optonline.net] has quit [[NS] Quit: ChatZilla 0.9.86 [Firefox 3.6.14/20110218125750]] |
00:17 | | cpux [chatzilla@Nightstar-c978de34.dyn.optonline.net] has joined #code |
00:36 | | You're now known as TheWatcher[T-2] |
00:38 | | You're now known as TheWatcher[zZzZ] |
01:10 | | Attilla [Some.Dude@37647E.0E7447.22C7B1.567421] has quit [Ping timeout: 121 seconds] |
01:19 | | DiceBot [Reiver@5B433A.77CB96.194A93.12F406] has quit [Ping timeout: 121 seconds] |
01:20 | | Reiver [reaverta@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
01:20 | | Kindamoody is now known as Kindamoody[zZz] |
01:22 | | DiceBot [Reiver@Nightstar-aec8191b.xnet.co.nz] has joined #code |
01:22 | | Reiver [reaverta@ServerAdministrator.Nightstar.Net] has joined #code |
01:22 | | mode/#code [+qo Reiver Reiver] by ChanServ |
01:55 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Z?] |
03:27 | | SmithKurosaki [smith@DCDEB4.F95CFD.2EEAA4.B1AE3D] has joined #code |
05:36 | | Derakon is now known as Derakon[AFK] |
05:53 | | AnnoDomini [annodomini@D553D1.9D4909.D8029A.E53810] has joined #code |
05:53 | | mode/#code [+o AnnoDomini] by Reiver |
06:17 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
07:41 | | Kindamoody[zZz] is now known as Kindamoody |
08:46 | | You're now known as TheWatcher |
09:56 | | Attilla [Some.Dude@37647E.0E7447.22C7B1.567421] has joined #code |
09:56 | | mode/#code [+o Attilla] by Reiver |
10:06 | | AnnoDomini [annodomini@D553D1.9D4909.D8029A.E53810] has quit [[NS] Quit: leaving] |
10:29 | | Kindamoody is now known as Kindamoody|out |
10:47 | | AnnoDomini [annodomini@F67919.F326B3.98D923.BDA7B6] has joined #code |
10:47 | | mode/#code [+o AnnoDomini] by Reiver |
11:02 | <@AnnoDomini> | http://programming-motherfucker.com/ |
11:05 | <@TheWatcher> | Pft, awesome |
11:06 | < Tamber> | hehe |
11:16 | | gnolam [lenin@9D46A2.F4E9D7.E4B4CF.2072AD] has joined #code |
11:32 | | cpux is now known as shade_of_cpux |
12:29 | | AnnoDomini [annodomini@F67919.F326B3.98D923.BDA7B6] has quit [[NS] Quit: leaving] |
12:38 | | Stalker [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [[NS] Quit: If the world didn't suck, we'd all fall off.] |
12:45 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code |
13:01 | | AnnoDomini [annodomini@D553D1.41311B.346302.AC5555] has joined #code |
13:01 | | mode/#code [+o AnnoDomini] by Reiver |
14:02 | | Stalker [Z@26ECB6.A4B64C.298B52.D80DA0] has joined #code |
14:31 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
15:00 | | Attilla_ [Some.Dude@Nightstar-92c9199f.cable.virginmedia.com] has joined #code |
15:03 | | Attilla [Some.Dude@37647E.0E7447.22C7B1.567421] has quit [Ping timeout: 121 seconds] |
15:14 | | Reiv [orthianz@3CF3A5.E1CD01.36D449.95F5A5] has quit [Connection reset by peer] |
15:14 | | Reiv [orthianz@3CF3A5.E1CD01.36D449.95F5A5] has joined #code |
15:32 | | Rhamphoryncus [rhamph@C06FE3.F5723C.BE3FEB.9D4666] has quit [Client exited] |
15:44 | | Attilla_ is now known as Attilla |
15:49 | <@ToxicFrog> | e |
15:49 | <@froztbyte> | v |
16:31 | <@TheWatcher> | How do you go from 'e' to 'v'? |
16:31 | <@Namegduf> | Knight's move. |
16:31 | <@TheWatcher> | Hah, indeed |
16:34 | | * froztbyte was unfamiliar with that term |
16:35 | <@Namegduf> | In the game of chess you must never let your opponent know your moves.. |
16:36 | <@froztbyte> | http://www.gpnotebook.co.uk/simplepage.cfm?ID=-1737818073 |
16:36 | <@froztbyte> | Namegduf: yeah, but I'd still never run across it before |
16:37 | <@froztbyte> | definitely one I won't forget though |
16:39 | | * TheWatcher ponders a varient of chess for keyboards, using only a king, bishop, knight, rook, and four pawns a side, with the width of the keyboard being the board |
16:40 | <@froztbyte> | would be interesting to try out, since you have variable path-lengths |
16:40 | <@TheWatcher> | Indeed. |
16:40 | <@jerith> | Is g->b a straight move or a diagonal? |
16:41 | <@TheWatcher> | I'd go for straight. |
16:41 | <@TheWatcher> | vgy/rgn being diagonals |
16:42 | <@Namegduf> | Press a key to select that square, or the piece in that square. |
16:42 | <@Namegduf> | Press another square to to move your piece to that square. |
16:42 | <@jerith> | TheWatcher: But g and n are almost as separated as g and j... |
16:43 | <@TheWatcher> | depends on the keyboard, I guess |
16:53 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code |
17:21 | <@ToxicFrog> | I'd call fgh and tgb straight, vgy diagonal and rgn disallowed, personally. |
17:21 | <@ToxicFrog> | Although this kind of breaks bishops. |
17:29 | < gnolam> | The real problem comes with different keyboard layouts. |
17:29 | < gnolam> | If a rook moves from Q to Z, has it moved two steps (sane layout) or five (German keyboards)? |
17:39 | < celticminstrel> | rfv would be the other diagonal, wouldn't it? |
17:40 | < celticminstrel> | It's a hex/tri layout with only three rather than four possible directions, at least on my keyboard. |
17:41 | < celticminstrel> | Except it's not actually hexes or triangles. <_< |
17:53 | | Vornucopia [NSwebIRC@C888DE.7F9621.E9EB68.432608] has joined #code |
18:07 | < gnolam> | Oh hey - the requirements specification has finally arrived. |
18:09 | < Vornucopia> | Immediately make a certified copy and place it in a safe deposit box. |
18:15 | <@TheWatcher> | And then shed a single tear over it's sad, short existence before it is replaced by another. |
18:16 | <@TheWatcher> | *its |
18:16 | <@TheWatcher> | Gods, my brain is fried today. |
18:31 | < gnolam> | :) |
19:00 | | * ToxicFrog sighs |
19:01 | <@ToxicFrog> | I have a sinking feeling that felt's design is inherently fucked |
19:03 | < Vornucopia> | In what way? |
19:09 | <@ToxicFrog> | The way server and clients interact, the way events are propagated |
19:09 | <@ToxicFrog> | In retrospect, I probably should have gone with an "absolutely everything happens on the server, all state is updated on the server, and clients get state updates as needed" |
19:10 | <@ToxicFrog> | (at present it's more like "server validates, then tells all clients to update themselves") |
19:10 | < Vornucopia> | I take it your model is spread across both willy-nilly now. |
19:10 | <@ToxicFrog> | Yes :( |
19:10 | < Vornucopia> | Oh, that madness. Yeah, the server should do all state updates and just throw those out there. |
19:11 | <@ToxicFrog> | And I really don't want to do another major rewrite, because it's so close to being playable! |
19:12 | <@ToxicFrog> | But at the same time, work on it is getting slower and slower as it gets more and more ugly |
19:12 | < Vornucopia> | What's the state of any design documents? |
19:14 | <@ToxicFrog> | The design documents, such as they are, only cover Descent, not the engine itsel |
19:14 | <@ToxicFrog> | The rest is not so much design documents as it is scattered notes. |
19:15 | | * Vornucopia nods. |
19:19 | <@ToxicFrog> | At the moment, the revision I'm considering is that all true event handlers are called on the server; each class defines a bunch of methods, all of which are assumed to execute in server context, and a bunch of configuration used by the ui/ module (which executes in client context), and a list of properties to kept in sync automatically between client and server. |
19:21 | <@ToxicFrog> | Frob an item and the event dispatcher runs propagating the ui event (eg, click_left); it is assumed that this either operates completely client-side (pan/zoom, for example, do not need server involvement) or calls a non-UI event handler, which generates a message to the server and immediately returns. |
19:21 | <@ToxicFrog> | The server then does its thing and at some point in the future you may recieve one or more state updates resulting from your action. |
19:23 | < Vornucopia> | In the same way that IRC sometimes sends you confirmation updates for certain things, like join and nick? |
19:26 | <@ToxicFrog> | Yeah. |
19:26 | <@ToxicFrog> | Of course, I now need to come up with a good way of actually handling the state updates. |
19:29 | < Vornucopia> | Yeah. Other questions: if the server is running the game and all the state updates, it must know the game at whatever level the event handlers are for that game. |
19:30 | <@ToxicFrog> | Clarify? |
19:31 | < Vornucopia> | So for instance if I write a Go thing that (for instance) locks chips to gridlines, and prevents movement thereafter, the server now needs to know about that. Which I guess is almost the same as all clients needing to know it. |
19:32 | < Vornucopia> | But then if someone wants to play a game that's not in the server's list, they're mostly SOL. |
19:33 | <@ToxicFrog> | The latter I don't really consider an issue. |
19:34 | < Vornucopia> | --because it's easier to set up, and unlike IRC it doesn't have multiple games running at once, duh, silly me |
19:34 | < Vornucopia> | THough actually it makes players' lives easier too because the other clients now need just the art. |
19:34 | <@ToxicFrog> | Similarly, if player A wants to play chess and player B doesn't have the chess module installed, B will disconnect as soon as A tries to open the chess box with "server attempted to instantiate nonexistent class chess.ChessPiece; do you have the appropriate game module(s) installed?" |
19:35 | <@ToxicFrog> | That's, um, not entirely true |
19:35 | <@ToxicFrog> | Or at all true, really |
19:35 | < Vornucopia> | because they also need the VC stuff, right. |
19:35 | <@ToxicFrog> | For starters, clients need to know the UI event mapping -> server message mapping for each widget (unless we send raw UI events to the server, which squicks me out seriously) |
19:36 | < Vornucopia> | Oh squick, yeah, no. |
19:37 | <@ToxicFrog> | Right. So at minimum the client needs a way to, say, hand a click_lift(x,y) event to the object tree and let one or more objects catch it and send messages to the server as a result. |
19:37 | <@ToxicFrog> | ...although |
19:38 | <@ToxicFrog> | At present, the way that basically happens is each widget type has a set of (event handler, event name, [suggested UI event bindings]) tuples. |
19:39 | <@ToxicFrog> | We might be able to get away with just sending to the client: |
19:39 | <@ToxicFrog> | - that tupleset, which it uses to automatically construct UI event handlers |
19:40 | <@ToxicFrog> | - the set of synchronized fields (minimally id so we can find it again later; typically also x, y, w, h, parent, and children) |
19:40 | <@ToxicFrog> | - the rendering information (basically, the name of a renderer to use for that object, and some optional parameters) |
19:41 | <@ToxicFrog> | In which case the client doesn't need any code for object types at all, just for the core engine. |
19:41 | <@ToxicFrog> | Alternate architecture: the client's version contains rendering methods and UI bindings, the server's version contains event handlers. |
19:42 | <@ToxicFrog> | That one I'm honestly not quite so enamored with, because it means we basically now have two complete class heirarchies for the same things, one for the client-side stuff and one for server-side |
19:42 | <@ToxicFrog> | On the other hand, it means the client has a lot more flexibility with respect to UI design and behaviour, which would be useful when porting it to things |
19:43 | <@ToxicFrog> | Hrm. |
19:45 | < celticminstrel> | Oh, someone is programming in Go? |
19:45 | < Vornucopia> | Right. One of the things I'd look into, which actually pisses me off no end in MAME, is seeing if you can make many kinds of objects - dice, cards, tiles - be pulled into categories so you can build a unified controls prefs page for them. |
19:45 | < celticminstrel> | Wait, what does that have to do with MAME? |
19:45 | < Vornucopia> | celticminstrel: no, TF is writing a board game subclient in Lua; I used Go (the game) as an example. |
19:46 | < celticminstrel> | Oh. |
19:46 | < celticminstrel> | <_< |
19:46 | <@ToxicFrog> | Unified controls as in "leftmouse+shift is "pick up" for everything in this category"? |
19:46 | < Vornucopia> | That sort of thing, yes. |
19:47 | <@ToxicFrog> | That kind of happens already, since types inherit the bindings from their supertype |
19:47 | < Vornucopia> | MAME, or at least every one I've tried, makes me mad because it doesn't try to build a unified control scheme -- every game must have its bindings set separately. |
19:47 | <@ToxicFrog> | So, for example, felt.Token:pickup binds by default to [click_left, click_left_shift], and consequently so do felt.Deck, felt.Die, etc |
19:47 | < celticminstrel> | Ah. |
19:47 | <@ToxicFrog> | And changing that binding will change it for all of the subtypes. |
19:48 | < celticminstrel> | Isn't it kinda difficult for MAME to do that when each game has a different set of bindable events? |
19:48 | <@ToxicFrog> | celticminstrel: yeah, but the complaint here is that they could still be generally categorized, eg, "movement controls -> wasd" |
19:49 | < celticminstrel> | I suppose. |
19:49 | <@ToxicFrog> | And then if a game uses a joystick, it lists its axes under "movement controls" so it gets those bindings by default unless you override them for that specific game. |
19:51 | <@ToxicFrog> | Hrm. I think splitting it into client code/server code is the right answer; it's tempting to have everything in one, server-side definition, but this damages client flexibility. |
19:51 | < Vornucopia> | And there's lots and lots of games with very similar controls. Arcade machines didn't really get fancy with that stuff until the 2000s. |
19:52 | <@ToxicFrog> | And while this means anything you want to play needs to be installed on client as well as on server, that's already the case because the clients need the artwork. |
19:53 | < Vornucopia> | Which technically you could pull off server-side too, with a pre-game package. |
19:53 | <@ToxicFrog> | Now I just need to come up with a nice way of organizing all of this. There should be a clear delineation between client and server code, but ideally without needing to manage two seperate source trees. |
19:53 | <@ToxicFrog> | That has unfortunate implications as soon as you want to play Descent, which has about 500MB of artwork. |
19:54 | < Vornucopia> | Which would even be Known Safe except for goatsei--shit, seriously? |
19:54 | < Vornucopia> | What's in there? |
19:55 | <@ToxicFrog> | Well, there's some amount of duplication in there, and a few high-res images not used by felt, so let's be very optimistic and call it 200MB. |
19:56 | < Vornucopia> | I mean I could fit, uh, Carcassonne in 30 megabytes of jpg and still use tile images biggerthan your screen. |
19:56 | <@ToxicFrog> | Well, let's see...several different kinds of dice; large, beefy decks of items, spells, and DM abilities; monster stat cards; cardboard sheets for dungeon terrain; tiles for normal and elite monsters, chests, items, gold, players, traps, etc; the world map; |
19:57 | <@ToxicFrog> | x four expansion packs |
19:57 | < Vornucopia> | oh crap. |
19:57 | <@ToxicFrog> | Descent is probably FFG's biggest game even before you factor in the expansions. |
19:57 | <@ToxicFrog> | And now, hometime. |
19:58 | < Vornucopia> | have fun. |
20:01 | <@McMartin> | Android has fewer expansion packs, but is so huge I've never successfully even set up a game |
20:03 | < Vornucopia> | Setting up Catan has gotten hard for me lately because I rarely play anything but the base game and that's only half the shit in the box. |
20:08 | < Vornucopia> | Carcassonne has some damn easy setup. |
20:11 | < Vornucopia> | (hand out dudes by color. find keystone piece and put it on the table. dump all the other tiles into the box.) |
20:14 | < Vornucopia> | I think Felt will definitely be particularly useful for those games where there's a lot of random shit going on. Particularly as you can still play the game when you have no - or few - scripts. |
20:31 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
20:43 | < gnolam> | Ah, legacy artifacts. |
20:44 | < gnolam> | The various lines of the input files my program should output are referred to as "cards". |
20:44 | < gnolam> | Why? Because once upon a time, they represented actual physical punch cards... |
20:45 | | * McMartin suggests assigning them all rarities and casting costs. |
20:47 | < gnolam> | Heh |
20:47 | | Kindamoody|out is now known as Kindamoody |
20:58 | | Vornucopia [NSwebIRC@C888DE.7F9621.E9EB68.432608] has quit [[NS] Quit: Page closed] |
21:04 | <@ToxicFrog> | VornicusVashicus: "no or few scripts"? |
21:30 | < Alek> | gnolam: that's what COBOL does. every program line is supposed to be able to fit on a punch card. 80 characters iirc. |
21:30 | < Alek> | every output line, too. |
22:20 | < gnolam> | FORTRAN is the same (72 columns wide in FORTRAN 77 - with some additional hideous column restraints). |
22:21 | < gnolam> | But hey, this program was rewritten in shiny new FORTRAN 77 once, back in 1983... |
22:22 | < gnolam> | (Some poor sods then had to rewrite it in FORTRAN 90 in 2003) |
22:33 | <@McMartin> | (Isn't F90 Just Another ALGOL Derivative?) |
22:33 | <@McMartin> | (Or is that F95?) |
22:35 | < gnolam> | I don't think so? |
22:37 | <@McMartin> | Well, not genetically, but I mean, F90 is the one with things like recursive functions and pointer types |
22:39 | | AnnoDomini [annodomini@D553D1.41311B.346302.AC5555] has quit [[NS] Quit: leaving] |
23:13 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code |
23:23 | | Rhamphoryncus [rhamph@C06FE3.F5723C.BE3FEB.9D4666] has joined #code |
23:49 | | shade_of_cpux is now known as cpux |
--- Log closed Thu Mar 24 00:00:11 2011 |