Conversations and Dialogue Triggers

You can save the list of character’s UUIDs… but remember that they’re not directly on the dynamic characters, so… you’d likely need to GetComponentInParent the RespawnManager’s IJsonSaveable and use that UUID. Alternatively, you could push the UUID to the EnemyStateMachine when the RespawnManager creates the character, and have the AggroGroup check the EnemyStateMachine for a UUID…
But… there is still a massive race condition to fix… because if the RespawnManager hasn’t done RestoreState() yet, the character may very well not exist in the first place when AggroGroup goes to check restore its’ status…

I have an idea for that fix, but it’s not ready for prime time and will be included in the From the Ground Up rewrite of the Saving System which is currently in progress.

I actually have an assignment for you… and it deals with one of the issues we dealt with all the way back in the Core Combat course, coupling…

If you’ll recall, in that course, we had a situation where Fighter was calling Mover, but Mover was also calling Fighter… This is known as tight coupling. In this case, neither Fighter or Mover can exist without the other, and this can lead to some interesting bugs if not watched out for…

Your assignment is to go through all of your classes and identify what other classes it depends on or depends on it…
For now, you’re just identifying these issues. Find the classes that have a two way dependency. We may or may not do anything with them, but identifying them may help when starting a production version of the game. (and yes, when I say a production version, I’m meaning starting with a new project and rewriting the code from the ground up, with all of the SOLID principles in mind).

On behalf of me, Boeing and their whistleblower stories (Let’s not get into that, we don’t want to be next) and the sun that aims directly at my eyes (which I dodged today, by staying under the blanket for a little too long), good morning :stuck_out_tongue:

so… if the characters get instantly deleted off their AggroGroup, and potentially get sent to their own AggroGroup on death (until respawn), that doesn’t help at all? It’s not something I’m doing in my code yet, but isn’t that one solution to get them to be somewhere for every aggroGroup to have a piece of data to work with?

I’ll wait for the fix then :smiley:

like… everything? that’ll take a while though, but sure I can I suppose

oh wow… that’s… a big surprise :sweat_smile: (I’ll probably want to get a new laptop for that one though. This one is on the dying end of life) - since we’re just throwing logs into the fire though, can we at the very least throw all the logs in and get the last few concepts I have in mind done as well? This includes:

  • Player Dodging and Parrying State (Parrying is not essential, but it’ll be helpful to be able to… you know… defend yourself in style a little bit)
  • Player Gliding State (and falling force, so if you fall from high points you just might die. That sounds a little like a side quest for me)
  • (I had plans for integrating Parkour down the line, from what I learned from an outside course, but I’ll push that aside for now. When you’re feeling better, we can do our best to create something out of that one)
  • Farming (this will mix the Crafting UI with the Resource Gathering Saving System, with other new elements. This shouldn’t take too long, as we are essentially just instantiating something when we do something, to get some mud to farm at, and then it’s essentially just what Cooking, Smithing and Crafting are doing, just add the fourth condition for farming, and then it’s a game of patience xD. But… it’ll need to be integrated into the saving system too)
  • Guns (because I had plans to introduce a twist for that down the line)
  • NPC Mounting and Dismounting System for Animals, since they got their own life with you too now… I might even allow them to steal animals because why not (and the same goes for the player. Brutally force people off their animals for your own benefit? Why not :stuck_out_tongue:), and at the very least as well, a dodging system… This will be a tricky one to program though, so again it’s a long-term plan

And here’s the biggest sad part: I have totally forgotten what my game is even about, so I need to take a short break and start working on a storyline as well, once all this prototyping is complete

(I’m not sure if I need anything else, but these are all I can think of, for now, along with a few repairs to my own AI NPC Fighting System)

Speaking of revising all classes though, can I, at the very least, assume that whatever the 6 courses (your third person conversion, unity’s 3rd person traversal and the RPG Series) did is clean and just cross-check my individually added code instead? That’ll save a ton of time


Anyway, I just got the money for the Designer Pattern and Git Courses (I purchased both, the designer pattern one is a “Just in case” kinda purchase). Over the next 2 days I’ll spend some time learning what they have to say, so it’s time for me to go get a new notebook again :slight_smile: - I was hoping to at least get my current system done first so I don’t have to think about it down the line (AT THE VERY LEAST, LET’S KEEP IT… MAYBE WE CAN DEVELOP ON IT DOWN THE LINE)

OK so… I am currently going through the Git course (I’m fighting so hard with Source tree, because of the amount of files I just threw in it, and the fact that each time I open it, it freezes… How do I fix this? It’s… well… seriously annoying me to say the least :sweat_smile: , and just right clicking the library file to ignore it quite literally freezes everything, leading to a restart, and the endless loop of not-going-anywhere), and an idea just popped up for my ‘AggroGroup.cs’ saving system problem

Why don’t we use the ‘AggroGroup aggroGroup’ that we’re using in the ‘RespawnManager.cs’ script to check for who belongs where, as it dynamically changes with dialogue as well, according to my setup? AggroGroups are static to the scene, and this way, if someone is supposed to be somewhere, it’ll add him if he’s not, and remove him if he’s not supposed to be there, all done within ‘RespawnManager.cs’. What do you think of this concept? Personally, I’ll give this a test run in the morning

I am 99% sure that this is not the best approach, but it should work, right?

