#gameplay-ai
1 messages ยท Page 174 of 1
just put a lot of american flags on it so nobody will dare to say it's bad lol
This is for the UK unfortunately.. they'll get a bit sniffy if I add the US flag ๐
Add Eagles^H^H^H^H^H^H Puffins and Boids and a sloganizer = profit???
Yeah, just a picture of boris in his stupid goddam harness waving a pathetic goddam flag ๐
Looks like I'll have to figure out where to get some AIS data for a few weeks of ship movements
too bad the russians turned off their superyacht tracking systems
Thats exactly what I wanted to show ๐
Good old americans, turns out I can get AIS data for murica at least!
Hi everyone, was wondering if anyone has done AI for voice commands in game? Meaning I wanted to do simple voice commands in game like โAlexa, what time is it?โ And the game would respond with the local timeโฆ just simple commands for now
Yeah, I've done it
we all thought the voice assistants would become skynet, but it'll be Zoombalexa
ill send you a dm
voice commands for generative content in VR is a thing ๐
I'm trying to convince my colleagues about the future of generated content and how voice prompt guided generators (and similar) will be the future.
given large language models like DallE2 are so powerful at images.. its not hard to imagine the same for 3D content and then extrapolate that to behaviour and video etc.
"Armored Knight from the Orient"
I am getting better at shiny metal surfaces. With this prompt, CLIPMatrix created the 3D knight with beautiful surface engravings.
Would be curious to hear the opinion of some Blender pro - how quickly can a human artist do this?
#AIart #3dart
139
generating 3D meshes from a text prompt
and of course, speech-to-text -> 3D mesh
About EQS. With EQS I find a cover Point, but sometimes the path to that cover point isn't good. The AI walks past the target to reach the cover point. I rather want him to take a longer path where he avoids line of sight with the Player. So maybe writing a MoveTo Task that chooses a fitting path? But also, I would like the EQS check to consider if there are available "good" paths and if not, invalidate the context item.
You would probably need a more elaborate setup to determine whether the point is valid so it doesn't pick those, or have a second query which determines what kind of path to take to the point
Aren't there resources for validating Navigation Paths? x) I probably manage, but I hoped that there is something available already.
No, there's not ๐ฆ
part of the problem is that EQS can provide you a point that isn't visible to an enemy alright, but doesn't have anything to do with pathfinding, so the pathfinder would have to be implemented to take into account that same visibility
okay thanks you two
Personally, I'd munge the recast navpoly's to have visibility scores and then use that in the A*
But its not a quick fix ๐
I have navmesh with some modifiers placed in level, is there any event on when the AI enters a modifier?
basically I have a LowHeight modifier and I need the AI the crouch when they enter that modifier
well, I figured that out, so to anyone interested this is the code that allowed me to access the area class of the path that the AI is currently in
UPathFollowingComponent* pathFollowingComp = OwnerComp.GetAIOwner()->GetPathFollowingComponent();
int32 currentPathElement = pathFollowingComp->GetCurrentPathElement();
FNavMeshPath* path = pathFollowingComp->GetPath()->CastPath<FNavMeshPath>();
TArray<FNavPathPoint>& pathPoints = path->GetPathPoints();
ARecastNavMesh* navMesh = Cast<ARecastNavMesh>(path->GetNavigationDataUsed());
const UClass* areaClass = navMesh->GetAreaClass(navMesh->GetPolyAreaID(pathPoints[currentPathElement].NodeRef));
Nice :)
I had a hunch it might be something in the path following comp but wasn't sure of the specifics
Doesn't that code just scream "easily understandable" ๐
C++ is such a pain in the arse ๐
I've done this. The basic technique I used was to:
a) Write a context that returns the set of actors we want to avoid exposing ourself to -- I used a sphere catch to gather anything 'hostile' within a given radius)
b) write a custom EQS test in C++, get the path using FindPathToLocationSyncronously, and then, here's where it can get expensive depending how you tune this:
For each path segment, subdivide it into test points. For each actor we want to avoid who is facing the path (there's a ton of ways to do this: I used cone-line-segement intersection) do a line trace from the test point to the actor. If it hits the actor, fail the test.
c) use this test in your EQS. Ideally, the rest of your design has filtered down the number of candidate paths here, so you don't have to do the expensive test too often.
at least for me, I thought that should be smth basic that is easily accessible, well... apparently not
also there isnt public on segment finished event so now Im overriding path following component to override its OnSegmentFinished virtual function
I use Move To task node in Behavior Tree, and when AI is doing this task it's not registering any AddForce events, do I need to pause this movement then add force and reenable it? Or is there some more convenient solution?
Physics based force or on the character movement comp?
Hmm
I'm not 100% sure but it seems like CMC forces should still apply if moving like that because the CMC itself just uses forces to move around - have you tried giving it a really large force just to see?
Yes I t ried simple line trace and on hit add large force but it was ignored until AI reached its target location and wait node triggered, then the force was applying
The only force that is being applied correctly is at Z axis
Thanks! I try it out as you described.
Great! Curious to see how it goes for you.
Personally, I'd go the "lets modify the navmesh cost" route.. you could theoretically just spam navareas to bias the pathing, but that's pretty nasty
Basically, just intersect all the navpoly's with the enemy visibility cones, or do a centroid of the navpoly dot product with all the enemies vision
hey folks
in ai character can we multicast some event?
also, don't forget that you can do navmesh raycasts pretty quickly
Pretty sure there's a multicast delegate isn't there? personally I've used FMessageEndpoint for multicast messaging too
it doesnt work for me
FMessageEndpoint is a pub/sub message passing mechanism, I've found to be really handy
But then I've made message based architectures for maaaany years now ๐
oh blueprint? no idea ๐
That's more of a networking thing, not an AI thing
i know but multicast work in everywhere except ai character
for me at least
Well, usually you only do AI on the server anyway, so no need for replicating anything
so you'd RPC from client to server, do the logic on the server and that'd automatically propagate to clients
through playersstate or the like
i just wanna write some debug thing for myself
beginplay just run in server?
no it runs on both
void APCSAICharacter::BeginPlay()
{
Super::BeginPlay();
// Debug
UE_LOG(LogTemp, Warning, TEXT("%d"), HasAuthority())
}
HasAuthority is only true on the server
Yeah, intersecting vision with navmesh is pretty quick. I wonder if you could use discontinuities in the navmesh as a proxy for vision blocking? You could verify with a quick real raycast if you find one. Since part of the point of this -- for me at least -- was convincing AI to use cover on their way to a goal location.
You basically just want to approximately find "hidden" polygons and make sure their path cost is lower than "seen" ones I think
don't want to make a hard limit or anything
then let the A* do its thing
Yeah, that could be a lot more efficient than what I'm doing now.
Thanks!
Worst case I just need to trace to the center of each polygon in the vision cone to mark visible or non visible.
Hi, does anyone know the difference between the Pathfinding and Pathfinding Batch Tasks in EQS? The only difference I could see on the documentation was the "Scan Range Multiplier"
How can I expand the navmeshbounds to actually connect and go closer to the walls? Doing this for the VR pawn.
Oh, I think I got it figured out
since there's nothing else going on in here, that problem above was almost certainly solved in these settings:
Is it possible to swap behavior trees for AI controller and completely preserve the execution and blackboard state of previous tree? Like for example I want to be able to start a dialogue with an NPC that is sitting on a bench and I don't want to neither make the NPC abort current interaction nor bother myself with saving the state of interacting in component or controller. Instead, I'd like to just run a separate BT for dialogues and after the dialogue is over to just switch it back to the routine BT so that the execution continues from the last task which was the interaction with an actor
You could run a subtree in your main tree for dialogue
but then I'd have to run a task for this and in my current implementation the interaction (i.e. playing montages) stops after the task is finished. I mean currently I am running a subtree anyway, it doesn't solve the issue of preserving the interaction state
or do you imply that I should split starting and ending interaction into separate tasks and put them in a selector and have the logic to control whether the interaction should begin or end?
Well, it sounds like the dialogue is simply as higher priority task in your BT
Still waiting for zoombapup's "Not Epic's BT"โข๏ธ plugin
Yeah, got paying projects to do right now ๐
Those damn people and their damn money
Absurd.
Absolutely
Rude even
The main difference would be that mine would be implemented as a treeview like the statetree editor.. and it would run proper parallel nodes and evaluate from the root every update
or rather, evaluate from a stack, but allow you to traverse from the root every update
rather than use Epic's "lets try to be efficient by only changing on events" kind of thing
it is, but running it as a higher priority subtree is hard in my case because my "interact with actor" task is latent (it returns EBTNodeResult::InProgress) so getting out of routine branch will abort this task and I'll have to handle it, which I am currently doing. I get it that I could split start and finish interaction into separate tasks, but I was just wondering maybe there was a way to completely put one BT on hold in AI controller and start another BT and then after some time resume the initial BT in the very same execution spot it was before swapping
I don't think that's possible at least easily
the behavior tree component holds a bunch of state for it I think so you would need two of those
Hey guys! I'm checking out smart objects recently and in the docs it says that it will also support players as well.
Is that a planned feature for the future? because I can't seem to find Player Behavior that was mentioned in the docs.
After tinkering with smart objects a bit I think they are pretty ai independent. It is the ai module that has some support for smart objects
I can't see why you'd want smart objects for non AI stuff, those are just "objects"
the point of smart objects is to allow the object to direct the AI for usage
I guess if you stretch the metaphor a bit, you could say its just a "usable object" that accepts both AI and player
But the point of the "smart" in smart objects came from the fact that they had logic to inform the agent (sims agent) how to use the object itself
Yeah, but I think the claiming system would be nice for both players and AIs so I can sit on a smart bench and the AIs won't sit on that spot
I guess it depends on how your game works
For example if you have a button which triggers an animation to play that presses it or something
that could be the same for both player and AI in theory
I was just wondering how would a player use a smart object that's all because I can't find the Player Behavior thingy :P
and the quick start doesn't include a player section atm
Does a player trigger the Gameplay Behavior as well?
Not exactly. I haven't implemented it for the player yet but the way it works for AI seems to be controller independent. There I call the UGameplayBehaviorManager method which starts my gameplay behavior. And the gameplay behavior just gets a component from the pawn (1 abstract and 2 derived component classes with virtual methods) and calls a method to start the montage
this code is mostly based on the epic's BTTask_FindAndUseSmartObject
I see, I should look into that, thanks!
another weird question, can a smart object move during runtime?
I'm inclined to say no, not out of the box at least. you'd have to implement adjustment of interactor position to stay at the smart object slot location. and I believe the way you'd do it be different for an NPC and the player character since GameplayBehaviors don't tick and they are not even directly connected to smart objects. So for AI you'd have to use MoveTo task and for the player... idk, perhaps interpolate the character's location to the slot. This is one thing I haven't figured out yet
Yeah, I think it might cause issues for the spatial query, but then I would like a vehicle to be a smart object of some sort as well
hmm maybe you can attach the character itself to the car
Yeah, usually you'd warp the character to a starting location relative to the car in car-space
same as you'd do for a door
Oh I'm talking if a smart object moved, how would the spatial query react to it
what do you mean by spatial query? EQS?
Yeah, if they are storing an Octree to optimize the query, who knows if it gets updated.
The octree used to find smart objects
ah, i see. this thing?
Yeah
Maybe we can update it manually somehow? Currently not in front of my computer so I'm just talking out loud
idk, I'm not doing any big cities yet so I'm using EQSs to find actors for interaction
is this octree thing something worth to get into?
It's really nice for actors that don't move that's for sure
btw the EQS actors of class generator just uses TActorIterator
which suggests to me it's quite likely other "find x" functions are also similarly naive in their implementation
How does AI work with world partioning? Is it still able to function if the world is "not loaded" to the player? I'm looking at some kind of sim game but if I'm working with a large terrain I would like to still have units doing stuff in the background
I've not used WP in particular, but if it unloads the actors that are within that partition, then it would also prevent them from doing any logic
Yeah that's what I assumed, I'm wondering what are some common design patterns for simulation games like this - assuming you wanted NPC permanence (and not just AI crowd generated when you get near)
you'd probably use some kind of lighter simulation for the AI when they're not in world
mass
Definitely mass
mass?
Is there any way to ask the navigation system a set of navigable points for a given cost?
i suppose it might be doable with eqs but that seems inefficient
You mean path cost of something custom
more like just for the default navigation system, given a set cost what is the set of points I could reach. Like for a turn based strategy system say like divinity or fire emblem
You can place NavAreas and define costs if I understood your question correctly
Pathfinding logic will evaluate them and try to select lowest cost
err hmm i think i am doing a bad job explaining lol
i mean show a preview of what points are navigatable for a given cost
I'm also not a native speaker, dont blame yourself ๐
im trying to boot up an example in a project i made with my own navigation system a while back ๐
Ah, I see. Probably that'll require some custom system in C++
There isnt a straightforward way I think
yeah i think you're right. :X i made this in my own navmesh system in c++ but it's not integrated with unreal's navigation system at all
unreal's builtin stuff has so many features so i thought id maybe ask if anybody knew anything ๐
FSMs are already confusing enough even without much nodes ๐ฎโ๐จ
What I didnt like most is you have to use delegates literally on every transition node to determine if system should evaluate the next transition. It'd be nice to set evaluation gate open/close at state node class instead
that would be nice
what is that fsm variety? is that new vanilla stuff? or is this anim bp, or logic driver, or
I know there's new state machine stuff but I thought it was just the state tree thingy
which is not exactly what I'd hoped for
I have it
logic driver is very nice, would love for that sort of thing to go vanilla
I used it to build a dynamic music system
how do you cope with this problem ๐
well you don't have to set up delegates to make transition rules
if that's what you mean
I thought your point was that it'd be nice to move that transition logic into the node class
actually now that I think of it, you can put the transition logic into the node class iirc
From what I can see transitions are being evaled instantly after first tick of state class
So to prevent them from swtiching to another one you have to disable eval and enable it back when your conditions are ready
and that means creating transition class for each node class - i.e. if you have a generic move to state you have to listen for move to end delegate and enable evals after that
ohhhh
i think i know what you mean
let me dig into what i made
ok so what i did
is to use Set Can Evaluate to disable states
which sounds like what you are doing
yeah
because yes --- it will just fly through it if you dont control for it
i think i raised this on the logic driver discord
that it would be nice to have a better way of controlling it
Oh, nice, did you got any answer after that?
yeah because you have same logic on state machine nodes
which doesnt make sense to not have same logic on state nodes
i guess i was wrong, i didnt raise it
im too much of a "solve it without asking" guy
haha, probably I'll raise it soon then
ping me, im in there
yeah logic driver is so powerful but there is definitely a little bit of a "wait why isnt this just a little bit more open"
I'll do it next week probably, I'm right now using my employers plugin
nice 
i was talking in #audio with dannthr about how to move this to metasounds + maybe state trees
i dont think state trees is the way id want to do it
but metasounds might be interesting -- i just had to understand how looping worked
surprisingly creating a music manager is way difficult than I imagined at the first glance
the key is delayed triggers
the hard part though is scheduling, but Quartz has that solved
siliex did some great things on this btw
and shared his setup on twitter
oh really, interesting
just found siliex on there, but no idea where that tweet is
ill just ping them when its a more reasonable time
so what do you think of state trees as an alternative to logic driver though?
in theory, it should be able to replace it i think
It has a different use case
What it do is basically running state machines under BT's selectors
And its state machine logic is not powerful as other tools in terms of UX
yeah
but it is a generic state machine system -- could be applied to any number of use cases
the first time thats been the case in unreal
i just think that node graphs makes a heck of a lot more sense for a music system imho?
i dunno
the UX itself is where im skeptical
I think for a music manager state tree would be better
but if you want to add layers and fadeouts etc.
selectors probably wont allow you to do that when switching to other composites
because you dont have any control, it instantly switches
what you can do is, if statetree allows you to, you can just call fadeout function on audiocomponent on exit
if selector aborts the state machines
i would just consider things like fadeouts to be async tasks in the state tree
when I mean layers, its lowering the volume of a specific music and keep playing other one on higher volume. you'll see what I'm talking about with siliex's example
as for layers ----- i dont recall if logic driver can support multiple active states with independent transitions
i think it does
it does for pro version
no idea if state trees can do that
but you dont have to do that in graph
TMap<FGameplayTag, TArray<USMInstance*>>
run multiple sm instances and manage their volumes by index
and sort them to create priority
mmm yeah but ideally it could be done in a single state machine with a single graph
and yeah of course Pro version. Lite is free ๐
but you wouldnt have a selector logic in that case
fgameplaytags stands for as a workaround there
i think by layering we're thinking of slightly different things
goal for layering on my end would be using independent variables to add independent layers to the same piece of music
ideally it would all be authored in one graph
ah, I see
yeah logic driver would be the way totally in that case, imo
i do have some infrastructure for this already but ive not fully tested it
a notion of "channels"
ie a main channel for the main piece, with perhaps a "health critical" channel to add some orchestra hits alongside the music if you are about to die, whatever
one of the fun challenges is not just allocating a new sound component every time you play a new section of audio
implemented a pool to manage and reuse them
Looks well planned
yeah ๐
hey, I still have not found any tips, how should I start creating an AI which can move on floor, wall, ceiling jumping between them ( like xenomorph movement) . Is there any new plugin maybe in unreal 5 which can help in this ?
Thanks for any help ๐
well, as far as I know detour/recast can only operate on X/Y (ie the floor, or possibly a ceiling if you using a terrible hack)
you could build your own navigation system which supports that and insert it into the engine as the default navigation system so that things like AI Move To / behavior tree etc can still work but that would be a lot of work
im fairly doubtful that modifying detour/recast to support it would be a good idea unless there's already something in there
interesting related reading and resources for detour/recast and its capabilities: https://github.com/recastnavigation/recastnavigation
I guess you could lie to recast (flip the axes in the input or something?) but then you'd probably have to make sure that everything involved understood the exact nature of the lie.
yeah and how would you handle navigating from one surface to another
cause i thought you could maybe use a custom navigation data (navmesh generator) to feed detour and just put the walls / ceilings in some other unused part of the coordinate space, but then the transitions between surfaces that connect are not going to work
i guess maybe you could generate links between all of the individual grid cells but ugh
Yeah, I assume links, because you're going to want to change a bunch of things (like movement mode) at the same time.
yeah true
it would be rather cool to see that system in action though with a visualization of where the agent is (ie where detour sees it)
I'm trying to get my characters to follow a "squad" actor, an invisible marker that determines their general location and their engagement zone.
Characters are using the "Move To" task in the tree that comes with the engine, set to the squad's location, but they seem to be getting stuck on corners and that causes them to get separated. Any ideas what might be causing this issue?
Squad is the radius sphere just to the right.
Okay forgot to add, the characters have a slight offset for formations. Its just adding a small x/y offset to the squad's location.
But even setting the offsets to 0 they still seem to get stuck at places
Two things come to mind to look into:
- Looking at the navmesh, I'm not sure your agent radius is large enough. See how close it cuts the corner on the nearby wall.
- Are you using any sort of Avoidance? RVO has been known to cause actors get stuck outside the navemesh. Detour is better this way.
Agent for the character or the squad? Or both?
Squad is 512 though its a floating pawn and changing that value doesn't appear to do anything.
Character is 1, don't recall why I put it so low.
For the character: It really helps if the agent radius is at least as large as the capsule. Otherwise you get caught on objects due to collision.
From that angle it seems better?
Set the squad to something ridiculously high and its still hugging the wall. Character is 32 and its touching right on the edge of the navmesh.
In fact the squad's centre doesn't seem to be on the navmesh at all.
Characters will frequently hug the very edge of the navmesh. That's often the shortest path.
If they don't get stuck when there's only one of them following the squad actor then it's almost certainly some issue where they get stuck on each other
Good point.
but if they do get stuck when it's just one, the issue is something else
Zomg, any way to ensure they don't block each other's paths? I have them not colliding but not sure what to do for the nav agents there.
if they can't collide with each other then it shouldn't make any difference for navigation
the pathing ignores everything that isn't affecting the navmesh
Okay making the nav agent larger seemed to help while offset is zeroed out.
I'm going to try giving it formations again and see how they handle it.
My intention is that if they can't path-find to their offset then they should default to the squad's true location.
make sure they're not trying to navigate to a point that's outside the mesh.. that is likely to make them behave strangely :)
Either partial path or its returning some huge distance to the squad implying its through a wall or something.
Aye Zomg that's the plan. If its not a valid location they go to squad.
Okay judging from the name, that takes a location and puts it to the closest valid point on navmesh?
That's.... new?
Task for updating the location is this
Might have failed to project?
They all ran into the corner too, but a few stayed there like they were stuck.
Possibly. I can do a print off the return vlaue.
Create an extent that's larger than 0, 0, 0 too. That basically how far it'll look for a point in the navmesh.
Got stuck in the tight corridor sooner and they were printing failed.
Extent is current 8,8,8
Make larger?
Yeah, that's cm;s. Try 50 or 100.
Would it help to set it to the capsule size for the character? That's 34.
Or is that a different unit?
That should be the same unit.
Okay I'll try that.
I'd base it on how far your formation can offset. (assuming your squad marker stays on the mesh)
You can also just use your original fallback moveto -> the squad marker.
Nah still catching on the wall.
Though with that project I suppose I could use the fail state and it move to the squad marker true instead?
That should work for my original intention?
That's probably not perfect, but it sounds like it would keep them in bounds.
Okay along the straight path, they'd hit the wall and then instead of stopping they'd just push to the middle of the formation.
Not a great look but it works and this environment is just stress testing at this point.
But they're still getting stuck on the corners and not moving at all.
Gonna try widening the extent some more.
That is probably collision. For prototyping you could turn off wall->pawn collision.
Possibly. Would that not cause them to walk through it?
No, they'll stay on the navmesh.
But then check things, like "is my skeletal mesh colliding" and "is my skeletal mesh sticking out of the capsule"
Good point. They are A-posing so they're likely catching.
It's often some fussy collision detail like that.
Just realised I should probably be using a project to navigation even in the failstate right?
So if it can't get to its offset, it will first check that the squad is valid position before trying.
Because it does seem like its getting stuck while the squad is right up on the edge of the navmesh.
Still getting caught on the corner. First projection is the offset, second is squad location.
I'll do collision stuff.
is there a way to debug AI's path to target? The AI is seems to be going around the target instead of straight to the target half the time
That's what I'm working through now. If I recall there's no way to really draw a debug "path" like you would with seeing the navmesh though.
If you use the "Find Path to Location Synchronously" node however you should be able to pull off the navigation path object from that.
Then you can select the path-points. Style of debugging there is up to you, draw raytraces, decals, splines, whatever.
Actually sort of wondering why I never bothered to use linetrace for that purpose.
let me try that ๐ค
Excuse the spaghetti but
Path start is actor location, path end is the destination. Ignore the "set formation" its not relevant here.
Its somewhat bundled with the movement mechanic too but basically
It calculates the path in the first screenshot then tries to loop through moving to each point in that path in the second screenshot.
The "Create Nav Path" just clears and redraws the path based on how many nodes through the path it is.
Actually I'll try to write up a nicer looking one.
@worldly flame still need help with a linetrace solution? Just made something that works (though it runs on the ground)
Basically it uses that same "Find Path to Location" thing before. The path it gives out has an array of all points on it.
Then draws linetrace between each.
Seems to loop because the final point connects back to the first. It will probably register as colliding though.
Anyways @opal crest I have... some kind of progress if you're still here?
I'm around ๐
I've managed to force the characters to "follow" the squad location... sort of. But I've run into another snag.
I'm using particles to display what their current destination is and
hmm... line is drawn fine but it doesnt follow that path ๐
Also hid the wall they were getting stuck on. Still physically there just not rendered. Anyways.
...there's navmesh inside the wall?
@worldly flame For debugging paths, you can also get the current path from the AI controller on tick, and draw debug points. That'll be the actual path that the controller should be following.
Which would explain why they sometimes will walk on the wrong side of it despite the path cost meant to be super high.
Huh, didn't realise you could get the nav path directly like that. Might be a better shout especially if you're doing linetraces.
Would that be the same object that gets returned from the Pathfind to Location node?
because damn this might be much easier
That I'm not sure of.
I'll take a look
Anyways I'm getting sidetracked. Why is there navmesh inside the walls?
There often is.
๐ฆ
It just usually doesn't matter, since it's not reachable.
You can test if the point you get from projecting is reachable.
yea if collisions are there around the wall then it shouldnt matter
Aye but I think the problem here is that they're trying to reach it, and the closest point they can get to is on the wrong side of said wall.
Yeah, that sounds right.
Any solution to that?
You're getting these points by projecting, so you could test if the point is reachable from the current location of the actor, and if not try a fallback point?
would this be the right approach?
@worldly flame this returns the same thing I suggested before, use this instead.
because i dont see any path ๐ค
Uh, no idea what the "enable debug drawing" thing is.
Ooh, I've never seen that node before. I'm not sure.
Looks like an AI task for behaviour tree?
I think you can put the solution Epigraph gave directly onto the pawn.
I'm testing it now.
how do you get the vector out of this navigation data?
Drag off and "path points"
Same as what I said for the Find Path node. Both return the same object.
Should be that though I've not run it yet
Wait one while I watch my CPU cry
Apologies for the mess. This is some spagjetti from a project where I am doing this ๐
hoookay that's a lot of errors. Ignore my code.
This just draws the points, the other lines are feeding a spline that I'm keeping up to date with the current path (which can also be nice for visualizing)
Apparently "get current path" is returning null. Weird.
That's kind of what I was trying in the first place? Its the fallback that's somehow trying to get into the wall I think.
No wait
The first projection is sometimes working as intended and sometimes projecting into the wall which is why they sometimes walk down the wrong side.
Exactly.
The fallback is the squad's true position.
But because the projection is valid, its not getting to that fallback.
How can I test the path distance from the offset to the true position?
That isn't just a vector distance check?
Your current path should have a length.
Since that would probably not factor in navigation.
Is that not the number of points in the path's array?
Sorry, there's a way to get the path length (which is the length in units of the path, not number of points).
I think that's what I'm after.
Nodes don't always line up with C++ API's so I'm googling a bit here ๐
Alright, I appreciate it.
you are right.. its coming as null ๐ค
Yeah I didn't understand that either, sorry.
I'd probably just use the Find Path node on tick but I have noooo idea how bad that would be for performance. Guess if its for debugging you can probably accept that loss though.
GetPathLength on a NavigationPath object will retun what you need.
Super bad ๐
Find Path Synchronously isn't that bad, I wouldn't do it on tons of actors.
I really want my game to push how many characters can be on at once
But also I'm struggling with making meta humans not be too highly detailed.
๐
Yeah they're still trying to get inside the wall.
Its only when the squad gets to the very end and the inside of the wall stops being a valid point for them to run towards that they turn about.
They really like this wall ๐ค
In BP, I think the only way to test if a point is reachable is FindPathToLocationSynchronously. If "Is Partial" return true, it couldn't find a way there.
You could then use GetRandomReachablePointInRadius, to get a valid, random target location.
Feels a bit hacky.
@opal crest Is Partial seems to have worked perfectly.
At least from my testing so far.
Quick suggestion for you Cy, turn off collision for your guys, it causes a world of pain, instead use steering forces to keep them apart (if you're using DetourCrowd it should do it already)
Makes it easier to get them through doors if they can't block each other, then you just have to clean up edge cases where they're passing through each other
2 questions:
I have a game I am creating where you are a store manager and are able to hire stockers to stock the shelves for you. I got the stocker system working however I want it to be better. As of right now, when there is no shelf to stock, the AI will just roam around getting a random point near it, however, I would like it so that the stocker is rather patrolling in front of the shelves so that the AI isn't just aimlessly wandering into the checkout lanes or leaving the store.
Also, in the game there is a placement system that I will be adding stuff to in the future (Ex: walls, flooring, etc). How would I go about testing something that relies on this placement system so that I don't have to keep manually placing the items every time I want to test something?
for the first one just have them check if there's no valid task and assign them to patrol the shelves or something
for the second part, it's a bit of a more complex thing, but you can build your system so that in addition to placing them at runtime, you can allow placing them during level editing
this way you can have a level where the item you want to test is already placed and set up in the way you need it, and you just load it and play it to test it
I wonder if I can use EQS to test for the nearest shelf, make sure that the line trace isn't going through an area I don't want it to (Ex: registers), then just get the point from the shelf.
Do you know of some tutorial that explains this?
Possibly, you could also have the registers and other non-desirable areas have a different navigation area type which would be more expensive to navigate through, so the nav system would naturally avoid going through them unless it has to
and no I don't think there's really any tutorials for it but it's not that complicated to do
for example if you have a box that you can place, you would spawn the box actor and put it into the location the player is pointing at (or something along those lines)
so since you have the box actor you just put it into the level yourself
my video rental store simulator game has a system like that
although as a player the building system is slightly more complicated, as you place down a placeholder, attach parts to it, and then you get the finished object - but the placeholder just destroys itself when all parts are in place, and spawns the finished object actor
so if I want to test something I simply place the finished object directly into a level
I see. Luckily I made a function in my plot manager BP so that I can a function to spawn the plots so I know where the grid is. I'll have to take a look at that. Thanks
If it's difficult to allow placing them you can also just do it through level BP
although generally you'd want to avoid using level BPs, I think it should be ok if you're making something which is just for testing purposes
True. The nice thing is that my placement system just uses generic snapping system that just snaps every 50 UE units. So I can just set that in the level editor when I go to place the items there.
If you're placing things on a grid, then why not use the grid based pathfinder or write your own? then you can add stuff into the pathfinder to suggest places for the AI to go, stuff like influence map data on "last visited" values etc.
Don't limit yourself to whatever Epic gives you
Ill have to take a look at that
Collision is off, I think the main issue was trying to get the pathfinding to go to the right place because it was trying to get inside walls or on the wrong side of them.
Related question; what exactly determines the "cost" of a path? I know for A* its distance and you can determine some areas to be "more expensive", but assuming no special ground is crossed and its a straight line what would the relationship between straight distance and path cost be?
Mostly just asking because I think I have a solution for them wandering off to the wrong side of a wall.
{
// Unit has wall between it and squad
}
I know its probably going to have its own issues doing that, say if there's more expensive terrain in the squad's formation (partially over water or something) then it'll always say its more expensive but still.
Point is, if there's a wall between their offset in the formation and the squad's true position then that pathing cost should be significantly higher?
Why don't you just raycast from your squad target location to get your offset locations? there's a navmeshraycast you can use that will stop at the edge of the navmesh
If you're getting offsets through walls, you should be raycasting to them
hmm.. Somehow navigation invokers don't work in my project :/
I followed this https://docs.unrealengine.com/4.27/en-US/InteractiveExperiences/ArtificialIntelligence/NavigationSystem/UsingNavigationInvokers/
Stupid question: how dumb of an idea is it (performance-wise) to have an AI's routines run in regular blueprint as opposed to using a behavior tree, if I want the behaviors to run at a specific timing?
its an unnecessary work to save nanoseconds from CPU time
BT are extremely optimized and default nodes written in C++
for example normal AI Move To node in BP is a latent task and more expensive than BT's move to node
Hmm. Okay. Mostly I'm just looking for a (convenient) way for the BT to call functions on a particular blueprint without needing to use an interface for it.
dont use interfaces anyway
they are very popular among BP users but its an abuse of interfaces most of the time
just have a base class for your characters, use inheritance intelligently and cast to your characters in BT tasks
its also fine to create character-specific nodes in BT
Noted.
Guess I'll just do it the way I know I should, then, lol. Thanks for the info.
Np 
oh I might be able to help if you are still working on it.
- First, make sure Generate Nav Only Around Invokers is turned on in project settings
- Make sure you have a Nav Invoker component on the actor you want
- Make sure your generation range is set on the nav invoker component
- Set Navmesh Generation to Dynamic
by the way the player component automatically is a nav invoker if I remember correctly
nice
I didn't have nav mesh volume
yeah that's a gotcha
you still need a nav mesh bounds volume in the area you want nav
somehow I thought when using invokers, volume is not needed
I am looking for how to skip that but so far it is unavoidable
also be aware of navigating large distances where the nav is not yet generated, it should mostly work but it can be a bit weird sometimes
works best for nav that happens within the radius that you ask it to generate
aye, thanks
@mint terrace I think I managed to love the idea LogicDriver only allows you to determine transitions inside transition nodes without letting state decide on something
Though the fact it doesnt generate properties on the nodes when I create them in C++ triggers my OCD severely ๐
With a generic delegate you can open/close the evaluation setting and you can set that in node
For example when playing a root motion animation you call SetAllowTransitionClassEvals(false); and it can not switch to another state
SetAllowTransitionClassEvals(false); calls some generic delegate you created in base abstract classes and your custom transition class listens to it
but when you are just lurking around etc you can set it to true, so it's basically going to become something you can decide if behavior is interruptable at any state or not
and.. if you like to confuse yourself enough you can also add tags into system and create states inside states ๐ like transition classes and only eval while specific tag(s) are added or not
this is just state nodes right? is there a trick to exposing C++ UPROPERTY in there?
sadly there isnt any
Paaatrriiicckkk
from what I can see from source code it only gathers BP properties
no idea why, but some Kismet compilation is happening
probably its related
but why do you suddenly love this
specifically the only part
When parallel nodes and different transition classes and conduits come into play they are actually useful
You can allow switching to a specific state node but disable to another one
total control
i guess you just mean you dont miss defining transition logic on the state node
which is fair
yeah, only issue is using delegates to do that feels so unstructural in terms of design
it requires at least two delegates
root motion, or running GAS ability etc. calls a delegate to state node
then state node calls the delegate to transition class
then it allows evals etc.
do you need to use delegates because the decision to allow transition is async?
this override lets you control it synchronously at least
no, not because of that
its because node class can not access to its transitors directly
even though i actually didnt use this transition class for anything except for checking its type at runtime
since it can vary, it might not even exist etc.
so transition classes has to listen for delegates of states
they can both access next and previous nodes
i.e. where they come from and which node they are pointing to
i see
a state (node class) can access its available transitions, but its true they cannot access the state transition that is selected
for my use cases i just used the transition types themselves to determine to enable/disable them
thats what Early Transition is doing---
oh also the one from Any State there
normally i disable all transitions because the state node isnt done playing out yet
but i leave the Early Transitions available
the "fiya" nodes transitions there
i love that we are not in #audio just because we came upon this discussion here in #gameplay-ai
tbf logic driver is super useful to ai devs
and making a music system in it is probably not necessary
and also your use case is AI
early transition allows you to run both of the nodes?
early transition doesnt run any nodes
theres a current state, and then i just control the flood gates on what transitions can happen
its not going to be useful for your use case
just reflecting on what ive figured out in logic driver i guess
in my case transitions still do not mean that the music suddenly changes
thats simply because im scheduling the actual change via quartz
i enable transitions based on what the upcoming quartz scheduler interval is going to be
early transitions can be Beat or Bar
i always enable Beat but i only enable Bar in the preceding beat before the end of a Bar
if its not an early transition, it is only enabled when we approach the end of the scheduled audio file
which is what the state nodes represent
i mean i guess the same sort of logic could be applied to any kind of asynchronous action, but i dont think its very scalable
ah, I see now
sorry btw my connection has issues since a few days
I cant react quickly ๐
only thing I wouldnt do in LogicDriver is a quest and dialogue system
while FlowGraph exists and free, its completely unnecessary and more work
I wrote a web app for dialogs
I load them from json at runtime
siliex has a dialog system I want to check out
nice part about the way I did it is that dialogs are fully authorable without the editor
I'm working on a special dialogue system too
Based on Valve's AI driven dialogue GDC
But it's one of the most difficult things I tried to implement so far
Querying, sorting, finding bazillions of criterions and contexes etc
the Unity game?
the studio
in my case my dialogues are more like barks, and they depend on the criterion count sorting
In this 2019 GDC session, Obsidian Entertainment's Carrie Patel & David Szymczyk discuss how narrative designers and game writers can get the most use out of conversation editors and how tools programmers can design software that allows for robust conversation design.
Register for the all-digital GDC 2021: https://gdconf.com/passes-prices?_mc=s...
i.e. you send Event.CharacterSawShadow and tons of params like Time=Night, Who=James, Ammo=LessThan30, HasNearbyAllies=true etc. and if Event.CharacterSawShadow has a dialogue binded to it with more params its being selected. So dialogue becomes more contextual with more params
so it's not so much conversation as conditional response
yeah, its basically like Lyra's message system but system tries to find the dialogue relevant with event tag you sent with the most params
conditional selection of dialog trees is super core to a good dynamic conversation system
but if you can get by without it being per dialog node then things get a fair bit easier
yeah that matches what I was thinking
more like a rules engine with a data asset per rule
with some text and a sound file
yeah, exactly
when you say rules engine they actually have an engine inside the shipped game
evaluates all of these things
and provides a script (dialogue, animation, ai task etc.) in runtime
I'm trying to make a minimalistic version of it, by using tags and two FNames only. TMap<FName (who), TMap<FName (map), FCriterionQuery>>
FCriteironQuery is basically an fgameplay tag and holds all the relevant params but only drawback is you cant calculate anything
using maps helps to partition the lookup
if event is relevant with a specific character you end up just searching its data
rather than querying every characters possible dialogues
and some dialogues only happen at specific maps
2nd map helps on that
and FCriterionQuery is all possible generic dialogue options + map specific options
ok I guess for the main character bark set and customization per map, that makes sense
and then under that, put the rest of your conditionals
valve is able to calculate params like health < 30 && ammo > 5 etc but doing that in UE requires some nuts ๐
because you either have to access reflection properties which adds... 0.002ms for each call and considering you can have 5k properties.. or you access blackboard which is actually pretty much same since its also a map and casts anonymous data to given type
so I found a silly workaround by just sorting gameplay tags by parents
event.gotdamaged.insomearea.withsomefriendsnearby.haslowammoetc.
tag with most parent wins and its dialogue get executed
but it reduces the contextual dialogue efficiency
0.002ms the first time you need to check something
you can cache that
unless you have 5000 params the query can check
I'm trying to find an efficient way for that
you basically loop all FProperties in your UClass* and map them to do the caching operation
either gather everything into fast storage and check the queries against that or make a cache map
what is a fast storage?
I just mean do the reflection exactly once and then evaluate the bark options against the stored results of the reflection
ah, I see
or, do the reflection on demand if the query calls for it
and cache the result, so that any other query that needs to check that value can reuse it
web dev gonna cache ยฏ\_(ใ)_/ยฏ
WEB DEV!!!!!??? outrage! ๐
this is NOT AI ๐
I think an AI is producing all these web dev tech stacks though, there are so many of them
We have a browser based wysiwyg design tool and it would be interesting to see if we could use AI to do basic designs in it
but nobody really has the time or expertise to try it
Aye, there's definitely fertile ground in looking at ML based tool automation
Got a funding pitch event on tuesday for that.. ML based PCG stuff for UE
Hopefully get some small funds to work on it
Also got a couple book chapters to write before the end of summer and a demonstrator to produce for satellite visualization
Busy times ๐
Hey zoom, I wonder what do you think about this
TL;DR state machines allowing only transition classes to decide on the flow of the SM
Thats the usual pattern.. generally you have enter/update/exit and the update allows transitions. I can see an implementation where you have a conditional base class that allows transitions by returning true and you update your logic and then check all transitions
Not sure how the plugin you're using does it, but traditional state machines have some logic in the update that checks if the transformation should occur
The reason why that's such a pain, is that as the number states goes up, the transitions become exponentially more.. so you need to partition, usually using heirarchy
BT's came about so you can avoid explicit transitions
Oh this sounds interesting, what you pitching or is it all hush hush
A few months back there was a nice conference where several studios and researchers presented ai/ml based methods for various tasks
All in the domain of game development
Engage, Learn, and Share at the Microsoftย AI and Gaming Research Summit 2021. We invite you to a Microsoftย in Virtual Eventย to joinย researchers and practitioners from academia, game studios, Gamingย and Xboxย at Microsoft, and Microsoft Researchย toย engageย and share ideas about how AI and machine learning is transforming the landscape of gaming.
There was some cool stuff, where the researcher created ai assistants for asset placement in level design tasks
A lot of PCG stuff I've seen has mostly been done with tools like Houdini, I assume you're doing something else?
help i can no longer acces these options cause the drop down doesnt exist?
Your senses config array is empty
It's not flickering it's just executing that branch in your BT over and over. Remember that BTs are being constantly evaluated based on the specified rate, if you want it to not flick as much considering slowing down the tick rate of the BT or adding a delay node after your moveTo if your intention is for the AI to wait before going through the tree again and thinking of its next move
i mean it found the player it should move to but it wont move
ill try the delay on move to
and after
it'll do that when the move fails or completes immediately, since it has nothing else to do after it
if you pause you can use the stepping function in the BT editor to see where the execution goes
what if the ai is too close to the player thats why it cant move?
so it counts as a succes
i have the radius set to 100 is that much lol
If it's supposed to move to the player then most likely that would immediately just cause the move to succeed
100 unreal units is 100 cm, so 1 meter
I was gonna say this too lol
Try printing out the vector it's trying to move to
See if it's actually updating like you think it is
Show how you're assigning the blackboard key for the position it should move to
ill print character vector in red and ai move to vector in purple
or smth
um how can i print the blackboard vector value?
Just print the output of your RandomLocation
Right where you showed that screenshot
Make sure that's updating
Did you set the property of that Vector struct to editable like shown here
Hey, Iโm having trouble with my behavior tree. I have a task, calculating an index (interger) and I want to store this int for further actions in my blackboard. I have no problem saving blackboard values from any other blueprint, because I just need to call โSet Value as intโ and parse a String with the exact variable name. But from the blac...
yes i did
Hmmm I usually rely on the other method of assigning blackboard values, where you specify the string name of your blackboard variable
i cant set my vectors values in details tab
i wanna set this value to expose on spawn but i cant cause i dont have the fkn details tab
and it says its enabled but its clearly lying
Lmao
Lying unreal
I haven't tested this in ue5 yet, maybe someone else knows?
nah ue5 ui is so inconvenient and annoying to work with
so many extra clicks needed
shame
But if you want this to work try.
Getblackboard->setvalueasVector, and type in "Vector" on the keyName input
Should probably change that variable name to something else though, it might get confusing
Call it playerLocation or something
i cant have 2 vectors
what would fix my issue is just having a player charcater vector loaction
but no i can only set 1 vector
why wont it let me be spesific?
In the blackboard? You should be able to specify multiple ones
well yea it allows me do it there but not in the blueprint editor
how am i gonna set vector 2 when it only has set vecotor value its like setting all of them or smth
its jsut so stupid i cannot set induvidual values in the blurprint
let me set difrent vectors reeeeee

let me open up unreal real quick
this is how i do it
So this also works
but you said your details panel isn't showing up 
wstill same bug :<
wait, that didn't work, the ai is still not moving?
um could it be my casting isnt working?
Did you try printing out GetActorLocation and making sure that changes while your character is moving inthe world?
it only updates once ai sees me or unsees me
Try get player pawn instead of getplayercontroller on your second image
hm yes casting good now its updating constantly
but ai still no moves
ok i manged to make it move
just had to change from vector to player
that doesn't make any sense, the key you were using is 'Vector' not 'Player'

oh nvm, i see that on find_Player, you're setting the output key to player
got it
no problem ๐
what would be the easiest way to set a timer for lost sight? i need to make smth that makes ai keep following me for a second even if it loses line of sight
I believe that's already available as part of the AI_Sense stuff
max Age should be the param you're looking for setting the time before an AI stops searching you when out of range
playing with the values on there should get you what you need
And try out some of the AI debuggign tools to make sure the behavior is expected as you play with the different values
Yeah, I'm doing some of it based on models trained on films, the point being to explore the space of co-creative PCG a bit
Essentially, we use ML to build a model of the world, then use that to populate it
But do it in a way that allows for "prompts" for editing
I've been inspired recently by a lot of the NLP based generative art
do you have to fine tune the model for the given world that you are generating, or is there some sort of existing model that takes as input some video and generates some output that you can use
ohhh
NLP
prompt-based generation?
We train on a bunch of movies.. or rather, on the output of pre-trained models on a bunch of movies (Movienet dataset but expanded)
So this project is to explore a bit the idea of prompts for the immersive space
i.e. we might need voice guided generation
or image guided (select an image similar to what you like)
im not too familiar with these kind of models, what architecture are being used for this?
But also, the idea of keeping some things and generating only partial scenes is a key thing
transformers, CNNs?
its actually whats called an ensemble model.. so we use a load of off-the-shelf models to output specialist data, then accumulate that using a graph neural network
specifically a spatio-temporal graph neural network
what's the temporal aspect here?
basically the GNN predicts the probability of specific graph node expansions
the temporal stuff comes as movies change scene information over time.. characters enter shot and leave etc
do the nodes serve as object entities (chairs, walls, decoration) etc?
so we model the difference in scene over time
got ya
yeah, basically, nodes are objects and edges are relations, like "on top of" or "loves"
so we have this sort of high-level description of scenes by assembling it from dozens of pre-existing specialist models
and then learn on that
of course one limitation currently for this approach, is that some of the pre-trained models aren't great, especially on films which are outside of their training set
So we aggregate predictions across a range of similar models to help a bit
i.e. get N number of models to predict the same thing, aggregate their predictions
are you guys going to have to some additonal labeling or data collection for the pre-trained models?
i don't even know how movie datasets are annotated lol
no, most of that is just pretrained stuff.. you can download the movienet dataset and see examples in action
i would hope it's not on a per-frame annotation of what objects are in a given frame haha
yeah, thats exactly it
yeah i think i will just to take a look lol
a sparse graph of changes for per-frame predictions
the key is that most of the time the graph won't change, so we only store changes and then have "keyframe" graphs every N steps to help
bit like video
ohhh so this should give you a higher confidence or the actual prediction before feeding it to the GNN
So this approach seems very computational heavy to train, you guys have some sort of training cluster or using cloud services to do this kind of training
Well, one limitation for existing models, is that they only sample the video every 5 seconds or something.. you would never catch the really subtle timing stuff
ahhh i see
Yeah, I'm doing a lot of it in a kubernetes cluster
locally hosted or cloud?
cloud
have you gotten any results or still training?
well, technically, its a mix
its all in-progress right now
I'm actually going for funding so I can buy another PC to actually work on ๐ all mine are busy ๐
I work as a senior lecturer at a university
US-based?
UK
ahh okay
University of Lincoln
i'm in defense, we do a lot of ai/ml for different applications
Yeah, I'm literally surrounded by defense guys ๐
is your research mostly focused on PCG?
We are smack in the middle of most of the UK's air defence command
drones and the like
haha I bet, we always work with professors
No, my research is more on behaviour understanding and generation
Ahh got ya, things related to Explainable AI. I assume you do some RL stuff too?
Having my students make a simulation to train drone ML next semester.. seemed like a fun thing
oh yeah, you using airsim?
Yeah, RL, imitation learning
that's awesome
Not sure yet.. I've played with airsim, but to be honest the drone isn't really the important bit.. this is a graphics class for postgrad students
so I'll probably just mockup a drone for them
Ahh got ya, airsim had some nice example for training RL agents using stable-baselines3 which makes it very easy to just try out different algos and change up reward function for different behavior
the point is to get them to explore the code/graphics for optimizing a crowd.. but from the top down ๐
ahh we're talking about swarm behaviors?
Yeah, I have a student who just finished a Unity based RL project.. turns out their ML agents codebase isn't great
ahh that's a shame, i was going to look into ML Agents
You can imagine though, drones.. crowds ๐
Some interesting little specific features they wanted
Should make for a great assessment for MSc graphics guys
So they can explore the mass, control rigs, shaders etc.
We should have the mocap space up and running by then.. should be fun!
yeah that's pretty cool, what is the class you teach called?
I teach a bunch.. mostly graphics, pcg and game programming
but also cloud, big data etc. more CS stuff
yeah that's a lot of topics, cool stuff
Way too much this last year, covering for other people.. it damn well better be less next year ๐
But my main thing is basically programming tech stuff, ML, AI, Cloud, Unreal etcf.
No, most of it is face-to-face again now
only one I did mostly remote is cloud.. because its cloud ๐
haha
I do a lot of the same except the Cloud stuff
except i don't teach im just a research engineer lol
Yeah, cloud and defense probably hard to get together ๐
Yeah, I kind of wish I'd gone the research engineer path myself these days
so much cool tech to play with
Way too much politics in academia for me
well microsoft is saying their azure platform is the way to go for that lol
Yeah, we teach mostly agnostic, but I do rely on azure
never too late right lol
But if I were in defense, I'd focus on on-prem ๐
what's on-prem?
I really need to find somewhere to work for where they have an unlimited supply of GPU's ๐
on-prem = on premisis, basically onsite ๐
those FAANG companies have near-infinte compute resources lol
Hah, write a crypto-based grant ... profit?
Yeah, I was talking with people trying to build an open source Imagen/DallE2 copy
im from a small company so a big issue is have enough training data, but FAANG companies suffer from the opposite, too much data hahaha
I mean, that training is not a joke.. 300k gpu hours?
i know, it's insanity
yeah, new image/text pair datasets are 5 billion images big ๐
But goddam if these diffusion models haven't given me a real kick to get this video stuff to the same level ๐
Our cluster is teeny tiny compared though ๐
does the university give funding for the compute resources you're using or did you kinda just have to slowly build to what you have through grants?
If you're struggling for training data, synthetic is the way to go ๐
I've had to cobble it together with tiny grants here and there
, that sucks
you should get some of the defense guys to give you funds
Frustrating because I'm surrounded by agri-robotics guys ๐
lol
Yeah, I'd love that, but without a large research group, its difficult to secure
so idk how it works in the UK
but for us
we've had professor give presentations at our companies
professor that want to partner up and get some of that 
And the worst part is that there are SO many projects we could do, but a lot of my colleagues are very much against the defense sector collaborations
kinda share their research and we go 'hey we could use some of that!'
ohhhhh interesting
Grant life is weird compared to corporate. Back when I was a research assistant we'd have years where we were practically duct taping systems together. Then there was the year the prof had us spec a quarter million dollars worth of hardware because if we didn't the money would evaporate.
My understanding is that, that decision is up to the given professor, no?
max age doesnt seem to delay updat
Yeah, we have a regular meeting with defense guys, but there's only a small number of us
Yeah, definitely a personal thing
or can the university say 'no you can't partner with defense'
ohhh i see
LOL
Well, Lincoln is heavily in with the Navy weirdly, given we're surrounded by air force ๐
I'm basically a "I'll work with anyone on stuff that's cool" mindset
It's really dumb how those contract work 'use money or lose it'
Yeah, I've had that too, basically your budget gets eaten by the Uni if you don't spend it
so I spent it ๐
on VR kit ๐
oh 
we have same issue
if i dont use the budget company takes it and i won't get any of it lol
great investment lol
and it gets hoovered up if we don't spend quickly
Most of the defence sector is VR based training and simulation to be fair, which is why I like it
Its really goddam cliquey though.. all the air force guys know each other ๐
haha that's what i worked on at my previous job
simulated training for defense personnel
I keep trying to get my undergrads that its the perfect games job ๐
stable and cool tech
They won't listen ๐
They'd rather work as a wage slave for activision or something
yeah it's a real shame, i thought about joining the gaming industry
but the lower wages and extra work hours made it a no for me lol
Although, to be fair, I had a grad come to me at his graduation last month? and say he got a job doing Unreal sim stuff ๐
I like not working extra and getting paid decently lol
ohh that's awesome, what industry?
I'm a games guy by background, but the industry is a bit of a shitshow to be honest
unreal is seeing a lot of use in tons of industries nowadays
He was doing simulations for automated driving if I recall..
Yeah, I keep pushing that narrative "learn games, go and work anywhere"
I can point to films, training, defense, simulation, modelling etc
The skillset is massively valuable
right!
I know
i always tell people
instead of writing 'i make games' write 'i build simulation environments'
instantly get more eyes on your resume
lol
Yeah. Work in non-games, spend time working on games as a hobby, and you'll earn more, have more vacation + free time leftover.
hi, are you me
haha
that's exactly what i do
lol
And hopefully have professional management that don't try and treat you like crap
Hah! I think that's a good slice of this discord ๐
Seriously, if there's one thing I've taken away, its that management can have a huge impact, positive or negative. I've worked with some real asshats ๐
Just genuinely clueless, or even semi-evil people who had no right to be managing anyone, never mind seasoned programmers
Don't undersestimate good mgmt. I am happily moderately underpaid at my current company because the culture is too good.
Yeah, its worth a lot to work with management you trust
yeah that's insane, i have been lucky enough to have good managers. i'm not really that many years into the industry but here's to hoping i don't come across a bad one ๐ค
Well, now that you've had good managers, you'll see the red flags faster than most.
haha good point
I was in the games industry while it was growing up.. the growing pains were real
were you working indy?
people who were in position because they were there the longest etc..
I worked for Team17 on the worms games mostly.. plus a few others before and after
So indie company of around 100-200 ish
ohh nice!
Oh this is the same problem in large defense companies
Went from like 40 people, to 200, back to 80, up to 140 ๐
or sometimes they don't give you the compensation you deserve just because you haven't been there long enough, problems goes both ways
wow, that's crazy
can't imagine the stress of not knowing whether the downsizing would leave you out of a job
Yeah, that's an issue in academia too.. often people get blocked from career progression because some boss doesn't like them..
Oof. I've been through that. 80 people world wide, up to 1k, back down to 250? Slowly climbing back up after.
Well, I once led a workers revolt and demanded we all got sacked as long as our "manager" went too ๐
hahaha
jeez, at your current place?
They got rid of the manager in question
Yeah.
We went public, and that got us a lot of funding, but then we got skewered by some market trends (our margins tanked).
They'd put this idiot in charge, who had a PhD in astrophysics.. the git would literally suggest a new game every morning..
We found investors that bought the company, took it private and that stopped the bleeding, and gave us time to find new markets.
Ooof, funding is a double edged sword isn't it
markets demand growth at all costs
Yep. We were still generally viable, but when you are public and not growing, you bleed money fast.
wow
Well, investors and markets demand returns right? not making %age? you're gone
I'm still looking for the Unicorn gig, where I get to work on cool stuff, but don't have idiotic management or funding/accounting guys to deal with ๐
I did a startup a few years back.. that was eye opening
It always seems like you're in that zone from the outside looking in.
how so?
We were doing a thing called StoryBricks, which was an AI for storytelling
right? i feel like i get to work on cool stuff but still have to deal with funding issues
Eventually sold the tech to Sony Online Entertainment for Everquest Next
But we did a whole bunch of pitches and investor meetings.. so I learnt a ton about what I hate about it all ๐
did that ever get deployed into production? I dont know much about everquest
Like meeting with investors who had worked at EA and realizing they were treating games like tinned goods ๐
so i work at a small company so i kinda have to procure funding when i get a chance every few months, i don't particularly enjoy this
Nah, Sony shitcanned the whole SOE thing
i assume it is the same for you when you have to apply for grants
ohh nice timing

