« first day (3660 days earlier)      last day (1350 days later) » 

3:08 AM
hello
 
3:31 AM
eve'nin
 
How are ya, Pikalek?
 
Within expected params. Going to take another pass at a mathjax conversion & then call it a night.
And yourself?
 
I am doing fine. Trying to do a little optimizations in my game so I can test in-editor with reasonable FPS
 
3:51 AM
found part of the problem, water too reflective
 
G'night.
 
Good night
 
 
9 hours later…
12:35 PM
Another day, another problem... i have a "SavingSystem" and a "UpdatingSystem", both execute database queries after another... but those take time and i dont want them to block the mainthread... update should run after save ( discovery from yesterday ) ^^ I actually just wanna run the operations (database save, update) asyn, not the whole system... is this a good useage for the job system ? Or how would you do this ?
 
12:51 PM
You very likely don't need to save every frame. When you do, you can either tolerate the cost of waiting for the save to complete, schedule it alongside jobs that don't affect the save state (like eg. display-only animations), or snapshot the game state to a separate read-only buffer the save system can serialize while the read-write game state is being updated in parallel.
 
1:02 PM
@DMGregory Alright thanks... i guess the job approach is the easiest to implement for now... i already implemented a job system using a threadpool... jobs can also be chained, but i have no clue yet how to do this along two different systems... save system would create a job as a entity, that gets inserted into the job system promptly, so the update system has no chance to chain its job
 
Unity for instance does this with a scheduling concept. Jobs can be organized into a dependency graph to ensure jobs that depend on other jobs run after them, and that no two jobs that use the same data (if not read-only) are allowed to run simultaneously.
 
is that a newer feature?
last I was using unity a lot was probably version 2017
but i still wouldn't have known, cognizer didn't need anything really sophisticated
 
I might be mangling the details of the DOTS/ECS system they use, as I haven't done more with it than peruse tutorials so far.
 
DOTS = Damage Over Time System?
:D
 
Data-Oriented Technology Stack
Worth a look if you're curious - they're doings some very cool things with it, down to defining their own C# language subset they can use for high-performance parallel work that compiles to native machine code.
 
2:07 PM
ah ok
sounds interesting
 
implemented a job system, after my questions in here... i know the unity job system, so i tried to copy their chaining mechanism ^^ the only problem i see is the chaining of jobs over multiple system... for example : Save System spawns a job, Update System should chain its job to run after the save systems job
 
In Unity, this is done by passing the job handle of the job to wait for into the schedule method of the job that should wait: docs.unity3d.com/ScriptReference/…
 
2:22 PM
@DMGregory Im not sure if we mean the same ^^ i implemented scheduling, but i havent found a nice way yet to schedule operations of "UpdateSystem" properly, because "UpdateSystem" does not know what Jobs "SavingSystem" spawned
 
Then your Update system should ask the Save system for information it needs and doesn't have.
eg... myJob.ScheduleAfter(SaveSystem.GetJobCompletedHandle())
Remember, this is your code. Any barrier that exists is of your own making, and you can unmake it when you need to.
 
@DMGregory Thanks a lot ! Than i need to rework my job implementation... currently its working like this : "SaveSystem" creates Job -> JobSystem takes care of this, as soon as it receives a callback that a "Job" was created... this way theres no easy way for other systems to get the dependencys
 
You could also annotate your jobs with some metadata. Save system creates a job with the "Save System Finished" tag. Update system creates a job that says "schedule me after all jobs with the "Save System Finished" tag". The tag can be re-used, even though the jobs are freshly created and recycled/destroyed constantly.
 
3:14 PM
Is that the norm to checkout a library from a git repository and have issues with inconsistent line endings on windows?
Both Visual Studio and SmartSVN complain (when we store the library locally).
 
@DMGregory Thats a really good idea ^^ so i think im gonna try to realize the following : SingleJobSystem ( For Jobs without depen. ), DependencyJobSystem ( Jobs + Dependencys ), MetaJobSystem ( Running before DependencyJobSystem, constructing dependencys at the start of a frame from the tags you mentioned )... lets see if that works
I hope its fine that jobs need to wait till the next start of the frame for being executed...
 
You shouldn't have to wait a full frame. If I schedule a job that depends on a tag that hasn't been issued yet, then it can simply go into a queue to schedule as soon as the job with that tag has been scheduled.
 
@DMGregory Hmm... thats right, but how to handle dependencys ? I thought i would need to wait till the end/start of the frame till the dependency is build -> Save System spawns Job -> JobSystem executes the job promptly -> Update System can not depend on Job from Save anymore, because its getting processed after the save system -> Broken dependency
 
