Skip to content
View in the app

A better way to browse. Learn more.

moosecatSoft

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Oafkad

Seraphim
  • Joined

  • Last visited

Everything posted by Oafkad

  1. Summaries will be coming up in later videos. Just trying to catch up.
  2. I'll start doing actual summaries or scripts in the future. Just want to catch up on these in general on the forums.
  3. When we think about a workout plan we've got two different sets of information that are carrying alongside one another at the same time. The first is the immutable data of the plan itself. A plan, as noted prior, will have a series of workouts, those workouts will contain exercises, those exercises will contain sets, and those sets will contain metrics. But here's the thing, for most of these steps we have user configurable data that wouldn't be immutable. A workout plan has a custom name. The workouts consist of exercises yes, but each of those exercises will have metrics saved when the user completes them. We need this because without data tracking we'll struggle to...track data. We don't want to include our user configurable data in ScriptableObjects generally because ScriptableObjects tend to be stickier. By that I mean they'll end up holding onto data a bit like a singleton, or any static reference. They'll even hold onto data in between sessions regardless of what scene you jump to. In some cases this is rad as hell, but in other cases it can be really problematic. Additionally when you want to save data you can't actually save an SO straight to Odin's system. It gets...upset would be putting it lightly. Just don't do it. We'll use my save and loading interface from the other Moosecat projects, I've already tested this and we are gucci. Ok, cool, Oaf, but when you aren't busy abusing the comma can you tell me what the problem is? Well, like so many things in life. Words are hard, I'm trying to think of a good naming convention for these two environments to keep them nice and clean. I think I've come to the following conclusion. Literally as I'm writing this to you, so it might be trash. We'll be learning together. Workout Plans, Workouts, Exercises, Sets, and Metrics will all be the conventional DatumNoun system. So DatumWorkoutPlan, DatumWorkout, DatumExercise, and so on. Then for all of the Savable data, we'll go with SavableWorkoutPlan, SavableWorkout, and so on. Also, how weird is the word "Savable?" I really feel like English shouldn't have cut the E out of that. It really messes with my Synesthesia. This is a minor refactor. I think once this is done I'll be able to start on the Workout Plan GUI. As with everything else I'm just doing something that "works" but isn't the final setup. Honestly we don't know how much data we want to make configurable. Because of that there isn't much I could do now that WOULDN'T be a waste of time. Alright, I suppose I better get back to it.
  4. Alright! You might not know, I forget if I mentioned it, but I've slightly pivoted for a few weeks. I was using the RP Hypertrophy app and my subscription ran out. To my great surprise I tried to get in to see what my prior workouts had been and I was completely locked out. I was pretty livid and naturally this spurned me on to create my own fitness app. The purposes of this first post, before I create a section for this is to discuss where we sit so far. Base Data laid down for 277 exercises. Exercises are broken up into their primary and secondary muscle groups. You can quickly filter and find the ones you want to do. The IO structure, I believe, is completed. Now I need to build the UI to actually interact with it. With this I'll have a VERY rudimentary workout system where I can track workouts. What I haven't created are the workout plans. Think of it this way. A Workout is composed of Exercises, Exercises are composed of sets, and sets are composed of reps/weight or time/weight. All of this is contained within a workout plan. So I'll need to work on that next after this. Once this is working for me I'll see if I can get a WebGL build of it running on the website. Then you can try it out for free and see what I'm missing! Eventually it'll be an apk and...whatever the hell iOS uses on their app store. I've got a few class names that I regret at this point but I'll see about fixing those in a refactor once the whole thing is working. Basically there is a subtle distinction between an immutable ExerciseSheet, and a modifiable Exercise. Unfortunately I had already called the former "Exercise" so I called the latter "Exercise Stats". Not a huge fan, but it works for now.
  5. I've been battling with the dialogue system for a while here. I have repeatedly overthought the problem. So, thinking I need one less headache I bought a dialogue package off the store. I used it for a bit and realized it had way more than I'll ever need or want to use. I'm trying to enjoy myself developing and don't want to spend a bunch of time learning someone else's system. I'm sure it is great, I'm not going to spend this update complaining about it. Instead I want to talk about what I've got setup so far! We now have a dialogue system that can handle branching narratives. It also supports conditions for displaying information with a fallback message. So if you are expected to collect say 10 apples and you only have 9, it'll display the message telling you that you are shy some resources. This does make me realize I'll want to figure out something for things like showing how many items remain in a response message. But perhaps we just won't do that. Not everything needs to be dynamic. I'll keep it in the back of my mind though. talky_example_half_frames.webm I haven't hooked it up yet, but we'll have support for multiple possible messages too. This is needed for quests or situations where you have a few incomplete conversations to have with an NPC. What I haven't worked out is having truly random visitors that would have their own random dialogue. But I'm also thinking I'd rather craft each of the visitors that can come. Keeping this personal is a much better path to take. Tomorrow likely I'll test out the fallbacks and then I'll look into doing a few fun conditionals for the sign. This is our debug buddy and it would be nice to see how a Dr. feels about apples.
  6. I forget if I mentioned this in my last update but I've finally got the project in Unity 6. This is my last planned update for the game engine. At this point I have everything I want and really any further updates are just me looking for excuses to delay work. As of today I've got a few weeks off from work and I want to make the most of it. The biggest challenge with these large delays is that you have to piece together where you were prior. I'm noticing that a past incarnation of me put together a system for finding a "valid" random point for the Moosecats. I don't think it was the best choice as designed. But it will get us to where we need to be. I just needed to work through it and see what was updating it. I found that StateActionPopulateWorldPositionDataAction is updating it. The name has some redundancy in there that I want to fix. A buddy at work would have my ass if he saw me writing Action twice in the same class name. The good news is I just checked all my other state actions and this was the only one where I did that. Phew! Easy enough to rename. Find a Journey you Love and Love the Journey This is something that has been on my mind recently because I work out a fair bit. Not as much as I'd like to but as much as my mind will allow. But I think I know how I can enjoy my life more. Perhaps it'll help you too, I'm not sure. Basically at least in the US we've become absolutely obsessed with the destination. Get rich quick, get strong quickly, lose 10 pounds in 10 days. All sorts of promises that tell us we can skip the journey and get directly to the destination, if only we trust them. Nearly all of these things are scams, enough to just throw them all into the same pot. But how do you not fall for them? It's one thing to be vigilant and try to stay ahead of the game but we are all busy folks. So I propose instead to find a journey that will get you to the destination you desire that you think you'll love. From that moment your only job is to love the journey you are on. When I work out I'm not thinking about how many more days until I'm buff. I just glance in the mirror from time to time and notice my arms are bigger or my chest is bigger. I could be stressing that I'm not Bane after a few years, but realistically what am I rushing for? It's looking like none of us are getting out of this alive, so its best that we find the most joy in what we are doing. And if the journey you are on is not one that you love, at least take some time to see if there's a way to change that. Because as long as you love the journey you will be basically immune to all scams. Because why would you want to skip the journey if you love it? And where is the big money maker in sensible solutions? This I think is the crux of not falling into despair about these plagiarism bots that are being built. Just keep in mind they are selling a destination. They want people to skip picking up skills, to skip learning, and to become dependent on the brute force of modern silicon. You can't fail if you love what you are doing. I'll see if I can articulate this better in the future. But this is where my head is at currently. I'm gonna get back to this little journey with Moosecats. Maybe we'll get back into streams soon.
  7. The Front Today was a pretty slow day to get started. But once I got rolling it felt like a lot of things were coming together. Each new game that I start is saved in a separate slot. I've somewhat arbitrarily only given you 10,000 to work with. This may eventually change to just be however many your PC can manage. Just keep in mind that the UI I'll be designing might not be the most convenient when you've got far too many games running. Realistically I would think most people will only have one given all the collectibles and progress folks will have access to. I've also updated the artifact system so that my serialization updates from yesterday...or two days ago...is even more efficient and convenient to use. This is good because a system really needs to be convenient or I'm likely to nuke it. A system that is both convenient AND good is always a nice surprise. So this means that the next step we need to take is having continue work. Once I can click on any of my prior saves and load into them I'll know that I'm in a pretty good place. Obviously things like loading from Save A to Save D while actively in game might be a little messy. What we may end up doing is unloading the game scene, taking the player to some kind of loading scene, and then have it load up the same way each time. I'm sure I'll miss something leading to data persisting between them, but if it isn't super bad that'll be fine. Those kind of goofs are fun for speed runs or challenge runs. The Back I'm a few days removed from my last work out but it was a real beast! Stair Calves - Two Sets - Body Weight @ 31 Reps Barbell Squat - Two Sets - 150 lbs @ 7 Reps Seated Cable Row - Three Sets - 100 lbs @ 13 Reps Bench Press - Three Sets - 105lbs @ 6 Reps Barbell Curl - Two Sets - 55lbs @ 17 and 14 Reps Respectively. Cable Triceps Pushdown (Rope) - 50lbs @ 11 Reps, and 40lbs @ 7 Reps respectively. My biggest mistake here was those Cable Triceps, the list of exercises above IS the ideal order but I didn't do it in order. I misread my sheet and did 50 lb pushdowns which, as you might guess, is quite hard! It completely gassed my arms and when I double checked I realized my mistake. But at that point I still had curls and press to go. Talk about a grind. I managed it but only with a lot of grunting and perhaps a bit of praying to the iron gods. I'm pretty happy overall with my performance and I really enjoy working out. I'll see if I can manage some more Phitness & Philosophy videos this year. If I can plan them properly they might not be the worst amount of effort. Perhaps I should just do more unedited long form videos. Its not like I'm trying to become the next big thing on YT. So the success, or lack thereof, really shouldn't be a limiting factor in what I want to do. Just a matter of keeping a positive mindset and approaching things in a healthy way. Lets see if I can muster that.
  8. I think going forward on these updates I'm going to split them into two sections. Think of it like a mullet, we'll have business in the front, for anyone that only cares about that, and personal in the back where its just the things going on in my life. If you don't care about one side, don't read it, and if you don't care about either side then you've just saved yourself some time! The Front It took a strange amount of heavy thinking but I've managed to update the save system to be a lot cleaner! Now we have the concept of a UtilitySaveData class, utilities are classes that are neither SOs or Monobehaviors and will handle various needs of other classes. This is hardly revolutionary but like all my other naming structures the important thing is having some level of consistency. It is the fact that these are neither MB nor SO that makes them a "utility" class. And that mentality in the future will help me manage what is what easily without a lot of hovering. These new classes can be utilized as easily as: var USD = new UtilitySaveData(_keyArtifact.Value, _saveIndexArtifact.Value, _objectToSave); USD.SaveState(); and var USD = new UtilitySaveData(_keyArtifact.Value, _saveIndexArtifact.Value, _objectToLoad); USD.LoadState(); Simply generate a copy of the USD and give it a go! This will read from shared artifacts between the behaviors that are creating these classes and that results in us never losing sync between our savers and loaders. It also means they don't have to be one monolithic class. You might say "Well, Oafkad, why is your Utility a monolithic class?" To that I say, its been a long month. But also its still a pretty defined operation that doesn't require a lot of different events and communications with the outside world. The same is not true of the behaviors that are saving and loading. Those have a lot of moving parts outside of themselves and I want them to be simple and contained. Plus I think this utility is darn near feature complete for now. We'll see as I use it! We've got our savers and loaders setup in the scene for the main menu. So the next time I'm developing I'll need to hook those up to their neighbors. The loading system will be what determines if continue is clickable (and indeed what you see after you click it). The saving will be called by the player submission request, and following that save succeeding we'll transfer into the introduction of the game. It's been a long and slow road for a month or two here, but I can see some level of progress on the horizon. The Back I'm a little bummed that I don't have a lot of mental energy lately. Which itself kind of feeds back into the problem where you are constantly in recovery mode. This does mean that doing work outside of work gets harder and harder. That's especially bad because then I end up feeling more tightly bound to work as that's the source of my income, and thus the few freedoms you can manage as an adult. But the more that happens then the harder it is to shut off from work and the cycle repeats. I'm hoping that as I get back into fitness this will become less and less of a problem. I can already tell that the muscle soreness from my last routine has given me a bit more pep in my mental step. That might sound weird, I know a lot of people don't like to be sore, but I generally like it when I know why it happened. Soreness tells me that I really gave it my all with whatever I was doing. And yet I hate headaches, so perhaps not all soreness is equal. I'm going to probably get back into posting on my YT channel soon. Not because I expect anyone to watch but because that also makes me feel better. We'll have raw videos of gameplay, development, and fitness. Like these front and back posts, if any of it appeals to you, please check it out, but if none of it does that's fine too. The internet is a dark and scary place, and if I'm not able to give you a bit of levity then that's fine. We all gotta find what works for us. Maybe after tomorrows workout I'll include what I did in the backend of the update for the day.
  9. Welp, you can officially click new game, pick a name, a birthday, and then move into the main game proper. This is great but it does raise a few things that I need to overhaul. The first is our saving and loading system. Currently it is using interfaces in a way that should literally be impossible in C#, how I got it to work I'm uncertain. But it is impossible to breakpoint which is very annoying. This week we will update the saving and loading such that it is done properly and can be properly breakpointed. This will be very helpful and part of this will be creating checks for whether or not the loading data exists. You might be saying "Uh...how do you load at the moment if you don't know the state of the save data?" Well I DO know, but it is loaded immediately after checking. This was perfectly fine for a few months of development but now I need to make it more robust. We will check if save data exists on open, if it does then turn on the continue button. From there you can select one of the save data that currently exists. And ah hah! That's another thing we need to validate, saving to different index values. Currently it only does a rolling save, so it'll save to spot 1, then 2, then 3, and roll around after it hits the limit. But I want you to be able to pick a slot and always save to that slot until you pick a new one. Perhaps with "-1" being our autosave slot. We'll see. Overall though, making some core progress. I'll also talk about how I solved the "state to state" communications in an upcoming post. It isn't super clever but it was a refreshing moment when I saw it work on the first try.
  10. So I'm realizing today that I need to make the primary state machine of our system a system that exists outside of the primary scenes. It hit me like a ton of bricks when I was clicking on one of my main menu buttons and...nothing was happening. Well shoot, I thought, that's definitely unexpected! I've been using this system for years, how could it be failing now? Well, when a tree falls in the wood and nobody has registered a listener, does it raise an event? The answer, at least in my system, is no. This isn't an insurmountable problem. What I can do tomorrow is create a class that I add to my fresh scenes, this will check to see if we've instantiated the state machine yet (and placed it in the do not destroy scene). Once this has happened we'll have our system setup and ready to rock for all other places. This is a bit different from a singleton in that we won't actually have any static references to it. This is simply a system that exists in the ether and communicates back and forth with the rest of our game world through events and our scriptable objects. This is an exciting moment for me because it gives me a very direct thing to solve and given how fatigued I've been lately that'll be a welcome adventure! Once that is done we'll move onto the next game action I need which is spawning the player at a particular location and rotation. We'll need this for the introduction sequence.
  11. While today was slow goings, I can happily say that I've started doing work again. The last few weeks of my life were extremely hectic with occasional workdays literally going from 8 in the morning until midnight. My brain and body were both drained, by the end of it I was just completely exhausted. I knew if I tried to work on the project at the same time that I'd not get anything even close to quality as a result. So I took some time off, focused on getting work caught up and out of my way. With today being my first return back. Unfortunately coming off of going to bed at 1AM did not help for the return. But I've had a few days off from work and I'm feeling a lot better. Currently working through the slow process of improving our UI flow for new games. A few of the classes I made before I left weren't quite up to my ever progressing standards. They've been tweaked a smidge and now I'll get even more utility out of them. Also I'm hoping to start posting videos of some kind more often going forward. I know this will remain my own little slice of the world off in the middle of nowhere but might as well deck it out with nice things. If nothing else it gives me interesting logs to look back on in ten to twenty years. Hopefully I will be more positively surprised by them than I was when I saw my teenage ramblings as a twenty something. Some of it was genuinely interesting but also some of it was pretty wacky. Our own many evolutions over time are very interesting to me. So many different people in a single body. But not like that, unless you are into that, I am not one to judge.
  12. Getting back on the train, not by a lot, but enough. This week was harder on me mentally than I realized it would be. I think I'm going to move this section from scratch notes to some kind of daily devlog series. Where I'll either talk about the latest updates of the game or what I'm doing and how its influencing me. A big part of this is that those influences impact the design of the game, they have to. The only time that a game is unchanged by the experiences of the creators is when the process of creating is not driven by the creators. When a game is a vector for profit over experience, that's when it will live on regardless of the internal conflicts, the ups and downs, that shape the people that shape the game. This homogeneity, this safety, I think is what makes so many series become stale. They become a product and that product has a "thing". It does X, and X is what defines it. Because X was found to make the most money and thus is the best thing to do. So many things now are designed with this goal in mind and I think we've all seen the result. How many things actually come out anymore, in any genre of experience, that people find exciting? I know for me the answer is quite slim. I spend a lot of my time just shrugging when news breaks. Large Language Models, new games, new graphics cards, new cars, its almost all kind of bland. A lot of it is solving the wrong problems, or providing the same solutions we've seen for my entire life (and beyond). But I'm getting a bit off topic. I need to know my limits, and trying to do things daily for this just won't jive with work occasionally being out of its mind. And when work goes off I need to ask myself if I need a break. Do I need to play games, to stream, to read, what would help me feel whole and invigorated. That way the time I'm giving to the project is happy and healthy. I've got the new user screen saving your name, your birth month, and birth day. I will need to do some adjustments to save the creation date since this will be used for random seed generation in some manner (keep things interesting). Once this is hooked up the next step will be the introduction. I suspect at the start this will be you standing at the end of the manor plot. I'll place things out with cubes for now to get a "feel" for what we want. I'm a bit excited to do some genuine world building. We'll see how long it takes and how much energy I've got. The best case and worst case scenarios are not too far off from one another. You either live long enough to accomplish your goals or you end up dying before you do and it isn't your problem anymore.
  13. Progress ticks on, the sands of time flowing down through the thin neck of inevitability. We've now got a simple object for handling dates, the primary use will be for birthdays. This is because DateTime in the real world and the date and time of this world don't actually line up. We could probably link them up in some way but I think this is the better path. The next thing I need to do is start hooking up the Handler for the Character Creation page. This will hook into a copy of the Datum Player class and once finished, save it to our open slots. But not for tonight, tonight I get some rest and hope I don't burn the entirety of my brain at work.
  14. Alright, names are pending possible changes in the future but we've got the following for the year: Scionur, Ghein, Auroht, Calia, Hidroen, Aten, Gefain, Phoen, Tartarune, Dimine, Chaine, Kalmine, and Thanine. Each month is 30 days long, which means we have a few more days than normal. Like many things with the project this will help make things feel just a little bit off, a little bit wrong. Sorry to say I lost some work from yesterday. But given that we didn't even have an update yesterday I think that was just how it works out.
  15. Obviously not mine, that's for a bit now. But I've started hooking up the player creation section. I know we need to know your name and we'll want to know your Birthday for a yearly gift in the game. This is all saved locally obviously like days of old. If we ever have online support that'll be fully optional and opt-in, not opt-out. I got no desire to know anything about anyone besides what they would like me to know. One fun thing I want to do hearkens back to one of my favorite games of all time, Ogre Battle 64. We are going to convert your real world Birthday into the day and month of the in universe calendar. I don't have that list with me at the moment but in my binder I've got the entire calendar written out. It is very similar to the regular calendar but something I did was have every single month be 30 days. This leaves us with 12 months still, but 5 fewer days per year. A nice thing about that is that it makes a lot of game fun a lot easier to deal with. Additionally it ties some of my older work in with the newer work which is always a delight. I have no idea what this upcoming week holds. It will be extremely busy for me at work I think. So perhaps this will be our "Just do anything, I believe in you." Week, where even tiny updates are still victories. I need to setup the save system so that it saves to slot 1 first, then if you new game with a save in slot 1 it'll save to slot 2, and finally if you have saves in slot 1 and 2 it'll save to slot 3. We could technically have infinite slots, and perhaps that'll be the final version of it. But for now I think 3 will be visually appealing and there should end up being a lot of game. That many simultaneous saves might not really be realistic. THOUGH, you could argue families might each want their own saves. I'll keep that in mind.
  16. Well, I've worked a few 10 to 12 hour days and today I was rebuilding my office now that the remodel is finished. I'm sorry to say that means I haven't gotten to do anything with Moosecats this weekend. The plan tomorrow is to finish some more work in the morning and then spend the afternoon updating the state transitions for the new game flow. Obviously we won't have any animations but the hope is that we can start blocking out the experience so that later we can have animations slotted in nice and easy. The upside to a job is the financial security, can't deny that, the downside is sometimes it asks a lot of you. And the older I get the less of me I feel like I've got. No worries though, the vision is there and the future of the project hasn't hit a wall yet. So many cool things to do and try. Plus my work solutions today were largely using systems I built and that's always a fun feeling. Seeing things work the way you hope they will and having it all just kind of fall into place. Satisfying for sure. I hope anyone reading this is having a good day, good weekend, and just in general a good life.
  17. As is so often the case, today is less exciting than yesterday. But hopefully getting us ready for a couple nice updates tomorrow. I've got a small bug with my loading order. Basically I need No sooner than I was writing this did I realize where my bug was and how to fix it. We've now got the title screen with the buttons disabled until the player data is loaded. If your player has a name (a requirement of playing) then I know you have a game going and the continue button is enabled, otherwise you only have access to the new game button and the settings button. Upon clicking new game, or continue, we enter into the game state. Obviously this isn't how it will always be, the next thing I need to do is separate out how new game and continue work. So tomorrow I suppose we start on the new game flow. It needs to move to the "new game" state, rather than simply game state. I'll need to think about how I want to work the flow. I suspect it'll involve some...gasp...UI work.
  18. Alrighty, so we've got an artifact setup to point to the title screen handler. This will allow us to modify it through the state machine. The plan, which I should finish up tomorrow, is to have the buttons disabled for now until the player loads. If there IS player data, we'll set new game and interactable to clickable, if there is no player data, we'll only set new game to interactable. Settings does a whole lot of nothing for now, don't have settings to worry about. Upon clicking either new game or continue we will transition into the game state. This will not always be the case. Once the Title Screen state is complete we'll move into the new game experience. Not too bad though, tonight the little bit of time I did have to code went very smooth. Nice change of pace.
  19. I'll be honest, today was rough. Work has a lot that I need to get done and Venus did not have a good day. Poor girl is either stressed or sick, or both. Hopefully she'll be feeling better tomorrow or at least in a couple of days. I don't handle that sort of problem well at all unfortunately. So once my long long work day was over and it was already edging towards 8PM I had to make an executive decision. Will I try and have any fun today or will I just work? I ended up taking the fun route. I needed that, but it wasn't entirely a wash for progress. We've got our developer quality title screen setup. I've got the events hooked into the buttons and now I just need to build a handler for the title screen and work out some preliminary transition into gameplay. Initially we'll just load up the scene you've seen a million times, but I'm going to start working on at least a rudimentary starting experience. What that will look like I haven't yet decided. We'll see I suppose. titlescreen.webm
  20. Alright, at this point I think we very much have the foundational pieces to make our vertical slice game. So what I'll be doing this week is setting up the initial flow of the game. We'll keep going step by step through the process. You know what, I keep doing the "we" thing so I'm just rolling with it while I type this up. Anytime we hit a wall we'll discuss that wall and how we need to overcome it. Be it a little bit of polish on a system, or a missing system I didn't think of, whatever. Over time we'll get closer and closer to the game. Which is an exciting prospect. Once we get to the point where there is something to play, even a small teeny tiny bit, I'll begin putting up builds. Maybe on itch.io, I'm not sure yet. It'll allow us to see the whole thing start to grow. I'm looking forward to seeing more and more of this. Finding little ways we can improve things and figuring out the scale of it all. Initially I plan to do things like use cubes for npcs, or perhaps we will embrace the flatlands feel of our kitties and make all of the NPCs, including the player, flat. I suppose I am playing TTYD now, and it is certainly a fun aesthetic. Once a few of my expenses are paid off this will likely be a good time to start investing in a talented friend to get some art off the ground. And once we've got that slice I already have a couple of sound people in mind for music. It will be interesting to see what the next one hundred days holds for us. Hopefully something neat.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.