#Collectors Gate
1 messages ยท Page 2 of 1
That's current? Are we trying to make a single, generic driver?
Or sticking with Player vs Enemy drivers?
I must sound like a broken record
I got 4 hours of sleep
I guess my real question is.. Could we have both the PlayerDriver and EnemyDriver on the same object and just enable/disable them as necessary when adding to the scene? That way we don't need to add components or anything, we just flip a bool.
UI only lives on PlayerDriver junk since ai does not need it, but it will at least be on the game object if we need to flip player driver on
Idk
I didnt want to have multiple drivers on the objects just because its a lot
especially if we add more drivers
boss driver, NPC teammate driver, etc
also, i want to change their name to "pilot" lol
but thats not a big thing
Those other drivers sound like EnemyDrivers with extra stuff
Could possibly just simplify to PlayerPilot and AIPilot or something.. depending
hmmmmmmm
so your suggestion is to put both pilots on the prefab and the ui and just turn them on/off depending on the team?
I think so. It's my current working theory anyway... And targeting for AIPilot is driven by team/alignment, however we wanna handle that
Maybe
do we need to rethink the whole pilot thing
I honestly don't know.. I'm having a bit of difficulty wrapping my head around the architecture for it, tbh
So maybe
lol
I like the pilots for seperating out the battler from the logic of battling
but there are probably other ways
what if we just did the base prefab as a generic battler
and 2 variants, one for player one for enemy?
I'm tracking. I think that could work. Is there an easy way to handle that? Like
Instantiate(PlayerBattlerPrefab..);
Or something?
Sorry if dumb question. V tired and still have a few hours in day
yes, I think the optional parameter to spawn mon is all we need
also
changing name from addbattler to SpawnMon just for the rhyme
xD
Okay. I think I can get behind that. I still think Enemy classes need to be reworked/renamed to simply AI or something... Since i think the intention would be to have AI act as an ally, enemy, or whatever
And i love me a good rhyme scheme in code
im trying to find a resource blog/youtube that has like a high level pattern for this
A long vid, but kinda goes over some stuff in this lane: https://youtu.be/kda7rz5qFtI?si=IrTjZHtuW862O6q0
GDC 2002, Creating the Illusion of Intelligence: Where AI and Level Design Overlap in Haloโs AI.
Chris Butcher and Jaime Griesemer speak about the design goals, theory and implementation of the AI and large scale battles in Halo 1 Combat Evolved.
Resources:
GDC Vault, session audio
https://www.gdcvault.com/play/1022590/Creating-the-Illusion-o...
Simple implementation that uses 2 pilots on the same gameobject, basically: https://youtu.be/UkeKfKcYNVE?si=nGQRWGX25GQ56c61
Follow my twitter for game updates!
https://twitter.com/TheVypur
Instead of writing a separate script to control your AI entities. Follow this pattern or update existing control to seamlessly change between AI and user Control!
Code used: https://github.com/TheVypur/InputInterface
Intro: (0:00)
Start Implementation: (0:18)
AI Implementation:...
Haven't watched it, and is fairly old, but this might have something: https://youtu.be/zAKZwAdMAek?si=N6G3Uc8n4H09fPoU
Check out the Course: https://bit.ly/3i7lLtH
Learn how to build your game and characters in a way that players can easily take control over them and release control back to the AI brain at will.
More Info: https://unity3d.college
^ corresponding article for this vid: https://unity3d.college/2017/08/30/switching-control-character-player-ai-unity3d/
nice
So the bottom example and the "Easy AI Control Transfer" each basically use a Driver/Pilot.. then each character is given two "brains", the Player and the AI, and the Pilot determines which to use/enable based on a bool or something set in itself
Yeah, this feels like one of those things that either comes super easy or super hard.. and we chose our path
For the AI stuff
I think the way we have it set up for now is fine where it just goes towards nearest
But
For future implementation
I think a state machine of sorts to help drive its decisions
Would be cool
Bet. I have familiarity with state machines in Godot, but not Unity. Godot i would create a custom node for the machine, then each State derived from an abstract State... And would just get added to the machine
๐คก
drawing state machine diagrams is my favorite part of coding
They're cool to think about and plan out
I guess question should be: Do we make a definitive state machine? Or a weighted state machine?
i.e. definitive says "I have less than half hp and i have a healing move, so i will use my healing move"
weighted would be like "my assigned creature has 0.7 weight in attacking and 0.3 weight in healing. I'm at less than half hp, but after running some calcs, I have determined that I shall attack instead of heal.." or something
Idk if those are real state machine types, imm making stuff up tbh
One step at a time though.. Gotta reel myself in. Focus is gonna be on getting the Pilot to work as intended first.. then maybe some attacks and playtesting.. then maybe new AI?
Aight, I'm down with that
I do think there should be some level of determinism in there so it's not a dumb random ai, but I'm down for a mixed approach where maybe healing would be "optimal" but it chooses to attack
I hope i have not come across as ornery to work with thus far @brittle hornet . I appreciate you working on this with me and that you've been teaching me the ways of Unity in the process ๐
Not to get sentimental. Just felt like the tension got high when discussing the battler/pilot stuff earlier (maybe I misread) and wanted to express that, regardless of how I may have interpreted things, you are appreciated
no tension, dont worry
honestly, ive never programmed with anyone else xD
I PROGRAM ON VIBES
If something feels weird I assume im doing it wrong
Lmao
just wait
you havent experienced the best part of TIA gamedev yet
and some point
we make something that is unignorable by jer
and he comes and does all the graphics in 3 days and the game is unrecognizable and much better
LMAO
I mean
I first found the channel/discord from the video you released a couple years back (?) about the 3d pokemon-like where you said "Jer kinda just went crazy this week and now the game looks really cool"
Can the Indie Accord make a better Pokรฉmon game in one week?
https://discord.gg/theindieaccord
Pokemon Tutorial: https://www.youtube.com/c/GameDevExperiments
#theindieaccord #pokemon #devlog
111K views. Good ish
The Indie Accord makes horror games despite having zero experience.
Monster Path: https://store.steampowered.com/app/1907660/Monster_Path/
Pass the Game Challenges
Horror: https://www.youtube.com/watch?v=yp9EnN7Z6EA
FPS: https://www.youtube.com/watch?v=VrNebVu0YAA
Pokemon: https://www.youtube.com/watch?v=y4tzphPMJe8
Arcade Shooter: https://www...
second place is like 3k views lol
Yeahh... algorithm is tricky
i always wonder if i should follow up pokemon video and open source it
Hrmmmm. I think that could do well, but I don't know if it'd do as well as the OG pokemon clone vid. Idk how the algorithm works, but it feels like it wouldn't gain the same traction
It comes down to your decision though, obv
yea, I think it was a perfect place and time
it was out for a year with like 1k views
then suddnly was going up like 1k per day
That might've been me
lol
its been out four years
and it only made it big like 1.5 years ago
bizarre
The algorithm giveth and the algorithm taketh away
Alright, i'm gonna sleep now. I'll probably bother you more again tomorrow and Saturday. Back Sunday to help with coding again. If you think of anything I could help with.. as just a talking head who can think and write on paper.. lmk ๐
will do
im slotgunning until tomorrow most likely
then plan to do battler fix
ui
wrote some pseudo code for potential battle AI. Probably far from what it would look like finalized, i think i conveyed the pattern that might work based on earlier discussion
I think you told me at one point in time, but what software or app do you use to create these diagrams?
Obsidian
Bless
Wait
Excalidraw
I just use it through obsidian as a plug in
But it's its own program and it works in a browser
@brittle hornet if you didn't already plan for it, please drop a link to Slotgun steam page so people (me) can wishlist and download
Slotgun is a satisfying deckbuilding slot-machine game where you face off against several CPU opponents to control the board. Roll you deck and control a cannon by timing your clicks to play the slot gun machine. Your roll will determine whether you shoot a single shot or thousands of balls. Your goal? Hit blocks to turn them into your color and...
To be announced
Its up to steam when it goes out
its been in review for 2 days
can take 2-3 normally, but up to a week
Oof..
@brittle hornet So maybe I'm jumping the gun a little because we haven't even fully fleshed out gameplay, but what are your thoughts for overworld gameplay/story? thinking make something more along the lines of a Pokemon game with BG3 mechanics (so routes and gyms and so forth as milestones), or a BG3 game with creature collection (so story is more structured/defined and progress is not necessarily driven by beating gyms and earning badges), if that makes sense. Or something else entirely..?
If that's thinking too far ahead just lmk, just something that came to mind. Gotta prove the battle system is fun first..
I'll just say... I think Pokemon-esque with BG3 mechanics would be more straightforward. Could work on the path/routes up to the first boss to get a feel for things
I would say more pokemon
but setting can be anything
like we can go that the monsters are digital, fantasy, pokemon type vibes, magic, etc
If we lean into the magic circles for capture and summon, then I'm inclined to say fantasy/magic, but I could see those circles working in a digital vibe.
i think we could make them work in any setting
could be monsters are aliens
idk
just trying to not fall into a rut copying pokemon too hard
or just generic dnd fantasy
ok im finally back on this project since slotgun is done done
opening up unity haha
Not my wedding, lmao. Close friend of my wife
As we near a potential alpha version to test battle mechanics (still feels like another week or two to get there, at least, but i think it's doable.. or maybe I'm overzealous), roughly how many mons and moves do we want to test with? Like 10 mons? 20 moves?
yea, 10 would be super easy
moves would be a bit harder, we would want a good range to test things
im super stuck on something weird with ending a battle and the input system
What's the weird thing?
So just to talk through it a little while you sleep (i think you sleep..), there are a few things I can think of that probably need to happen on battle end:
- Clear all non-trainer battlers from the battle. I think the Pilots are setup to update the creatures by reference so their change in HP and xp should be cohesive, but if not then it's not a big jump to fix I think
- GameState needs to change from Battle to Overworld. Whatever drivers/pilots and stuff that were enabled or disabled when entering battle probably need to be flipped back to their OG values.
Another hurricane scheduled to hit my state on Wednesday.
Hrm, i understand. Not what the issue is, but i think i know how we can find out. Starting from the EndTurn logic, can you just throw in a Debug.Log for just about any if/else check and confirm each object we are trying to touch exists (i think trying to just print it via Debug.Log(object) should tell you if it's null or not)
If it touches or triggers logic that switches the game state in GameManager as well, that might be useful to put a bunch of debugs in as well
The console log didn't show a line number from what I could read on my phone, but if it specified something, pls lmk what object it thinks doesn't exist
... and if you said stuff in the video i missed it bc i'm out in public watching with sound off ๐คก
I did but not a lot
The main problem is the script throwing an error is not written by us
It's a unity script
Hrmmm
nice find
Just happy others have hit the same issue and there is supposedly a fix
Apparently it's an issue with canvas being destroyed in Unity 6
Aight, lmk if still broke, lol
Heck yeah
and now im loading in vfx
For attacks
What is the goal for now? Just a simple "spawn hitbox here, make it look cool, done"? Or we trying to have attacks move from point a to point b then spawn hitbox?
i think both
will there be skill shots required?
or will it be all selecting targets
like for aoe attacks we might need somehting to spawn to show the area it will hit
Yeah, skill shots may be a thing. Idk how we want to handle them. For displaying their AOE, we could maybe reuse the shader made for the character select and just amp it up a bit and throw on a component to change its size according to the attack radius. Same might go for moves that are more conical shape or straight lines
I'm excited for the attack/skill expansion. I'm particularly interested in lingering/"field" effects, like maybe fire, mud, or healing circle that walking through would do something (deal damage/burn, slow, heal).
And idk if this is something worth considering at this point... But let's say we wanted to add a move that creates a wall as a special tactical move. Will the navagents know to move around them, or would be have to rebake?
we will have to rebake, but thats easy
Okay, i didn't know how intensive it typically was.
And is it possible to rebake.. a localized area? Like if we rebake, would it try to rebake everything? Or could we specify what objects or areas to bake again?
So for a sense of scale, let's say we made a project with routes leading to different cities and we have something like a gym. If we got in a fight on Route 1 and created a wall, when we rebake, can we just rebake for Route 1 or a segment of route 1, or do we have to rebake the entire "overworld" scene? Guess it also partially depends on whether all overworld areas are seamlessly connected together in one map or we break areas up with loading screens between scenes/areas
I think we would need to bound the area
Learn how to bake a NavMesh on a small portion of your level. This allows much faster baking of NavMeshes on large procedural worlds, or on very large worlds. We do this by specifying a volume around the player and use the NavMeshBuilder class to collect the relevant sources and update a registered NavMeshData.
If you are taking this concept a...
have not watched, but seems possible
Okay. I'm not too worried for now, but long-term it concerns me, lol
it lo0oks easy to fix
its just a big volume around the player so the navmesh doesnt have to be super huge
unless we really need pathfinding on the other side of the map form the player, it should be easy
Okay. I'll take a look soon. Interested in what exactly it entails and how it works
I think the video has useful info, but I want to confirm it's what we want. Like, do we only want navmesh present around the player so we're always building it? If the navmesh is only built around the player, do we just need to make sure the navmesh is big enough that no matter where the player is in the battle area that monsters can still target them and move towards them?
Learn how to update your NavMesh at runtime!
This video is sponsored by Unity.
Watch on Unity's website: https://goo.gl/rz5mda
โ Example project: https://github.com/Brackeys/NavMesh-Tutorial
โค๏ธ Donate: https://www.paypal.com/donate/?hosted_button_id=VCMM2PLRRX8GU
ยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยทยท...
Idk if this answers the question fully either. I'll want to run some tests to see if Brackeys solution works how I would expect
For a stone wall obstacle attack, I am curious how you think we should approach it..
I think it could be a destructible object, but that would mean that it would need an HP and possibly defense stats..
If it just goes away after X turns that's also fine, but it might not feel as dynamic?
Would you be opposed to, instead of damaging creatures "directly", maybe introducing composition in the form of HealthComponent and maybe like a StatsComponent?
If we want to make it easy to create an obstacle that can be interacted with similarly to a battler, i feel like it may be worth it to make more generic components to use in battle, but idk exactly what we would want or need. I'm kinda just talking rn. Need to sleep on it..
An alternative would maybe be to implement a "Damageable" interface or something that we could throw on Creatures and certain Obstacles if we want them to be damagaeble
Damageable interface seems most straightforward now that I think about it... probably
Not me suggesting damageable interface when you already made one.. oof
Hahaha
Yea a wall would be easy in current system
Just make it damageable
And make it a nav mesh obstacle
Okie. I didn't touch moves or obstacles yet, I just checked in a decent number of changes for battle management/flow control.
Instead of checking if battlers should be removed at end of turn, I invoke a new event that will just remove them from all battlers and set them to inactive if their hp hits 0
Noticed that simply tossing a creature into deadBattlers wasn't enough to stop Cheetah from targeting dead units, so that should be handled now. Maybe could be better, but it's a start
Also fixed some issues with Creature initialization.. You'll see a bool called "isDefeated" that could maybe be changed to "isInitialized" or something later down the line
Good call
Also added 2 new BattleStates: RoundStart and RoundEnd
Nice
And camera will now retarget player at end of battle
Do they recalculate the turn order only on new round now?
Yes that's was a big annoyance lol
It only will reorder battlers at end of round. Put a bool that defaults to true in ReorderBattlers that checks to see if it needs to sort or if it just needs to update the UI
I was also thinking maybe the UI can gray out after their turn
That's awesome
Honestly great job, that was really needed
Last major annoyance is clicking on UI registering as a world click for moving battlers
If we do that I think the battle system is somewhat clean now
Oh, yeah.. I'm tempted to make it a right-click only thing and you have to select an action from a mini UI pop-up.. To tell the thing to move
Adding exp at the end should be easy since we have the dead battlers list
I think we will need a solve for it eventually anyway
As in right-click -> store position -> select Move from dropdown button list -> target location becomes that stored val
I rehooked in the party Spawn functionality, so you spawn in members from your party
Yeah, let me see how much it will take to quickly fix the mouse stuff..
I haven't looked at anything new, really. Been focused mainly on BattleManager junk, lol
I found a fix for it up on the chat but never did it
I think so
Do.. I need to add a GraphicRaycaster component to an object in the scene? If so, what?
I do not, it would see
idk if this is going to work..
No
What happened?
I can try it on a few hours as well
Throwing the GraphicRaycaster on CustomInputs results in no object being found when I try to call the IsPointerOverUI function.. I think because the player prefab does not inherently have a GraphicRaycaster attached to it. Idk if i need to throw it on the camera instead or what..
Coding Monkey came in with the save
Alright, you'll see implementation in CustomInputs. Ended up removing the GraphicRaycaster stuff and went with a plain ole "see if raycast hits have an Image component" for now.
It works, we may need to adjust it in the future depending on how the game is built out.. But it works
Checked in as well
If we wanted to revisit the GraphicRaycaster approach, I think we would have to consider making a world or singleton-type BattleCanvas to throw the check mouse overlap logic onto
Oh nice
Adding some attacks with VFX now
Also expanding attack functionality just a little for more diverse stuff
Checked in a couple new moves. Also updated damage calculation to work based off of creature stats
I can hop in VC in a little if you want to review and test new changes
If we just go based off all deadBattlers, then we may end up gaining exp from our own allies ๐ ๐คจ
I think they should still have the "is player controlled" flag
I probably can't today
Ah, that's true. And no sweat
Don't know that I'll make any more progress tonight, but next on my list is to work on the dynamic attack display/ui to show all moves and junk you can use, I think. That or XP gain. We probably want a 3rd list in BattleManager or something for PlayerBattlerParticipants or something so we can distribute xp to any player creature that participated at end of battle
Yea, especially if they can switch in and out
Checked in some XP stuff. Didn't test it yet.. But shouldn't break anything I don't think
@brittle hornet thinking of making the action selection prefab kinda look like this. Was drawn on phone with finger, so sorry for poor quality.. probably coulda made something cleaner in google slides..
Instead of showing items in the hotbar boxes there (for Player, not Creatures), i think a general "Use Item" action may work fine and then we show a menu similar to the team party menu, but for your items, maybe?
Speaking of trainer/player actions, here's what I'm thinking so far (not necessarily arranged in this order):
- Use Item
- Capture Spell
- Send out Creature
- Swap out Creature
- Throw Rock (would have base power of 1 and would be exclusive to player/trainer as a way to stun other trainers or deal 1 damage to creatures for funsies, idk)
- Other player spells/buffs..
agree with the item thing
since we will probably want party and item available outside of battle anyway
its good to have those seperate
I think first 4 are important we can add rock if needed
honestly for first version we probably dont need to do items yet either
@vale plank when I try to spawn a gazelle from my party I get an error, do you get that too?
Ill look into what it is
What's the error? Does it break the game? I know I get an error when starting battle or starting the game, I think, stating TrainerTeam is empty or something, but it should initialize a team if it's empty
no it was not initiilizing a list
I did not get an error, but I didn't test after adding GainXP junk
ill teach you something horrible
Uh oh
What script is that in?
I hate that
yea, because it is in the inspector
the inspector creates it
anyway you can fix it with this
Gross. I mean, if we don't want it serialize i suppose we could initialize as empty list manually ( = new List<Battler>())
Ye
Ah, okay
because it wasnt showing in the inspector
That makes sense
honestly none of them should show in the inspector
so i made them all private and just made them start empty
Perf
they were just in the inspector so we could drag and drop during testing
also, i always click this
The participants list was added with the xp check in that I didn't test, so I can see how that could have broken things
"error pause"
because if you dont the game keeps running if there is an error
but it just quits out of any script that gives an error
Hrm
so it can make thigns hared to debug
Yeahh
it also makes it hard to tell when the error happens
I see. Yeah, that's useful. It's like an in-game breakpoint
Yeah, I'll probably use that moving forward! Thank you ๐
it also forces you to fix the errors right away, which is just another personal problem I would have
Did initializing those lists fix the error?
yea, but im getting another one when i kill an enemy, im workingo n that now
Oof...
This is what happens when you check in without testing, kids
I added some junk to DamageSource bc of what I wanted to do with the.. StrikeShot move (idk what I named it) that I gave to Gazelle. May need to change structure of move handling down the line
To override the BaseAttack.. since hitEffects does not inherit from the prefab
Yeah. Could maybe add a battlerstate enum to battlers.. if Aiming and ..move... don't move, but shoot in that direction or something. Idk
A saint among saturns, to be certain
Also names for the two moves i made were placeholder.. i made based on the animation. Feel free to change them up however you want for testing
While you're in there.. any way you could look into potentially making it so trainers are always at front of the queue in battlers? Simplest solution may be to create a new int priority.. and just set trainers to like 100 and then in the turn reorder function, if priority > other priority, put this first.. otherwise if priority == other priority, compare speed
Unless we don't want trainers to be first in queue
@brittle hornet For aiming.. Are we doing free aim? Or are we doing sphere for range and raycast for line of sight?
Guess it depends on the attack.. For creating rock wall, we probably don't care about line of site to a target, just ground in range of the user.. or for a lobbing attack that creates an AoE/lingering effect it may not matter, but for certain moves for suer we would want line of sight i think
i was doing free aim
and just like outlines on the ground to show the affected area
Okay. I think it's fine for now.
We may want to consider making a more complex test scene for combat soon as well, like with a ramp and obstacles or something.. Future iteration may include Jump and Fly actions or something, but not something for now
@brittle hornet don't mean to keep blathering. For damage calcs, you fine with following the Pokemon damage formula (see CalcDamage function), or do you want to lean towards something like BG3 and attacks deal damage based on "damage dice" (so like 2d8 + 2 would deal 4-20 damage)?
If the latter, will need to rethink stats
@brittle hornet you checked anything in? Will probably work on the battle action gui when i get home in an hour
Don't want to break anything
Or mess up your pending check-ins
No go on with out it for now
I'll check in tonight
I'm on with Pokemon stats
Ok*
Okie
I ended up making basically no progress on battle action buttons and made QoL changes to the turn tracker instead. You'll see later when I check in
Checked in changes to make the TurnTracker a bit better
BattlerPanel (the things in top in TurnTracker) got following upgrades:
- Image turns more red the less the battler's HP is (slider health overlay)
- Panel now highlights when it is that battler's turn
- Clicking on a panel will make the camera jump to that battler
lol
this one
so relatable
im like 50% the move indicator right now
i did slotgun again last night lol
Ah, fair. I'm working on the battle actions now, though, so all good.
And no sweat. I wishlisted but have been too busy to download demo. I should do that now
ah no worries
jer and i are still working on it
i also think
we need to develop some sort of timing system in the battle
right now when you attack it instantly switches cameras to the next battler, so you dont see the result of your attack on the enemy or the animation
same for end of the battle exp and stuff
having some time to see exp bars growing and stuff
and maybe a little 2 second start uup animation showing the battle field
Oof. Lost on Easy mode 2 player. I cry
All the changes you mention are good, and I agree. I'll look into them.. After Battle Actions, probably
easy mode is mis named
it should be called
"easy at thebeginning but ramps so hard you cant win if you dont quick kill"
I'll get back to it after I recover from this demoralizing defeat. Working on Battle Actions now, lol
I spun it maybe 3 times. didn't have enough x2 greenies
oh thats not bad
there is a newv ersion of unity available, want to update?
its 6000.0.21f1 -> 6000.0.22f1
looks like some stability stuff and a few ui issues i have run into
the rest doesnt imapact us
Sure, I'm down.
Let me check in a few things real quick..
I think my current changes will break opening the party menu but that's about it
Actually let me fix and ensure it works first
No hurry to update
Let's check in first
ok
ive checked in the attack indicators
so when you finish it upwe can update
until then im going back to slotgun xD
Okay. BIG push
UI needs a little more love, but here's the gist: Dynamic action UI ๐ฌ
And can now assign multiple moves to use in a battle
Only a couple merge conflicts. Not too bad. Wonder how we'll handle pre-attack aiming with the way actions are setup, but i don't see it being too tricky
let me check how i can put my attack indicators in here
If preAttack stuff was connected to battler instead of driver it would be easier since I'm passing battler when clicking the action buttons
Er.. i think it would be easier
I guess you could maybe do a GetComponent<PlayerCreatureDriver>().PreAttack() or something
well
why are you passing battler?
let me look at how it works
and ill be able to talk about it lol
I pass battler for attacks so that when Battler uses attack then it knows where to instantiate the attack
I was thinking the driver should have the indicator because not all battlers need it (AI ones have no use for it)
I was thinking similarly for the UI
honestly, its easy to get battler from the driver script too
Let me double check what PreAttack does
it just creates an object centered on the battler
oh i see what you do
you just pass the battler on turn start
that doesnt really impact anything on the preattack thing
I think no matter what, based on current setup.. PreAttack may have to store a reference to the attack we plan to use, and instead of Attack() using the prefab preset move, it uses the queued/stored move?
except when you press the button it should call "preattack" on driver instead of "attack" on battler?
hmmmmm
i see why you cant do that
Let me think a wink
So order of ops:
- You click the attack you want to use
- If it is a ranged move or something (idk if it's needed for all moves..) then we display the indicator
- You click left mouse to attack, or click right mouse (?) to cancel
- On Attack, use the move that was selected in step 1
yea, which can be done by:
just switching this to be based on the driver instead of the battler
but honestly, we seem to be integrating the battler and the driver together
maybe we dont need a driver?
if we just make the battler class have more functionality
I think Player drivers are small enough that could be done, it really comes down to the EnemyDriver.
It could probably be handled... By creating a new class that just handles all AI stuff, so in Battler
if (isPlayerController).. let player do stuff
else.. AIController.Instance.MoveAIBatter(this);
or something
I think I like the idea of consolidating drivers with battler... We just have to be sensitive to player and non-player overlap
Just lmk what you want me to focus on next. I'd prefer to veer away from UI for a little.. Been a pain, LMAO. But I don't mind... That feels like the main thing that needs doing right now..
ui is always horrible
but i do think we need to make
like
a diagram
because i think we are blurring the lines between what each script is supposed to do
I can agree with that
im ok with removing drivers if we want it to all be in battlers
because there is a lot of
Yeah, I'm down for that. If you want to refactor it, lmk. If not, I can tackle it
driver.GetBattler()
well i think we should diagram it first then refactor lol
xD
oof. understandable
ill try to do a diagram once I get off of slotgun
im adding in slotgun heros right now
heck yeah
hoping to finish by steam next fest on monday
Do they have unique abilities or different starting decks?
Broken
@brittle hornet would it work better for you if we hopped in VC to discuss and go over architecture? Or we want to talk it through.. and each potentially work on a diagram?
nah lets do it
who? what? when? huh?
@brittle hornet have 10-15 mins to hop in VC real quick to go over it? Or not tonight?
sure
@brittle hornet alright, the refactor is done. Tested to make sure everything works. Removed all Driver classes and updated Battler to be smarter. We'll probably want to clean up the entire script at some point to organize the different junk. Also don't know how I feel about the new AI script since in current implementation it will pretty much only have static functions.. So idk if we want to just make it a MonoBehavior and make an instance so we don't have to worry about that, but it may not even be an issue
Also a bug that we'll need to address at some point: Aiming works, but the offset of the move is based off of the battler forward instead of the aimer forward, if that makes sense. So if you are standing sideways and shoot Strike Shot, z offset of the attack is 1 or 2, so the attack originates a bit in front of the battler and is a little tricky to aim..
Actually changing the transform that is used from the battler to the aimer just seems to work
Anyway.. all checked in. Gonna look at maybe adding obstacles or new moves or something
Adding framework for Statuses
are you doing it the gamedev experiments way or custom?
I hadn't looked at GameDev Experiments tbh. I'll take a quick look now
So I was definitely not doing it the way GDE does it. I hadn't established a DB class for status yet.. Was just creating the main status constructors for now and putting a new status list on Creatures so you can have multiple statuses at the same time.. Hadn't fully thought through implementation of status effect triggers and stuff just yet
I only skimmed it.. What ideas in particular?
I like the design of the condition dictionary. Idk if we would want our statuses to trigger or whatever.. after the battler turn or at end of round or what
Looking at the Sleep and Paralysis one now. Also cool\
Yes the DB
I'm gonna check in changes I've made. Found a bug where if Cheetah defeats a Gazelle and that Gazelle's turn was next, it will treat the inactive battler as though it is still active.. And show the action layout ui.. Obviously clicking or trying to use any action causes a crash. I imagine issue is caused bc of race condition with events, or some other weirdness happening in BattleManager...
Implemented MP stuff and only allowing one attack per turn by the player
It all works except for that one bug, as far as I can tell
Started on status and StatusDB as well
Though Condition may ultimately be a better name for it..
Okay, took a nice break. Back on the grind. If you're free for a few minutes and want to go over what was done and discuss next steps, just lmk. Probably going to try fleshing out moves and stuff a bit more
oof
I 100% think the bug I mentioned up above is a race condition issue
I need help with unity coroutines, pls
I have no idea how to fix it. brain hurt juice is affecting me
based on the debug log, it looks like loading layout ui and removing the battler from the active battlers is happening simultaneously, but the layout stuff technically triggers first
i have an idea
I think I fixed it
I'm HOPING it does not become a logistical nightmare later, but I think it logically makes sense and fixes this weird bug
Alright, I checked it in. It's a two-liner in BattleManager in BattlerDefeated func
Lol great news
Why is default cheetah level 12 ๐ฉ
No wonder it's so difficult to defeat with a level 3 and 4 Gazelle.. lol
Looking at the code, I'll be frank.. idk how it's setting the level to 12 unless there's something setting the xp to 2000 for some reason
Oh, wait
It's in the prefab. Set to 10 but the 2000 XP bumps it to 12 on startup
Bumped it down to level 7. Cheetah's stats pretty garbo, but it feels more even in a 1v1 now
gonna try and sleep now.. hopefully through the storm.. hopefully no issues.
lmk if there are any developments or if there's anything crazy/bad about what I checked in today ๐ฌ ๐ซจ
Will do. Good luck on hurricane
Can't sleep. Stress eating. If you get a chance to take a look tonightโno problem if notโplease lmk top 3 things you think should be worked on next.. I started on Status and Obstacles but didn't get very far. Was kind of putzing around after the refactor
- battlers stopping when they reach close enough to their destination
- something for the player to do after summoning everyone
- run from battle?
- gamemanger pulling in other battlers
- a battle boundary when the fight starts
Okay. Those are good options.
- For this one, is this for AI battlers?
- (3) I think currently encountering a mon removes it from the overworld. If you run, should it stay gone, or reenter the overworld?
- (5)Pairing this with #3, should we make running an auto thing when you leave the battle boundary? You get to it and it gives you the option to run? Something else?
These don't need to all be answered now, but first things that came to mind
Checked in something super simple for number 1 here.
Didn't make it much smarter, but made the AI slightly better in that it will stop attempting to move if it meets two conditions:
- It's within its base attack range
- It's looking in the general direction of its target
If we are okay with enemies only ever using one move. If we gave them access to any moves they learn from level up, we'll have to make AI significantly smarter. Or at least a decent amount smarter
But that can be a future thing
I'll either take a look at number two next (more things for player to do after summoning) and maybe figure out how to prevent summoning everyone in one turn and summoning more than 2 mons..
For other things player can do, you think thinking spells/buffs or something? Or items? Or curveball: capture, lol
I think capture would be cool
But also maybe buffs
Pokemon buffs are usually not very noticable, so we may have to tweak the values
Okay. Buffs and debuffs will require putting in that framework since rn it's strictly base stat calcs. No problem tho
I'm tempted to leverage status for buffs/debuffs
Give them turn limits
Yeah I agree
yes
i think stay gone. we can have mob spawners later
i think that could be interesting, what does baldurs gate do?
To my knowledge if you run from combat the creature reenters the world as an interactable entity again. Given this is based on Pokemon more than BG3, we can take creative liberties. Like running from trainers is probably a no-no.. And running from certain mons may result in them re-entering the overworld? Like "legendaries" or special encounters?
Took a nice midday break. Back on the grind.. @brittle hornet have background music recommendations? I'm not picky
I meant to listen to while working, lol
I ended up going with Sonic Adventure 2 Battle ost
I use this
All Dance with the Dead music and merch available here: https://dancewiththedead.bandcamp.com
Track list:
00:00 - March of the Dead (Intro feat. John Carpenter & Cody Carpenter)
2:01 - Firebird
5:35 - Hex
9:15 - Sledge
12:40 - Kiss of the Creature
16:25 - Wyrm of Doom
20:46 - Start the Thaw
24:58 - I'm Your Passenger
28:55 - Nebula
34:33 - A New...
I'll take a listen shortly ๐
I think I almost have "only send out one mon per turn" setup
Okay, checked in change so can only send out 1 mon per turn. Overhaul to allow switching and to limit number of active mons may be what I do next.. before starting on other player actions
Lol
Lmk if/when you want to have a mini "scrum" to go over stuff. I'm gonna keep chipping away
xD
I probably can tonight
jer is not available tonight haha
so i might catch up on slotgun
fair enough, just lmk ๐
QQ: Is there an easy way to change out battler prefab lod stuff? Like to make another battler prefab to test mor monsters
we could make another prefab parent that just doesnt have a model
That probably works. Right now it's just a little tedious - new prefab using the model, drag the Battler prefab thingy to it, and put dependencies on the new battler prefab, like Battler component
We could also potentially do it all with code.. But that seems like a lot of work
yea, we could put it in the scriptable object
it would help to have design pillars at least
unless we want to just explore technical side a bit longer
im a fan of free form dev as long as it feels right then stepping back
I'm... indifferent, I think
Checked in a couple new mons and attacks. Nothing fancy yet... Attack stuff probably gonna need a lot of work to do stuff we've discussed, like creating objects, creating lingering areas of effect, and setting status.
@brittle hornet ngl i feel myself losing steam. Maybe this was too big a first project in Unity ๐ฉ
This is not an "I'm giving up".. Just recognizing it'll take more discipline to pursue given how long it will take
yea it is a big one
i think focusing on the battle engine as a prototype is all that we have to do for it to be succesful
dont worry about committing to the entire game
it might help to focus on one specific experience and see if we can make that happen
like
thats why i was kinda talking about pillars
like
maybe the experience is just a straight map with a boss at the bottom
and 10 moves to choose from to kill him with
and like 3 enemies in the build up to him
idk
it depends on if we want to cut cut cut to get something working
like you could literally just have 3 fights and a boss, no overworld
maybe im going to far already
we can cut cut cut later
for now we should think of like 3 words and/or concepts we want the game to have
and then figure out what we need to add to get there, and what is not actually required to get there, and just cut everything else
Okay. I like that idea.
So based on that design.. maybe it could go:
fight -> reward (chest with and item or something) -> fight -> reward -> fight -> reward + heal -> boss (trainer with multiple mons they can send out)
And the fights are maybe against wild mons.. that you can choose to fight for xp, fight to try and capture to add to your team for final fight, or run from to avoid losing hp (at the expense of no levels/xp or new member)
so then the question is, what do we absolutely have to have in the battles for them to be our idea and fun
i know we model after baldurs gate in a way
are those fights fun because of the freedom of option?
So basic battling and xp gain is covered.. We can make mons relatively easily, same with moves.. Would be nice to add some diversity in movesets, but not 100% required since we can kinda control usage of moves via MP
strategically outsmarting your oppenent?
choosing the right move in the right situation?
creating a plan and executing it perfectly
because they are flashy?
I think it's a combo. It boils down to strategy, but the freedom to do a large number of things definitely helps
so then moves are probably important to us
Yeah
like having a lot of moves
and then making the enemies behave somewhat randomly, so you can have a reason to use different moves
Right
if the enemies all behave as they do now, there will be 1 simple and boring strategy to beat them
so we need to somehow get randomness
preferably for cheap
that motivates us to use other moves
i think
maybe there is another way to get the player to use a lot of moves
like
maybe the moves chain together somehow
or reusing a move weakens it
So like staling in smash bros
im just thinking, if we want one of the main draw of battles to be you have this big set of moves, you need to have a reason to use them all
Let's approach this from a slightly different angle maybe
ok
Similar
But different
So let's say we start the player with 2 mons, one that has mostly physical moves, one that has mostly ranged moves. The first enemy they fight maybe has a move that lets them "blink" to other parts of the battle area or something. Or maybe it has a status move that causes poison guaranteed? Idk
these kind of specifics are good
I think maybe we encourage using diverse moves by making the different fights almost like little "puzzles"
Like the blink ability really helps in chasing down the enemy on the second fight, or the second battler has super high defense that the poison damages through
i do think it would also be good to have your characters have setups and payoffs with each other
so like one player can pull aggro and one can do big dam
or one can buff the other
or one can trap the enemy for 1 turn and the other hit it
that kinda lends to puzzley things too
like
i need to position them both and use the right moves to get the payoff
ok, so we have "lots of moves" and "puzzly fights"
Lol
Yeah
I think establishing the moves we are interested in implementing would help us determine what puzzles we want to make.. or maybe we decide on the puzzles then make the moves?
I just know that moves will need an overhaul
Move that pushes the target awayMove that pulls the target closer- Move that traps the target and prevents them from moving for X turns
Move that sets an area of effect on the ground for X turns that heals mons in it that end their turn thereMove that sets and area of effect on the ground for X turns that halves mon speed when they move through it- Move that applies atk buff to a mon
- Move that applies atk debuff to a mon
more..?
i think thats solid
the push and pull is interesting
especially if we have aoe moves, positioning the enemies could be cool
sorry, i had to go deal with a plumbing issue in the kitchen
xD
No worries
I think push and pull should be relatively easy to implement if we just give the moves a new component that applies an impulse, maybe? I'll take a look today to see what the diff might be
@brittle hornet simply attempting to add a force does not appear to be working.. don't know if navagent conflicts with AddForce on Rigidbody, or if I'm applying force incorrectly (I tried changing Rigidbody to Kinematic, for what that's worth), or what. I can check in what I have if you want to take a look.. It doesn't break anything.
Oh wait
It might be the navagent
We probably have to turn some things off to let the force work
I think I almost have something that could be considered usable
Okay, checked in KnockbackSource. Setup what felt like decent mass and drag for the different creatures we currently have.
Hydro Splurge (move on Sea Lion) pushes enemies away now.
Strike Shot (Gazelle) pulls enemies towards you now.
I love it
It's not very clean, but checking in an almost okay version.. Of an AOE effect for healing. It's not healing just yet.. Something wrong with its triggers for some reason.
Alright, created a not-very-scalable version of an AOE field effect and implemented a Healing Circle attack that you can use to spawn a healing circle that will heal you by 1/8 of your max HP if you end your turn in it.
It's checked in
Nice
Jer and I are going back into chat soon
For the marathon
We took a lunch break
Okay. Added a slowing circle attack as well that doubles rate at which distance walked by a battler goes up when they walk through it. It's very easy to bully Cheetah now if you combine the slow circle from Hog with the pushback projectile from Sea Lion
this is a good one for us
The title refers to a method I use often when thinking up ideas for a new game. I break down the key points, mull them over, then try to see if I can't think of anything better or more innovative.
This is where daily game research really comes in handy.
Okay, I'll take a look. Took a break for nowโbuffs and debuffs and "paralyzed/stopped" all probably weigh on the Status stuff which I'm putting off ๐ ๐ซจ
its about using other games to develop your ideas
which i htink we are 100% doing with pokemon and baldurs gate
Yeehaw!
What about Pinball x Tower Defense?
Sorry, realize that's off topic, but the idea came to me while driving home from Publix
Fishball
It was voice controlled
Oh no
I had an idea for a fishing game not too long ago.. where different lures would be associated with different mini games.. So you would cast a line, and different lures can catch different fish, and you have to win the mini game or whatever to catch the fish. So like one mini game could be a 2d fighter associated with the Brawlure, and your bait would have to defeat the fish on the line. Working title was The Ultimate Fishing Mini Game Fishing Game
But it was going to be.. probably a big game. Though working on one or two small minigames at a time made it seem almost feasible
Battlure - your bait or bagged fish fight the hooked fish in an old-school gen 2 pokemon battle-type fight
Gamblure - Gotta win in poker or blackjack or something (or Go Fish, kek), or maybe it's just slots/roulette and based on how much you cash out you get a specific fish
Allure - Dating mini game with a fish whose heart you are trying to catch
Cutlure - Scyther/Pinsir cutting minigame from Pokemon Stadium 2 but instead of logs it's fish or something idk
The list goes on
Okay.. Assuming I have time tomorrow, I will work on Status stuff and try to setup an Atk Buff, Matk Buff, and Stun status to test.
After that I think would be improved AI... And maybe after that setting up basic trainers with mons they can send out.
Might be worth considering using a true outline shader over the ground highlight selector obj since it falls more in line with BG3, and it could be useful to know character locations through walls: https://ameye.dev/notes/rendering-outlines/
Specifically this one, probably: https://bgolus.medium.com/the-quest-for-very-wide-outlines-ba82ed442cd9
i tried to do this in monster path so i could make rods hidden by objects
but i needed to be in the HD render pipeline
i wonder if this requires that too
ill have to watch
Unrelated, but I was giving the demo a bit of thought yesterday.. the straightaway with 3 mon fights into a "boss".. And what if one of the benefits to only fighting and not catching new mons is that the Sea Lion (part of starting party) will gain enough XP to level up a time or 2 and evolve into the Walrus if used in each of the fights leading up to the boss? Idk if we care enough to change the walrus's texture to be bluish like the sea lion, but just a thought.
Also something that came under consideration... was instead of learning set moves at certain levels.. to have a skill tree that the player can spec skill points into (each creature gains at least 1 skill point each time it levels up) and the skills can teach new moves, or maybe they also give stat buffs or something, idk. Though that might not fit in scope for the proto
I imported SerializedDictionary already. You can see it in either the CreatureBase or Creature, I forget.. Idea was to pair level with learnable move, but if we went with a skill tree/skill point system to unlock things, that might not be needed
yea i noticed that
its smart
ive written custom solutions to that in the past
_>
5 looks op as well
another one ive used before because it lets you call functions on demand
is
quantum console
Ooo, that one's neat
That's very nifty. Granted, a part of me just likes to work out the UI since i need it anyway.. But useful nonetheless
@brittle hornet apparently Unity 6 has officially released
Not sure I'll have time tomorrow to get back to this, but Tuesday for sure I can put a couple hours in
Status is next, I think. Has an idea to add a variable to Status (bool isStacking or something) where if true, the status would have its active number of rounds updated if that status would be applied when the status is already applied.
So if burned, burn has 2 rounds left, and burn would be applied again, then the number of burn rounds increases by however many rounds the attack that was used should increase/add, if that makes sense
I like that
I am traveling for work this week, so again im not doing anything >_>
I made no progress yesterday. Hoping to actually make a little headway today, but Rivals 2 is scheduled to release around noon for me, so we'll see
Nothing super notable. Lobbies maybe seem a bit more stable so the game doesn't crash on match start?
Aside from that, nothing I've really noticed
just pushed it in the new version
no changes
the battle system is way better
with the moves you added
i think we just gotta fix some usability things
like rotating in place quicker, not pushing other entitities, etc
then it will be much more of a shallow vertical slice of battle
Okay. That shouldn't be too difficult. I think in addition to statuses, I really want to add a targeting feature so you can cast a spell/attack on a specific location (like the healing circle) instead of it just spawning in front of you or on top of you
i just pushed movement tweaks
if you are within 1 unit of them you dont move, only rotate to face them if you click to move
the rotation feels way better than the built in navmesh rotation
so maybe we should always handle rotation....
xD
a lot of magic numbers though.....