Again, I can’t implement this right now, it’s just food for thought for the time being

Bahaa, you should go through the class with a dummy project like Ben said. There is a gitignore file that will help tremendously. Don’t use the big project until you know what all of the steps are!

yup, I bumped into the ‘.gitignore’ file, but sure… Do I have to erase all what I did to the main project though?

Although Ben said it would be perfectly fine to use my main project… (I’ll be back in a bit)

Ben assumed that you had a normal sized project from one of the courses. To make your huge project manageable you need the gitignore file. The one he has a link to works well in most cases. Just do the class with the little project that Ben uses. Then you can go back and fix your game.

I can’t even get Sourcetree to open a new project… It keeps freezing whenever I open it, literally

Ahh, me and my usual luck I guess

Edit: I got away with opening a new one, and when I was trying to gitignore my new project’s Library folder, I saw a very tempting “all repositories” file. I was tempted to just do it, but I didn’t know if I should or not, so I didn’t

BUT… This won’t be enough to pull it off. My “Assets” folder is HUGE unfortunately. Like, 12+ Gigabytes kinda huge

100 Megabytes just won’t cut it for my project :sweat_smile:

I found this thing though, through the course, and I think it’s a useful tool: https://github.com/github/gitignore/blob/main/Unity.gitignore

That is the file I was talking about. I added a line to mine to exclude my AssetPacks folder. If something tragic happens I will have to download the asset store packs, but I don’t think that would be a problem. It drops the size enough that I don’t have to pay for extra space on github. This would be a problem in a team setting, but since I work alone it is good for now.

I threw in a new ‘.gitignore’ .txt file in my project, it didn’t seem to do anything, so I deleted it… (THE .txt FILE, NOT THE ENTIRE PROJECT)

I only have ONE QUESTION for the time being: How do I SAFELY delete the Repo I created for my project? I want to place it in my Project’s ‘Project Backup’, since it’s only 65 Megabytes in total, for now (I can’t see any other way to backup a 30+ Gigabyte project in there to be fair, unless Brian has a better idea)

Oh, and will making the “Ignore” Library thing in one project, and selecting “All Repositories” a good idea, at least for now?

For a bit of thinking exercises, I just discovered AggroGroup and EnemyStateMachine can’t survive without one another, and it’s not a ‘light’ interaction… They’re kinda married, and that’s just me starting :sweat_smile:

AggroGroup kinda just… uses the class call of “EnemyStateMachine.cs”
and “EnemyStateMachine” relies a lot on the Getter of AggroGroup I created, called “GetAggroGroup()”

If you added a .txt it will not work. It should just be .gitignore with no extension.
The gitignore from the link above is what most people use. It worked well for me.

The 100 Megabyte limit is for the size of the individual files.

If you set up the gitignore properly and exclude Asset Packs, it will work for your project. This is too important to give up on.

OK so… what I did instead was create my own test repo, as a way to test my knowledge, and then copy-pasted the .gitignore file from there to my project, and then replaced its content with the Unity official one

That decreased the file size to a (somewhat, because it still lags, just not as terribly as before) manageable 89,500 files (roughly), from 400,000+ files

So… that’s a plus I guess

Never said I was going to… :sweat_smile:

Make sure the .gitignore is just that .gitignore no other extension, no name before the .
While I strongly recommend starting with a small dummy project to learn, you can work on any project.

Make sure your .gitignore is at the same level as the rest of your project directory, as in the same folder where Assets, Library, Obj, etc is.

I ignore ALL 3rd party assets. They can be replaced easily via the package manager.

1 Like

let me guess, uncomment this line?:

# /[Aa]ssets/AssetStoreTools*

If not, then what’s the line of code for that? Unfortunately all my third party assets are all concealed in their own folders. Do I need to create a folder for them, store them all in there, and use that? If not, what’s the best approach?

That one shouldn’t matter one way or another. It’s something that was very much Unity 4 and 5 if I remember.

In terms of dealing with the folders of assets… I just add each folder manually…

#Explosive Animations
Assets/Explosive*
#Just about everything Synty
Assets/Polygon*
#etc

so… you just write the first name of an asset? OK let’s take an example of an asset I have, like… I don’t know, the Elven Realm maybe?

Do I ignore it using this line:

Assets/PolygonElvenRealm

or this one?:

Assets/Polygon

Just to clarify the confusion, because those asset names are a lot, and I’m still a little baffled

and then there’s like Distand Lands (in the ‘Packages’ folder), the vegetation engine, named BOXOPHOBIC (it was on discount, and I couldn’t say no to that lol), DeepVoice (that’s what it’s called), Easy Build System (that’s how it’s written), etc…

Assets/Polygon* 

will ignore ALL directories that start with Polygon (the * is a wildcard)
So this also ignores
Assets/PolygonKingdoms
Assets/PolygonDungeonRealms
Assets/PolygonFantasyHeroes etc

damn, that Polygon really took the files from 89,000 to 33,000 :stuck_out_tongue: (and yes, lesson learned, don’t forget the asterisk)

how about names with spaces between them, like “Easy Build System” for example? (Edit: Figured it out, just write the name as is)

we went from 400,000+ files to a very respective 2,838 files. Not bad

@Brian_Trotter last question for now, what are your thoughts of this one?

I think you’ve seriously overcomplicated this, to be honest…

Privacy & Terms