All times shown according to UTC.

Time Nick Message
01:39 whitenoise joined #evennia
01:40 whitenoise grabbed a pair of Skullcandy bass boost headphones in the airport, using them right now on this flight to listen to eminem
01:57 whitenoise joined #evennia
02:14 whitenoise the channel is quiet
02:15 where's all the exploitable, nonsensical chatter
02:19 while on my flight i've been reading about changes to the GIL in Python 3 vs Python 2
02:19 and a couple of other Python 3 improvements
02:22 simultaneously being impressed that i'm currently traveling at 652mph
02:22 from 40,000 feet in the air
02:41 Volund rawr
05:27 evdemo [Public] BlauFeuer: Traveling twice the speed of sound, it's easy to get burned.
06:23 evenniacode [forum] Ll Kk posted 'Re: lag and performance' https://groups.google.com/d/ms[…]34Gw/q6Mvjrq8BwAJ
07:44 ruchagrajo joined #evennia
07:56 Viktyr joined #evennia
08:39 Cypher_Wight07 joined #evennia
08:40 Cypher_Wight07 Ugh, long day! Had a two hour hard down that started right at the end of my shift. :-\
09:20 acharles joined #evennia
10:41 ruchagrajo So inv doesn't look at items in your inventory, it seems, at least it doesn't call return_appearance(). Does it trigger any events at all?
10:41 (not at_desc(), it seems)
10:51 If not, is it impossible to have an object that looks different every time you look at it?
10:51 (including via taking inventory)
12:21 Days_ joined #evennia
12:23 Griatch The inventory obviously doesn't perform a 'look' on each object.
14:07 Brayne joined #evennia
16:47 ruchagrajo joined #evennia
16:48 ruchagrajo Sure, but is there an event that's triggered on inventory? If not, I guess I should use extra_info() so the bit that changes is only displayed on a look, and not in inventory.
16:49 Still hacking on lockfuncs, btw. Have been out about half the day and am going out again now, though.
17:32 Volund GRIATCH!
17:32 * Volund tackles
17:55 Griatch ruchograjo (if you read logs), you can see exactly what the inventory command does by looking at it in evennia/commands/default/general.py.
17:55 Hi Volund
17:56 Volund I HAD AN APOSTROPHE
17:56 Days_ An epiphany?
17:56 Griatch It's still called a epiphany yes. Volund prefers the wrong word.
17:56 Volund https://www.youtube.com/watch?v=qsB2KGaX6bg
17:57 Days_ An apostrophic epiphany, then. ;)
17:57 Volund okay so
17:57 Rev_Rwn catastrophic epiphany?
17:57 Griatch An apostropphic epiphany would be a 'bagatelle' ;)
17:58 Volund So a while ago I was struggling to figure out how to store all of my Storyteller system character sheet data. It was tough because my tool was Django and I kept trying to think of how to make Models that would be able to store BASICALLY ANYTHING Storyteller-related. And after 15 iterations I finally came up with something that WORKED, but was nearly incomprehensible.
17:59 WELL
17:59 Rev_Rwn storyteller system as in world of darkness, white wolf?
17:59 Volund yeah
18:00 World of Darkness, Exalted, Scion, etc
18:00 During that big endeavor, I made it work by creating a high-level 'storyteller handler' lazy property system that would be slapped onto a Character, and was responsible for referencing the game rules and get-or-creating database rows/save data on loading the character.
18:00 Rev_Rwn love world of darkness
18:01 Volund Well the other day, a friend pointed me at NoSQL - ArangoDB and MongoDB - and how they basically use JSON. How the python drivers for these database can basically just load up a Document as a native dictionary just like json.loads(). and then it hit me.
18:02 I can store -everything- in an Evennia attribute.
18:02 Griatch Basically, yes.
18:02 Volund I can repurpose the save-or-create/export/etc parts of the system and have them just generate a giant JSON export of the character data using things like stat keys and IDs and values.
18:03 or just store a dictionary
18:03 But yeah
18:03 Griatch I would suggest going via JSON makes little sense when dicts are saved natively.
18:04 Volund yeah. See, and a long, LONG time ago, there was that endeavor of mine to use Attributes, but I realize now why that flopped.
18:04 I wasn't operating at a high enough level of abstraction for the save/load operations and game data parsing.
18:04 if that makes any sense.
18:04 Days_ Smile and wave boys, smile and wave...
18:04 Griatch Volund: Could you elaborate on what is the epiphany? That Attributes can store dicts/json is not a new thing after all ...?
18:05 Volund Well
18:05 Griatch Using Attributes to have a key store is what a dict does from the onset, no?
18:06 A NoSQL database is, in one of its incarnation nothing but a big dict.
18:07 (there are a lot of different implementations of nosql after all)
18:07 But I can see there being a change of perspective if you choose to look at the attribute as just a holder of a key store. Like the traits of Ainneve.
18:08 Volund My first attempts to use Attributes, I was trying to store the data directly as a thing like... character.db.stats = {'Melee': 5, 'Brawl': 3}
18:08 And that failed because I was taking it too damned straightforwardly.
18:08 What I -should- have been thinking about is
18:09 something more like this
18:09 https://hastebin.com/efeculihif.json
18:09 Griatch Hm, didn't you consider this at some point though, but not liking the lack of searchability?
18:10 Volund exactly.
18:10 But
18:10 after all of the headaches I've been through trying to get SQl to do what I want, I think, well, screw searching elegantly.
18:11 either way it's lessons learned.
18:11 it's also just
18:12 Griatch I guess you could always extract parts of your structure on demand into parts which are easier to search.
18:12 Volund so damned simple. I can even make a thousand snapshots of a character's state without a care in the world
18:13 It was because I was trying to squeeze data that was inherently unrelational into a relational database.
18:13 Griatch Well, that's an interesting realization then :)
18:13 Volund and if I was storing in MongoDB, I -would- be able to search via queries. :P
18:14 * Volund silly
18:14 Volund but yeah this solves, just... so damned much
18:14 it even solves the problem of some data being a bit obtuse.
18:14 Like
18:15 some stats can be marked Favored, some cannot be. for those that can't be, why bother even having a field that describes its state?
18:15 in SQL, you would basically -have- to have that data there, even if it was just NULL
18:16 but with this method... nope, no need.
18:16 Griatch This is the reason we have Attributes, yes.
18:16 Volund I'm kind of *facepalm* that it took me this long to realize the PROPER WAY TO USE THEM, though.
18:17 Griatch You do have a rather peculiar set of data to describe, admittedly
18:17 Volund I was just too damned used to thinking in terms of relational databases.
18:17 and the real beauty of this is
18:18 now I can just 'write code, export JSON' more or less. I don't need to care about anything else.
18:19 and
18:19 I can also do things like rapidly spit out a character save file to a webclient for display purposes.
18:19 it's just JSON guys. it's already JSON. :D
18:19 Griatch So you would use the Attribute as the persistence-store and just load it into an in-memory representation when they are used?
18:19 Volund yeah
18:20 and then when changes are made, it generates a new dictionary and saves it all at once.
18:20 Griatch Sure, why not :)
18:20 Volund (which gets around the Attribute I/O problem)
18:20 Griatch I/O problem?
18:21 Volund reading and writing constantly to the SaverDict would mean you're hammering the Sqlite driver
18:21 that's silly.
18:21 Griatch In that sense, yes. If you are making a lot of changes, it's better to save in one batch.
18:23 Volund so yeah now that I have come to this realization, I think now have a much better understanding of when is a good time to use SQL... and when is a better time to use Attributes. And I think I'll be using Attributes a lot more now.

← Previous day | Index | Server Index | Channel Index | Today | Atom Feed | Search | Google Search | Plain-Text | plain, newest first

Evennia