Tumgik
#optimization
thefloralmenace · 2 months
Text
This applies to activism but also to the corporate world and regular life: Never underestimate the value of sitting down, analyzing your activities and then optimizing them. Personally, I think the best place to start is with stuff you do on a regularly timed basis, like events that take place monthly, yearly, etc.
I'll give you an example: I was part of an organization in college that did a semesterly event where we did science experiment demos for children. When I initially joined the organization, the days leading up to the event were a little chaotic: The person in charge of outreach would call the school to schedule, research experiments for us to do or try to remember the ones we usually do, make a shopping list, try to recruit people to run the experiments, go all over town getting the supplies together, harangue people into looking up the experiments and the relevant scientific background to make sure we could explain them to the kids, then get everything in the car on the day of the event.
After a couple of rounds of doing this, I got to thinking about how inefficiently we were handling this event, given that we know it's going to happen every semester. So over spring break, I went to the dollar store and got six large baskets and index cards. On each index card, I wrote the name of one of the experiments we commonly do (elephant toothpaste, magic dry erase art, Alkaseltzer lava lamps, etc.). I then wrote the list of ingredients/supplies needed for the experiment on the back of the card so that if you flipped the card from the bottom up, the words would appear right side up. I "laminated" the cards with packing tape and taped one to each basket. They were then labeled on the front, and if you flipped the card up, it told you everything that was supposed to be in the basket. I then looked up the scientific background of each experiment, compiled information with sources, and printed background sheets for each, which I put in sheet protectors. These went in the baskets as well.
When we came back from spring break, our outreach manager gave me the budget, and I went out and did the shopping for each experiment. In past, we had shared common reagents across multiple experiments to be cost efficient, but this time I chose to get duplicate items where necessary (since it was possible with the budget). I put all the supplies needed for each experiment within that experiment's basket, and because I duplicated shared materials, that made the baskets modular - you could pick up one, take it, and be guaranteed to have everything you needed for that experiment in the basket without having to remember to take other baskets (decreasing the mental load).
Suddenly I had streamlined this event from something that stressed out our outreach manager and required a mad dash to look up experiments, make a shopping list, get the supplies, and get people to run the experiments into something that was basically grab-and-go the day of the event. We could just pick up three or four baskets (so that we had experiments to rotate in and out), put them in the car, and go. Even if the people who volunteered to run the experiments didn't have time to research them, they could just read the background sheets in the car.
I also advocated shifting the time for the shopping. I asked if we could find money from elsewhere or double the budget for supplies just this one time so that we could stock for the upcoming event, and then immediately restock afterwards. Why? Because if the time for shopping is shifted so that the responsibility is "buy to replenish" rather than "buy for the event," the shopping becomes lower stress, especially if we can't find something we need. If we shop before the event and can't find Alkaseltzer tablets, we may have to rearrange our entire plan for the demonstrations, but if we shop after the event and can't find them immediately, we have a whole semester to find a source for them. This was especially useful for the elephant toothpaste experiment because we had to order the iodine tablets for it from a water treatment company, and they take two weeks to ship. If we forget to order in time for the event, it's a crisis, but if we order more immediately after the event, they have all the time in the world to get there, and then we're set to just grab-and-go next semester again.
Now this might not seem super important or impactful, but here are the benefits: Our outreach manager was less stressed. Lower stress for the people carrying out the event is enough benefit alone, but additionally, because everyone running the event was less stressed, we were more likely to put on a better quality demonstration for the kids (people are more likely to show up knowing the background, and we're less likely to forget materials). And finally, reducing the stress and effort associated with events saves time - time our organization could use to do additional outreach, increasing our impact.
This kind of analysis isn't glamorous, but as I said, it can maximize the impact of your organization and what it does. This includes activist organizations. Just shifting the time at which the shopping was done for this event completely eliminated supply chain issues. So think about the stuff you do. Think about the timing, what stays the same year to year, what processes can really be done once instead of every time (ex: There was no reason to research the experiments every year - do it once, and reuse the sheets). Also think about creating structure. My baskets were a physical imposition of structure that meant we no longer had to scramble around the building picking up bowls and spoons and common household ingredients. Structure can also be imposed administratively, like delegating responsibilities or digitally, like creating a Google Drive that is organized into folders.
It's this boring stuff that feels like business or administrative busy work that can really help things run smoothly, and if you do this kind of analysis with all your regular events, the time-saving, quality-improving, and stress-reducing benefits start to stack in a big way.
*And of course I acknowledge that there are people out there who struggle with organizational skills in one way or another, so if you can't personally apply this, that's okay. Not everything I suggest works for everybody.
515 notes · View notes
devsgames · 4 months
Text
Game Optimization and Production
I wanted to write a bit of a light primer about optimization and how it relates to game production in the event people just don't know how it works, based on my experience as a dev. I'm by no means an expert in optimization myself, but I've done enough of it on my own titles and planned around it enough at this point to understand the gist of what it comes down to and considerations therein. Spoilers: games being unoptimized are rarely because devs are lazy, and more because games are incredibly hard to make and studios are notoriously cheap.
(As an aside, this was largely prompted by seeing someone complaining about how "modern" game developers are 'lazy' because "they don't remember their N64/Gamecube/Wii/PS2 or PS3 dropping frames". I feel compelled to remind people that 'I don't remember' is often the key part of the "old consoles didn't lag" equation, because early console titles ABSOLUTELY dropped frames and way more frequently and intensely than many modern consoles do. Honestly I'd be willing to bet that big budget games on average have become more stable over time. Honorable mention to this thread of people saying "Oh yeah the N64 is laggy as all hell" :') )
Anywho, here goes!
Optimization
The reason games suffer performance problems isn't because game developers are phoning it in or half-assing it (which is always a bad-faith statement when most devs work in unrealistic deadlines, for barely enough pay, under crunch conditions). Optimization issues like frame drops are often because of factors like ~hardware fragmentation~ and how that relates to the realities of game production.
I think the general public sees "optimization" as "Oh the dev decided to do a lazy implementation of a feature instead of a good one" or "this game has bugs", which is very broad and often very misguided. Optimization is effectively expanding the performance of a game to be performance-acceptable to the maximum amount of people - this can be by various factors that are different for every game and its specific contexts, from lowering shader passes, refactoring scripts, or just plain re-doing work in a more efficient way. Rarely is it just one or two things, and it's informed by many factors which vary wildly between projects.
However, the root cause why any of this is necessary in the first place is something called "Platform Fragmentation".
What Is Fragmentation
"Fragmentation" is the possibility space of variation within hardware being used to run a game. Basically, the likelihood that a user is playing a game on a different hardware than the one you're testing on - if two users are playing your game on different hardware, they are 'fragmented' from one another.
As an example, here's a graphic that shows the fragmentation of mobile devices based on model and user share. The different sizes are how many users are using a different type of model of phone:
Tumblr media
As you can tell, that's a lot of different devices to have to build for!
So how does this matter?
For PC game developers, fragmentation means that an end-user's setup is virtually impossible to predict, because PC users frequently customize and change their hardware. Most PC users potentially have completely different hardware entirely.
Is your player using an up-to-date GPU? CPU? How much RAM do they have? Are they playing on a notebook? A gaming laptop? What brand hardware are they using? How much storage space is free? What OS are they using? How are they using input?
Moreover PC parts don't often get "sunsetted" whole-cloth like old consoles do, so there's also the factor of having to support hardware that could be coming up on 5, 10 or 15 years old in some cases.
For console developers it's a little easier - you generally know exactly what hardware you're building for, and you're often testing directly on a version of the console itself. This is a big reason why Nintendo's first party titles feel so smooth - because they only build for their own systems, and know exactly what they're building for at all times. The biggest unknowns are usually smaller things like televisions and hookups therein, but the big stuff is largely very predictable. They're building for architecture that they also made themselves, which makes them incredibly privileged production-wise!
Fragmentation basically means that it's difficult - or nearly impossible - for a developer to know exactly what their users are playing their games on, and even more challenging to guarantee their game is compatible everywhere.
Benchmarking
Since fragmentation makes it very difficult to build for absolutely everybody, at some point during development every developer has to draw a line in the sand and say "Okay, [x] combination of hardware components is what we're going to test on", and prioritize that calibre of setup before everything else. This is both to make testing easier (so testers don't have to play the game on every single variation of hardware), and also to assist in optimization planning. This is a "benchmark".
Usually the benchmark requirements are chosen for balancing visual fidelity, gameplay, and percentage of the market you're aiming for, among other considerations. Often for a game that is cross-platform for both PC and console, this benchmark will be informed by the console requirements in some way, which often set the bar for a target market (a cross-platform PC and console game isn't going to set a benchmark that is impossible for a console to play, though it might push the limits if PC users are the priority market). Sometimes games hit their target benchmarks, sometimes they don't - as with anything in game development it can be a real crap shoot.
In my case for my games which are often graphically intensive and poorly made by myself alone, my benchmark is often a machine that is approximately ~5 years old and I usually take measures to avoid practices which are generally bad and can build up to become very expensive over time. Bigger studios with more people aiming at modern targets will likely prioritize hardware from within the last couple years to have their games look the best for users with newest hardware - after all, other users will often catch up as hardware evolves.
This benchmark allows devs to have breathing room from the fragmentation problem. If the game works on weaker machines - great! If it doesn't - that's fine, we can add options to lower quality settings so it will. In the worst case, we can ignore it. After all, minimum requirements exist for a reason - a known evil in game development is not everyone will be able to run your game.
Making The Game
As with any game, the more time you spend on something is the more money being spent on it - in some cases, extensive optimization isn't worth the return of investment. A line needs to be drawn and at some point everyone can't play your game on everything, so throwing in the towel and saying "this isn't great, but it's good enough to ship" needs to be done if the game is going to ship at all.
Optimizing to make sure that the 0.1% of users with specific hardware can play your game probably isn't worth spending a week on the work. Frankly, once you hit a certain point some of those concerns are easier put off until post-launch when you know how much engagement your game has, how many users of certain hardware are actually playing, and how much time/budget you have to spend post-launch on improving the game for them. Especially in this "Games As A Service" market, people are frequently expecting games to receive constant updates on things like performance after launch, so there's always more time to push changes and smooth things out as time goes on. Studios are also notoriously squirrelly with money, and many would rather get a game out into paying customer's hands than sit around making sure that everything is fine-tuned (in contrast to most developers who would rather the game they've worked on for years be fine-tuned than not).
Comparatively to the pre-Day One patch era; once you printed a game on a disc it is there forever and there's no improving it or turning back. A frightening prospect which resulted in lots of games just straight up getting recalled because they featured bugs or things that didn't work. 😬
Point is though, targeted optimization happens as part of development process, and optimization in general often something every team helps out with organically as production goes on - level designers refactor scripts to be more efficient, graphics programmers update shaders to cut down on passes, artists trim out poly counts where they can to gradually achieve better performance. It's an all-hands-on-deck sort of approach that affects all devs, and often something that is progressively tracked as development rolls on, as a few small things can add up to larger performance issues.
In large studios, every developer is in charge of optimizing their own content to some extent, and some performance teams are often formed to be dedicated to finding the easiest, safest and quickest optimization wins. Unless you plan smartly in the beginning, some optimizations can also just be deemed to dangerous and out-of-reach to carry out late in production, as they may have dependencies or risk compromising core build stability - at the end of the day more frames aren't worth a crashing game.
Conclusion
Games suffer from performance issues because video game production is immensely complex and there's a lot of different shifting factors that inform when, how, and why a game might be optimized a certain way. Optimization is frequently a production consideration as much as a development one, and it's disingenuous to imply that games lag because developers are lazy.
I think it's worth emphasizing that if optimization doesn't happen, isn't accommodated, or perhaps is undervalued as part of the process it's rarely if ever because the developers didn't want to do it; rather, it's because it cost the studio too much money. As with everything in our industry, the company is the one calling the final shots in development. If a part of a game seems to have fallen behind in development it's often because the studio deemed it acceptable, refused to move deadlines or extend a hand to help it come together better at fear of spending more money on it. Rarely if ever should individual developers be held accountable for the failings of companies!
Anywho, thanks for reading! I know optimization is a weird mystical sort of blind spot for a lot of dev folks, so I hope this at least helps shed some light on considerations that weigh in as part of the process on that :) I've been meaning to write a more practical workshop-style step-by-step on how to profile and spot optimization wins at some point in the future, but haven't had the time for it - hopefully I can spin something up in the next few weeks!
86 notes · View notes
ohn-jay · 1 year
Video
If you try to improve your own life all the time then you are doing exactly the same things that I am doing. That’s literally all I want to do. I want to live my best life.
419 notes · View notes
askagamedev · 8 days
Note
These references are out of date so I hope you'll bear with me. Why is it games like Watchdogs 2 can have a whole citty full of NPC's each with mostly unique profiles and interactable (you can hack almost everyone, you can physically interact, etc). But something like Yandere simulator struggles with keeping a frame rate with not even 200 NPC's. The models in Watchdogs 2 are also more hyper realistic so I don't know if that means more framerate impaction?
What you're seeing are the programming principles of optimization and scalability in effect. These two principles are more than the sum of their parts, they are multiplicative in their effectiveness (or lack thereof). Thus, if there's a situation where we need to optimize at scale, the results are very pronounced. When we talk about performance, it helps to think of it as costs to do things. We spend system resources (CPU time, GPU time, system memory, etc.) to perform tasks (load a dude, draw a dude, animate a dude). Optimization is being clever about not wasting our resources doing unnecessary things. This lowers the cost of performing these tasks. Scalability is the other factor - the number of things there are multiplies their overall costliness. This should make intuitive sense.
Tumblr media
Let's have an example - imagine that you need cupcakes for a party. The cupcakes cost $5 each and there's a $20 flat delivery fee. We need five cupcakes for a party, so the cost is $20 (delivery) + $25 (5 cupcakes x $5) for a total of $45. Optimization is our way of reducing the individual costs. We can optimize either the cost of the cupcakes or the cost of the delivery fee. Maybe we can optimize the delivery fee down to $10 but can only optimize the cupcake cost down by $1 each. We only have time to choose one optimization. In this case, optimizing the delivery fee results in a better overall cost reduction - 5 cupcakes x $5 apiece + $10 delivery is $35, while 5 cupcakes x $4 apiece + $20 delivery is $40.
Tumblr media
Now think about what happens if the numbers change. Instead of needing five cupcakes for the party, let's say we need a thousand cupcakes. 1,000 cupcakes x $5 apiece + $20 delivery = $5,020. If we optimize the delivery fee, the cost becomes 1,000 cupcakes x $5 + $10 delivery = $5,010. Here, optimizing the cupcake price is a much better deal than optimizing the delivery fee! If we reduce the price per cupcake by $1, we get 1,000 cupcakes x $4 apiece + $20 delivery fee = $4,020.
Tumblr media
Bringing this back to games, it should make sense now. Ubisoft spent a lot of engineering time optimizing the cost of each NPC (cupcake) down as much as possible because they knew that they would have a huge number of them in their game world. Yandere Simulator did not spend as much time optimizing their NPCs, so their NPCs are more costly than the WatchDogs NPCs.
[Join us on Discord] and/or [Support us on Patreon]
Got a burning question you want answered?
Short questions: Ask a Game Dev on Twitter
Long questions: Ask a Game Dev on Tumblr
Frequent Questions: The FAQ
23 notes · View notes
philosophybits · 11 months
Quote
What will happen once the authentic mass man takes over, we do not know yet, although it may be a fair guess that he will have more in common with the meticulous, calculated correctness of Himmler than with the hysterical fanaticism of Hitler, will more resemble the stubborn dullness of Molotov than the sensual vindictive cruelty of Stalin.
Hannah Arendt, The Origins of Totalitarianism
89 notes · View notes
thirdity · 10 months
Quote
If the goal is the sole point of orientation, then the spatial interval to be crossed before reaching it is simply an obstacle to be overcome as quickly as possible. Pure orientation towards the goal deprives the in-between space of all meaning, emptying it to become a corridor without any value of its own. Acceleration is the attempt to make the temporal interval that is needed for bridging the spatial interval disappear altogether. The rich meaning of the path disappears. Acceleration leads to a semantic impoverishment of the world. Space and time no longer mean very much.
Byung-chul Han, The Scent of Time
113 notes · View notes
ftafp · 2 months
Text
Me, talking about D&D: So, I really want to play a mix of gunk and BM but my party already has a padlock, a shepherd, a gravy built around magic bones. and one of those new goos. I'm worried that I'm going to feel like I'm not enough of a munchkin. Like, maybe my dungeon master might to decide to play battleship, but then if we're not doing it raw on the table like the crawfish intended then power word tiptoe probably isn't going to do anything.
My therapist, pouring gasoline all over her office: Well, you could just go beast mode.
Me: Yeah, but I don't think I'm allowed to have infinite tail armor. That just feels like the kind of punpun shit that makes rocks fall...
18 notes · View notes
standardquip · 4 months
Text
The most productive way to do something is the one you finish
Optimizing your tasks to take the least amount of time does nothing if that "optimized" version is the one you never want to actually do or finish. If your way of doing something takes 5x longer than some other way, but the "longer" way is the only way you can or want to do it, that is the most productive way for you and don't allow yourself to be shamed by that.
27 notes · View notes
Link
65 notes · View notes
sunmoon-starfactory · 2 years
Photo
Tumblr media
Fantasy Flavor - TSM Wild Herbs Update Sep 24. 2022
This is a minor update for the TSM WIld Herbs.
Harvests are now repositoried to the Harvest Basket inventory tool
Gathering herbs now builds FT Nature Enthusiasm IF FT is installed
Sims with the Gatherer trait have a 20% chance of getting an extra harvest (BCON-tuneable)
This update requires Smarter EP Check. REMOVE ALL PREVIOUS FILES.
Download
106 notes · View notes
sylvettesylph · 8 months
Text
kittens are awesome bc you get to experience entities deloading the moment they leave your field of view IRL
15 notes · View notes
thefloralmenace · 2 months
Text
This kind of goes with my post on information sorting as activism and also my advice yesterday related to organizing things within an organization, but I truly believe that streamlining the availability of information within an organization is one of the things that helps orgs to both survive and thrive.
Example time: I used to work with an org that had a TON of officers and committees. Some organizational friction I noticed with this is that anytime a member had an idea that needed to be passed up the chain, the non-officer members (i.e. the majority of people) couldn't remember what person had which office and which officers were on which committees. From what I could find, no one had ever compiled I resource on this either, partially because officer turnover was yearly, so it's not like the contacts stayed constant. A lot of time was being wasted waiting on emails, asking around to figure out who you even needed to contact to propose an idea, sending emails just to get back "oh you need to copy ____ and ____ too.", etc. Communicatively, this was not efficient, and I saw this as a real hindrance for us.
So I went out to a thrift store and bought a bulletin board for $1. I got some more index cards, some larger colored cardstock cards, and some push pins. I figured out who occupied each office, what their emails were, and which officers were under which committees. I papered the bulletin board and drew the whole thing out as a diagram, then pinned the index cards, which had officer titles, officer names, and emails, to color-coded cards corresponding to each committee, which were then pinned onto the board under their committee headings.
I hung it up right inside the door of our building, took a picture of it, then pinned it in our group chat as well. Suddenly everyone had access to who was who at all hours without having to ask a single other person in between. Additionally, if anyone stopped by our organization wanting to get in contact with someone, all they had to do was go to the board and write down the President's or the Treasurer's or the PR Chair's email.
Additionally, I designed this bulletin board to be adaptable to change within the organization. The index cards could be removed and replaced with each officer change. The color coded cards were also not permanently attached to the board (just pinned underneath the index cards) so that if an officer changed committees, the color coding could follow that. In addition to suddenly eliminating all confusion about our internal structure, when it came time to do officer transitions, we'd just pull cards down from the board, call the officer, do the transition, then put the new card on the board. Made elections and transitions faster than they had ever been because we stopped losing track of which elections had already been done.
The power of optimizing and systematicizing processes, even in a non-computer sense, like making a bulletin board diagram or sorting supplies into baskets (like I mentioned yesterday) can have a huge impact on an organization's functionality. Time spent on fine details that allow things to run just a fraction more smoothly can have a snowball effect on the quality and effectiveness of an organization's communication and action, and this very much applies activist organizations too.
144 notes · View notes
devsgames · 2 months
Text
Tumblr media Tumblr media
Spent an hour today joining all my incredibly dense world chunk geometry and exporting it as individual objects. It was really boring.
Nothing functionally has changed and all the geo still looks the same BUT because of the sheer number of individual models I was using now rendering the entire scene only takes ~4ms instead of 16ms as it was previously. Everything is super smooth now!
Wishlist Centauri Dark || Join My Discord
11 notes · View notes
aspirationatwork · 11 months
Text
16 notes · View notes
askagamedev · 11 months
Note
Hi there, I’m curious how hard is it to make an open world game that loads all off the assets/ props/npc’s ets. all at the same time? So basically the game ( the full game) is active in all direction without preloading or loading screens or popping things in to existence. It all exist at the same time everywhere… Even when the player lives the game. I know it sounds silly. But I really wanted to ask is it impossible because we don’t know how OR we luck the power of graphical hardware?
Tumblr media
It's possible, but if you had a full world's worth of assets loaded and running, the game would either run at an unplayable frame rate or would be significantly reduced in visual fidelity. This kind of thing actually did happen way back in the day - we used to load the entire game into memory in the arcade coin-operated machines and cartridge days. Nowadays we can do a lot with streaming data from disk into memory, most of which comes from being clever in optimizing what gets loaded when. As long as we can keep the smoke and mirrors going, the player never sees the railroad tracks they're following.
[Join us on Discord] and/or [Support us on Patreon]
Got a burning question you want answered?
Short questions: Ask a Game Dev on Twitter
Long questions: Ask a Game Dev on Tumblr
Frequent Questions: The FAQ
59 notes · View notes
sushis4kalyo · 7 months
Text
Il fait chaud ! 🥵
P, au téléphone : T'as fait quoi ce matin ?
Moi : j'ai fait ma viande à la plancha à 9h30 ...au pire je ferai réchauffer au micro-onde à midi.
P: T'avais peur d'être en retard à la plage ? 🤨
Moi : Ah non, juste la flemme d'avoir à nettoyer la plancha à midi par 37° dans la véranda grande ouverte alors qu'il n'y a même pas un brin de vent ...
Lui : Ah ouais ... 😬
Et c'était pas un mauvais plan :
Tumblr media
8 notes · View notes