--- Log opened Wed Nov 08 00:00:04 2017 |
00:00 | | Kindamoody|autojoin is now known as Kindamoody[zZz] |
00:19 | | Jessikat [Jessikat@Nightstar-bt5k4h.81.in-addr.arpa] has quit [Connection closed] |
00:46 | | Derakon[AFK] is now known as Derakon |
00:51 | | celticminstrel [celticminst@Nightstar-g63802.dsl.bell.ca] has joined #code |
00:51 | | mode/#code [+o celticminstrel] by ChanServ |
01:00 | | celticminstrel [celticminst@Nightstar-g63802.dsl.bell.ca] has quit [Ping timeout: 121 seconds] |
01:02 | | celticminstrel [celticminst@Nightstar-5npa6n.dsl.bell.ca] has joined #code |
01:02 | | mode/#code [+o celticminstrel] by ChanServ |
01:23 | | mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code |
01:23 | | mode/#code [+o mac] by ChanServ |
01:26 | | macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
01:47 | | macdjord|slep [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code |
01:48 | | mode/#code [+o macdjord|slep] by ChanServ |
01:50 | | mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
03:38 | | celmin [celticminst@Nightstar-1rm87u.dsl.bell.ca] has joined #code |
03:38 | | mode/#code [+o celmin] by ChanServ |
03:38 | | celticminstrel [celticminst@Nightstar-5npa6n.dsl.bell.ca] has quit [NickServ (RECOVER command used by celmin)] |
03:38 | | celmin is now known as celticminstrel |
03:42 | | celticminstrel [celticminst@Nightstar-1rm87u.dsl.bell.ca] has quit [Ping timeout: 121 seconds] |
03:48 | | macdjord|slep is now known as macdjord |
05:17 | | Derakon is now known as Derakon[AFK] |
05:22 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Connection closed] |
05:37 | | Kindamoody[zZz] [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [Ping timeout: 121 seconds] |
05:38 | | Kindamoody|autojoin [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code |
05:38 | | mode/#code [+o Kindamoody|autojoin] by ChanServ |
06:00 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
06:01 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
06:11 | | Vornlicious [Vorn@Nightstar-d8fil4.sub-70-197-64.myvzw.com] has joined #code |
06:13 | | Vorntastic [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
06:28 | | Vornlicious [Vorn@Nightstar-d8fil4.sub-70-197-64.myvzw.com] has quit [The TLS connection was non-properly terminated.] |
06:41 | | Vorntastic [Vorn@Nightstar-d8fil4.sub-70-197-64.myvzw.com] has joined #code |
06:48 | | Alek [Alek@Nightstar-7or629.il.comcast.net] has quit [Ping timeout: 121 seconds] |
06:51 | | Alek [Alek@Nightstar-7or629.il.comcast.net] has joined #code |
06:51 | | mode/#code [+o Alek] by ChanServ |
09:15 | | Kindamoody|autojoin [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [Ping timeout: 121 seconds] |
09:28 | | Kindamoody|autojoin [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code |
09:29 | | mode/#code [+o Kindamoody|autojoin] by ChanServ |
09:33 | | Kindamoody|autojoin [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [Ping timeout: 121 seconds] |
09:38 | | Kindamoody|autojoin [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code |
09:38 | | mode/#code [+o Kindamoody|autojoin] by ChanServ |
09:45 | | Kindamoody|autojoin [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [Ping timeout: 121 seconds] |
10:28 | | Kindamoody|autojoin [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code |
10:28 | | mode/#code [+o Kindamoody|autojoin] by ChanServ |
10:33 | | macdjord is now known as macdjord|slep |
10:40 | | Jessikat [Jessikat@Nightstar-3gflgu.dab.02.net] has joined #code |
10:40 | | Kindamoody|autojoin [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [Ping timeout: 121 seconds] |
10:41 | | Kindamoody|autojoin [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code |
10:41 | | mode/#code [+o Kindamoody|autojoin] by ChanServ |
11:11 | | Cwe_chnz [ircex@Nightstar-r40v7s.three.co.id] has joined #code |
11:14 | | Cwe_chnz [ircex@Nightstar-r40v7s.three.co.id] has quit [Connection closed] |
11:47 | | Kindamoody|autojoin is now known as Kindamoody |
12:01 | <&[R]> | "If you think C++ is not overly complicated, just what is a protected abstract virtual base pure virtual private destructor and when was the last time you needed one?" — Tom Cargill, 1990 |
12:11 | < Jessikat> | Quite |
12:12 | < Jessikat> | And the answer is never, stop using inheritance. |
12:13 | <&[R]> | But C++ mixins require inheritance. |
12:14 | < Jessikat> | Stop it |
12:14 | < Vorntastic> | I find myself pondering once again programming languages writable on mobile |
12:15 | < Jessikat> | C++ is a stupid language that traps clever people and steals their time and sanity |
12:15 | < Jessikat> | And yet is still probably the most sensible choice for work requiring tight performance |
12:15 | < Jessikat> | Sigh |
13:48 | <&ToxicFrog> | Vorntastic: as in, stuff you can reasonably program in using only a cellphone? |
13:49 | < Vorntastic> | Yes |
13:51 | < Vorntastic> | Ideally such that I can then edit in a standard text editor when I get home |
13:54 | <&ToxicFrog> | Setting aside all the issues of keyboard and getting files to and from the phone, JS is the obvious choice because you already have a known-good JS interpreter installed (the browser) |
14:05 | <@TheWatcher> | Yeah, but debugging JS on a phone? |
14:05 | <@TheWatcher> | Is it even possible to get an inspector on one? |
14:05 | <@TheWatcher> | (If so, I'd really like to know how!) |
14:07 | <&ToxicFrog> | Chrome at least only supports remote debugging |
14:10 | <@abudhabi> | [R]: I suspect those qualifiers aren't all legal in the same declaration. |
14:31 | | Jessikat` [Jessikat@Nightstar-183a7n.dab.02.net] has joined #code |
14:34 | | Jessikat [Jessikat@Nightstar-3gflgu.dab.02.net] has quit [Ping timeout: 121 seconds] |
14:45 | | Vorntastic [Vorn@Nightstar-d8fil4.sub-70-197-64.myvzw.com] has quit [Connection closed] |
14:46 | | Vorntastic [Vorn@Nightstar-d8fil4.sub-70-197-64.myvzw.com] has joined #code |
15:01 | < Jessikat`> | Protected abstract virtual base refers to the superclass |
15:01 | < Jessikat`> | Pure virtual private destructor is the method |
15:02 | < Jessikat`> | It means that you cannot instantiate the abstract base class and by extension its subclasses |
15:03 | < Jessikat`> | If you are building these monstrosities then you likely aren't achieving much anyway |
15:03 | | Jessikat` is now known as Jessikat |
15:04 | < Jessikat> | Hm, though if you are inheriting the protected destructor in theory this just means you can't destroy *this* instance |
15:04 | < Jessikat> | tl;dr this just illustrates my earlier point |
15:05 | <@abudhabi> | Is there any way to make Chrome on my tablet pretend it's not on a mobile device? |
15:10 | | Degi [Degi@Nightstar-v1038d.dyn.telefonica.de] has joined #code |
15:11 | | Vorntastic [Vorn@Nightstar-d8fil4.sub-70-197-64.myvzw.com] has quit [[NS] Quit: Bye] |
15:11 | | Vorntastic [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
15:20 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
15:22 | <&ToxicFrog> | abudhabi: threedots menu, "request desktop site" |
15:24 | <@abudhabi> | Thanks! |
15:26 | <@abudhabi> | How do I install the WidevineCdm component on my tablet's Chrome? |
15:30 | <&ToxicFrog> | No idea. I recommend pirating drm-free versions of whatever content you are trying to consume. |
16:19 | <@abudhabi> | Might as well, but it's highly annoying that I can't watch netflix in my browser, and the app requires my soul AND my firstborn to run. |
17:23 | | Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has joined #code |
19:25 | | VirusJTG [VirusJTG@Nightstar-6i5vf7.sta.comporium.net] has quit [Ping timeout: 121 seconds] |
19:37 | | Jessikat` [Jessikat@Nightstar-bt5k4h.81.in-addr.arpa] has joined #code |
19:55 | | Jessikat [Jessikat@Nightstar-183a7n.dab.02.net] has quit [[NS] Quit: Bye] |
19:55 | | Jessikat [Jessikat@Nightstar-183a7n.dab.02.net] has joined #code |
19:55 | | Jessikat [Jessikat@Nightstar-183a7n.dab.02.net] has quit [[NS] Quit: Bye] |
20:20 | <&ToxicFrog> | Ok so. |
20:21 | <&ToxicFrog> | ttymor.lua implemented the map as a grid of lists of entities. Terrain was included in the entity lists. It was possible for one entity to exist in multiple cells, so e.g. every floor tile in the game was the same entity, since floors are immutable. |
20:22 | <&ToxicFrog> | ttymor.clj is still up in the air. |
20:22 | <&ToxicFrog> | From a rendering perspective, it doesn't matter; the rendering API is basically (setChar x y char) so no matter what I do it's going to involve either updating the framebuffer whenever a cell changes, or walking the entire grid and building the framebuffer every time we draw. |
20:23 | <&ToxicFrog> | For pathfinding and LOS, though, the library I'm using is Opinionated. |
20:24 | <&ToxicFrog> | LOS in particular wants a float[][] of opacity values, and returns a float[][] of light levels. |
20:24 | <&ToxicFrog> | Pathfinding wants either a float[][] of path costs, or a char[][] of actual terrain accompanied by a map[char => float] and it does the conversion for you. |
20:28 | <&ToxicFrog> | There's also a utility function to convert a char[][] into an opacity map, but it's not configurable -- it treats # and + as opaque and everything else as transparent. |
20:31 | <&ToxicFrog> | So it's kind of pushing me towards having a char[][] for the terrain map, and then I can pass that to calculateResistances and suchlike |
20:32 | <&McMartin> | I see both Lua and Clojure mentioned here; are you using some automatic method for navigating the JNI layer on the Clojure side? |
20:36 | <&ToxicFrog> | They are disjoint; I'm rewriting a lua prototype in clojure, after realizing that clojure's library game for stuff like shadowcasting FOV and Dijkstra mapping is much stronger than Lua's. |
20:37 | <&McMartin> | Aha, OK. |
20:37 | <&McMartin> | So "the JIT, straight up" or "having someone else have written the bindings already". |
20:37 | <&McMartin> | Both fine techniques! |
20:37 | <&ToxicFrog> | What? |
20:37 | <&ToxicFrog> | Bindings to what? |
20:37 | <&McMartin> | "For pathfinding and LOS, though, the library I'm using is Opinionated" |
20:37 | <&ToxicFrog> | The only cross-laguage calls happening here are clojure<->java |
20:37 | <&ToxicFrog> | The library is written in java |
20:38 | <&ToxicFrog> | Access to that library at all is one of the reasons for moving to clojure |
20:38 | <&McMartin> | That's the "the JIT, straight up" |
20:38 | <&McMartin> | My initial reading did not include the "disjoint" part, which meant that the core library was probably exposing a C API, because Lua |
20:39 | <&ToxicFrog> | Aah |
20:40 | <&ToxicFrog> | The libraries in play here are squidlib-util (pathfinding, FOV/LOS, a bunch of other stuff I'm not using like dungeon generation) and lanterna (curses-alike, with a GUI library on top and the option of running its own built in terminal emulator rather than using /dev/tty) |
20:41 | | * McMartin nods |
20:42 | <&ToxicFrog> | Probably the appraoach that most closely matches what I was doing in lua is to have the map be a grid of lists of entities + two double[][]s for LOS and path information, and when a map cell is updated, update the arrays too |
20:42 | <&ToxicFrog> | I'm not sure that's actually the best option |
20:42 | <&ToxicFrog> | OTOH if I sort out the map API properly I can shuffle it around later with minimal disruption |
20:43 | | * McMartin nods |
20:43 | <&ToxicFrog> | (the lua version -- to the extent it did pathfinding/los at all, which it didn't really -- calculated all of this on the fly by sending <path> and <sight> messages to everything in the map cell at issue) |
20:44 | <&ToxicFrog> | (so I guess the other thing I could do is generate the maps on the fly as needed, and discard them when done, which on the one hand means I don't have this big chunk of mutability lying around, but on the other hand means I'm constantly allocating and destroying it) |
20:46 | <&McMartin> | (ISTR Clojure's data structure library being Very Good At Splitting That Difference) |
20:46 | <&ToxicFrog> | (clarify?) |
20:47 | <&McMartin> | ("Given this data structure, give me a modified version of it, both immutable" with maximized sharing between the two.) |
20:47 | <&ToxicFrog> | Given all this I don't think keeping a char[][] around for the terrain buys me much; it either duplicates stuff already in the entity grid, or requires special casing, and the squidlib helper functions don't cope well with stuff like "this bit of floor can be seen through and shot through but not pathed through". |
20:48 | <&ToxicFrog> | (Oh, yes, but when I say double[][] I literally mean that data type, a 2d Java array of doubles) |
20:48 | <&McMartin> | (... right then, yes, that is an issue) |
20:48 | <&ToxicFrog> | (because that is what the API for this library expects, because it is written entirely in Java) |
20:50 | <&ToxicFrog> | So I mean, on the one hand this is a turn-based game and the biggest map I expect to see is 100x100, and generating the map is O(n) in the total number of entities on the map, which isn't too bad |
20:51 | <&ToxicFrog> | OTOH it potentially needs to be used for every active enemy (the pathfinding map, anyways) |
20:51 | <&McMartin> | This to me suggests "start with some encapsulated mutability at first" |
20:51 | <&ToxicFrog> | Yeah |
20:53 | <&ToxicFrog> | Maybe a map has the grid, double[][]s for visibility and each kind of pathfinding, and an API for handling the latter with tongs |
20:53 | <&ToxicFrog> | Basically anything that "modifies" the map also updates the vismap and pathmap. |
20:55 | <&McMartin> | The tongs make hiding the mutability a bit easier too. |
20:55 | <&McMartin> | You can even secretly become COW later if you need functional-like behavior |
20:56 | <&ToxicFrog> | I probably won't but it might be neat to be able to rewind the game |
20:57 | <&ToxicFrog> | So given this, I think my next step is to actually get started on the map API and update my prototype in light of that |
20:57 | <&ToxicFrog> | And once I have that I can clean up the MapViewer a bit, then poke at the entity/component/message API and see how much of it is useful to bring over from the lua version. |
20:58 | | * McMartin nods |
21:03 | | Kindamoody [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [Connection closed] |
21:06 | | Kindamoody [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code |
21:06 | | mode/#code [+o Kindamoody] by ChanServ |
21:22 | | macdjord|slep is now known as macdjord |
21:51 | | gnolam [quassel@Nightstar-e9kifc.cust.bredband2.com] has joined #code |
21:51 | | mode/#code [+o gnolam] by ChanServ |
22:02 | | Degi [Degi@Nightstar-v1038d.dyn.telefonica.de] has quit [[NS] Quit: Leaving] |
22:59 | | Derakon[AFK] [Derakon@Nightstar-fr5qel.ca.comcast.net] has quit [Ping timeout: 121 seconds] |
23:03 | | Derakon [Derakon@Nightstar-fr5qel.ca.comcast.net] has joined #code |
23:04 | | mode/#code [+ao Derakon Derakon] by ChanServ |
23:17 | | Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has quit [Connection closed] |
23:36 | | gnolam [quassel@Nightstar-e9kifc.cust.bredband2.com] has quit [[NS] Quit: Z?] |
--- Log closed Thu Nov 09 00:00:05 2017 |