If it just depends on a tag, then whether the job exists at this instant or not doesn't matter. The tag can just store a flag or counter.
 
Thats something i have not understood yet... may i ask how do you mean this ?
 
3:29 PM
Your tag could be an object with an enum state - NotYetScheduled, Scheduled, Complete. Each frame you reset your tags to NotYetScheduled. When you schedule a job that depends on this tag, you check its state...
- If it's NotYetScheduled, put your dependent job in a queue to schedule later.
- If it's Scheduled, your dependent job is ready to schedule with a reference to the already-scheduled job to wait for (which can be looked up from your tag)
- If it's Complete, there's nothing to wait for, and your dependent job can run immediately.
Similarly, when you schedule the prerequisite job, you set the tag from NotYetScheduled to Scheduled. If you have a dependent job in queue for this tag, now you're ready to pop it from the queue and schedule it after this one. When the prerequisite job completes, you advance the Tag to Complete and unblock the scheduled dependent job.
 
3:43 PM
@DMGregory Ah i see ^^ thats clever :D thanks for describing it this detailed !
 
4:21 PM
hi
 
Hello
 
How are ya?
 
4:42 PM
Getting by. Just wrestling a bit with some unresponsive tools this morning. :) You?
 
I am doing alright, did some bug hunting, now working on re-adding ladders to my game
dunno why i took them out in the first place, opens up for some neater level design
 
Dishonoured had a no-ladders rule in its level design, apparently.
 
Really? Probably because of the AI
i remember reading somewhere Skyrim was gonna have actual ladders, but they couldn't get the AI to use them properly
 
AI ladder use is a can of worms with some surprising pitfalls.
 
Really? Wow, i thought you could do it kinda like the drop down functionality like Unity does (where you can define points for the AI to jump down from and land on a different NavMesh)
 
4:59 PM
That gets the pathfinding part done. The next challenge is following that path, and reacting to everything that can happen while you're on your way.
If an AI dies while on a ladder, for example, you need to get them out of the way so they don't block the ladder entrance/exit for other characters (imagine if that ladder was the only way out of this pit, and now you've trapped the player forever)
 
True, true, it does seems to be a lot of extra work
 
If one character is climbing a ladder, and another one wants to go down the ladder, they need to be aware of the climber and wait for them to avoid a collision/deadlock mid-ladder. And they need something to do while they wait so they don't look frozen.
If a character needs to talk or shoot or carry things or flinch while on a ladder, that could multiply their animation sets...
 
it's probably why ladders are rarely seen in 3d, ig
atleast, ladders with good physics
only game that comes to mind that fulfills all of those is Dark Souls
anyways, ima gonna go eat, brb
 
Enjoy. :) I'm going to... stare at this loading spinner some more...
 
o o f
 
5:42 PM
@DMGregory So i think it may be working now... theres a Job-Component ( what we execute ), a JobDependency-Component ( Storing the dependency for each job and a list of other jobs depending on this one )... i implemented a "DependencyJobSystem" which does exactly what you described above... now to the "annotation" to schedule jobs from system b after system a... the current attempt looks like this : job contains meta informations ( name, who created that job ) and
if we wanna execute jobs of system b after a, we attach a "JobAfterDependency"-Component with a reference to system a... a component listener gets notificated about the created "JobAfterDependency" component and modifies the job dependencies... im not that sure how clean this is :P but it should work... kinda hard to make modifications to the jobs when we process them once they occur ^^
 
6:28 PM
Well that was fun. Been playing Hot Potato since yesterday trying to find the owner of a particular asset I've been asked to add a loot drop to. Each person I ask directs me to someone else, who directs me to someone else...
...a dozen queries down the line and folks are getting increasingly confused by the question - turns out I've been referred to people working on Assassin's Creed, when the asset I need help with is in Far Cry. XD
 
 
2 hours later…
8:27 PM
I've been grinding on converting more of this post. When I try to keep the full variables names for friction & stiffness a couple of the equations have text heavy denominators that render poorly by default. Cranking down the font size makes them equally unreadable (in my opinion).
I thought about dropping in symbols instead, like_k_ for stiffness, but I'm concerned that using f for friction might be easily misread (since it's somewhat of an overloaded variable in math & physics).
On the other hand, converting stiffness but not friction to a symbol seemed, sort of weird & inconsistent.
For what's it's worth, I find some of the original formulas unreadable due to the tiny fonts used.
Sorry, should have clarified earlier - converting more of the post to use MathJax
Anyway, I now turn to the wisdom of the masses &/or mods for suggestions.
 
9:15 PM
Hmm... Maybe use an uppercase F? Or "Frict"?
 

« first day (3660 days earlier)      last day (1350 days later) »