« first day (2908 days earlier)      last day (2102 days later) » 

3:09 AM
@Tyyppi_77 yeah, great movie
 
 
8 hours later…
11:17 AM
I love trees so much
I have some optimisations in mind FOR WHEN this system becomes too simple to function (e.g. broadcast a message to literally everything in the game"
@Almo I kind of feel you-ish, I do love all sorts of coding but I don't think it's for me profesionally
which only makes me feel like reinforcing the idea that I REALLY REALLY LOVE PROGRAMMING
But it's clear that programming is so varied that you can fully hate it somewhere and love it somewhere else
To the point where someone saying they like programming is as informative as them saying "I like making things". A good start, but I still have no idea what that means
But yes, tree optimisations... I could make the add/remove operations a tiny bit more complex, so that every node has "listensTo" as a property, the kind of messages it cares about. When I add a child to a node (a unit to a squad, in a unit < squad < tile < battlefield hierarchy for example), its "listensTo" property is merged with the parents'. So, an empty tile listens to almost nothing. If I move a squad into it, that tile listens to what the squad listens to.
Then, if I spawn a new unit in there, the unit, squad and tile all listen to a new type of message
listeningTo something means that a node either processes a message or propagates it downwards
Or, the second idea, is making messages more "local". It's tough to say what nodes should propagate a message, but it could be easier to say which ones shouldn't. An AoE attack targeted at a tile that affects the surrounding tiles could have this nonpropagation condition: "a tree node that is a tile and further than 1 away from the target will not propagate the message"
Both of these being things you eventually feel like doing with a big tree: pruning it
 
12:10 PM
Im trying to create my game component based... my game communicates with a database... i thought about a table which stores different components ( as class names ) ... each item can have multiple components ... when this item is used it will iterate over those components to instantiate them by their name and call their certain function. Do many games do something like this ?
 
Well I'm trying it out right now, might make a quick game to test out the idea
Hold on, I'll be right back and I can talk more about it
But it IS my first attempt at anything
 
 
2 hours later…
1:53 PM
I'm a bit confused though... each node has a parent and a children[] field
When an object removes its child, should it also nullify its parent field? Also, when an object adds a child, should it set its parent field?
 
2:36 PM
Dear lord, listen hash pruning works awesome!
As in, any given node on the tree only listens to what its children listen to
For example, any unit, as well as graphics and achievement systems, listen for "damage", but only necromancers and achievements listen for "death" messages
entire rooms full of normal enemies never even receive the message
Which means I can make the trees deeper, even by arbitrary standards like actual rooms or half-rooms in a roguelike, to increase pruning
 
user92578
2:53 PM
Are these scene object trees? Why are they so deep?
 
user92578
As someone who's scene object lists are simply flat, I have a hard time understanding the need for incredibly deep parent/child hierarchies
 
3:24 PM
It can make composite objects easier to deal with. Like artist makes a gun, another makes a turret, another makes a battleship with 10 turrets 2 guns each.
 
user92578
3:39 PM
Yeah but that's what, three levels deep?
 
4:07 PM
o/
hey, is anyone here
 
nope I'm not here
@Tyyppi_77 I can imagine it getting deeper that was just an example, but you're right that excessive nesting doesn't really serve a useful purpose
 
hey almo
Is there a mod anywhere near
@Almo
 
4:56 PM
@Hakase o/
 
I'm not even in this room
 
how are you doing
 
I'm trying to figure out what the hell is going on in kara no kyoukai
by reading some reviews and watching these vids from a guy youtube.com/watch?v=Yy_dUYDVCok
 
5:55 PM
@Tyyppi_77 o/
 
6:05 PM
@TheMaskedRebel what's up
i'm not a mod
just room owner
 
@AlexMitan i'm going to second tyyppi's reaction in that scenes don't usually need very deep trees
like if you're going 5 or 6 levels deep you're doing something very special
and just because something belongs to a group, doesn't mean we organise it that way in the tree. in a TF2 map, we have a scene map with 24 players on it. there are no "teams" in this map. that there are 2 sides doesn't change how we organise our players, the 2 sides are a property of the players and not a structural property of how the world exists.
 
^
we have deep trees in our UI for some games at BHVR, but I'm not sure if that's for the better, really.
Unity's hard to work with in terms of large teams and UI
 
user92578
UI is separate though IMO
 
user92578
It's natural to develop relatively deep nested hierarchies in UI
 
[horrified flashbacks to deeply nested HTML before doppelgreener could start working in component-oriented architectures]
 
user92578
6:13 PM
yeah exactly
 
@Tyyppi_77 hmm interesting.
 
user92578
at least that what I believe, frames help with positioning etc
 
user92578
I'm not talking like 50 levels deep
 
user92578
like maybe 10-15
 
often it'll be because you have things like:
- an aligned segment of the screen (e.g. the top-right health bar or bottom-center hotbar)
↳ the row-based layout container for that part of the HUD
↳ a row in that container for our items
↳ decorative features around that row (which might be 2-3 layers all on its own), with a subcontainer for...
↳ the actual row of items
↳ one specific item
↳ the item's image
↳ a glow, a border, and a number indicating how many you have
because GUI code is nice to work with at all times and excellent and is not a problem ever 👌
2
 
user92578
6:21 PM
^
 
6:53 PM
Yeah, it's not so much nesting that I'm INTERESTED in, or the depth, as much as exploring this system
In this case, only some of the subpartitions are significant, and are labelled as such: "squad", "tile", "battlefield"
it's for "localising" events
instead of iterating through all of the entities and seeing which ones are on the same squad as you or galaxy as you or within proximity, you have a rough partitioning that helps with over-broadcasting
and also, yeah, component systems
I can just not add the graphical components to the ships and I can simulate a fight with zero changes to the code
A component reacts to an event, and adding extra components and events should be as much of a purely additive process as possible
 
you can just have a "squad" component that handles broadcasting between squad members in its own isolated tree that has no relation to any other communications tree
 
Yeah, but for example if you have a "death" event, it might be important for graphical components, your squad, the opposing squad, the nearest "warp gate whose cooldown is lowered on ally deaths", and the achievement systems
I'd rather pour all communications into everything, and then try to prune rather than add and modify systems one by one
 
sure, but that does not need a deep tree
 
No, it doesn't really have one either, but it does have a tree where almost everything is
 
it needs
world > level > objects in the level
 
6:59 PM
I'm running some experiments of course, and this one seems to feel a bit like "quadtrees for events"
 
noice
 
is that not a scene graph?
sorry, haven't been following the conversation
 
I think so? I haven't read up on that nearly enough
 
"google images scene graph" :
 
right, then yes
I especially like the "listenHash" experiment, where I had a roguelikey hierarchy simulated in a few lines of things whacking each other, where it's game > tiles > units in tiles > minions of units, and there's a melee hero and goblin fighting each other
while an archer and necromancer sit in two other tiles
 
7:01 PM
I think the main issue with scene graphs is they are somewhat but not strictly correlated with distance
 
a unit listens to a certain set of messages, like "damage", "death" and "cleanup", the message the world gets to erase "dead" objects
 
i.e. in the planets example Moon B and Moon C might be close together at some point in the orbit but the graph doesn't show it
if you're using "tiles" as the containers it's more of a spatial hash structure
 
right, fair enough, but the tiles are still just cells in the tree, not simulated for distance or something
when you add a unit to a tree, it updates the path to the root to listen to that unit's events
so unless you have necromancers that can revive things, nothing in the world cares for "death" events
 
oh i see, so you can filter out event types at a high level
 
when you add a necromancer to tileWhatever, that's a single pipeline of messages towards the necromancer
if you add another one there, barely anything changes. If you add another one in the hero's tile, now world>heroTile>necromancer2 is also a pipeline
Plus, I can even have debugging components that listen to specific messages and log them out-of-the-box
I really feel like I'm onto something here, even if it's skirting around existing implementations like observers and event queues
 
7:32 PM
if it's useful to work with and performs well then yes. :)
 
 
2 hours later…
9:11 PM
TIL Unity's dark theme is only available in the pro version......... well played, Unity. ಠ_ಠ
Arguably dark theme is the most important feature
 
user92578
9:24 PM
Yup, this is one of the reasons I do not use Unity
 
user92578
Not even kidding
 
I was considering Unity or Godot
 
9:50 PM
Unity is good.
@doppelgreener what are you trying to make?
 
10:27 PM
You dark theme snobs are weird
I could go on a serious rant if you guys were also people who bitch at me about not liking Windows. :)
@doppelgreener seriously though, which platforms you interested in?
last I checked Godot's iOS build pipeline was a mess, but that was a couple years ago now, I think
might be cleaned up by now, or even irrelevant if you're targeting something else.
 
@Almo I don't like the dark theme in Unity previews and stuff. Makes my eyes hurt :P
 

« first day (2908 days earlier)      last day (2102 days later) »