Jump to content
  • Advertisement

Search the Community

Showing results for tags 'C#'.

The search index is currently processing. Current results may not be complete.


More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

  • Audio
    • Music and Sound FX
  • Business
    • Business and Law
    • Career Development
    • Production and Management
  • Game Design
    • Game Design and Theory
    • Writing for Games
    • UX for Games
  • Industry
    • Interviews
    • Event Coverage
  • Programming
    • Artificial Intelligence
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Engines and Middleware
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
  • Archive

Categories

  • Audio
  • Visual Arts
  • Programming
  • Writing

Categories

  • Game Dev Loadout
  • Game Dev Unchained

Categories

  • Game Developers Conference
    • GDC 2017
    • GDC 2018
  • Power-Up Digital Games Conference
    • PDGC I: Words of Wisdom
    • PDGC II: The Devs Strike Back
    • PDGC III: Syntax Error

Forums

  • Audio
    • Music and Sound FX
  • Business
    • Games Career Development
    • Production and Management
    • Games Business and Law
  • Game Design
    • Game Design and Theory
    • Writing for Games
  • Programming
    • Artificial Intelligence
    • Engines and Middleware
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
    • 2D and 3D Art
    • Art Critique and Feedback
  • Community
    • GameDev Challenges
    • GDNet+ Member Forum
    • GDNet Lounge
    • GDNet Comments, Suggestions, and Ideas
    • Coding Horrors
    • Your Announcements
    • Hobby Project Classifieds
    • Indie Showcase
    • Article Writing
  • Affiliates
    • NeHe Productions
    • AngelCode
  • Topical
    • Virtual and Augmented Reality
    • News
  • Workshops
    • C# Workshop
    • CPP Workshop
    • Freehand Drawing Workshop
    • Hands-On Interactive Game Development
    • SICP Workshop
    • XNA 4.0 Workshop
  • Archive
    • Topical
    • Affiliates
    • Contests
    • Technical
  • GameDev Challenges's Topics
  • For Beginners's Forum
  • Unreal Engine Users's Unreal Engine Group Forum
  • Unity Developers's Forum
  • Unity Developers's Asset Share

Calendars

  • Community Calendar
  • Games Industry Events
  • Game Jams
  • GameDev Challenges's Schedule

Blogs

There are no results to display.

There are no results to display.

Product Groups

  • Advertisements
  • GameDev Gear

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Website


Role


Twitter


Github


Twitch


Steam

Found 500 results

  1. [This post was originally posted with its original formatting at The Gamedev Guru's Blog] If you've been following me, you will probably know my interest in Unity Addressables. That is for a reason. Unity Addressables is a powerful Unity package that upgrades the way you and I have been tackling some of the most important challenges in Game Development: efficient, pain-free content management. When managing your game assets, it's hard to keep good standards that prevent our project from becoming a disgusting pile of mess. A big issue there is the coupling between the different responsibilities of our asset management systems. The way we store the assets in our project has way too much to do with the method we load them, and later use them. For instance, you may decide to store an innocent sprite in the Resources folder. This, in turn, will force Unity to build the player in a way that that sprite is put into special archive files. And the fact that it was put there, will corner you into loading it through the Resources API. Things get messy quicker than you can realize! One choice, multiple long-term consequences. A good system will prevent you and me from easily making sloppy mistakes like that. A great system will be that, and also easy to learn and use. With Unity Addressables, we separate the asset management concerns. Our goal is to remain flexible and to keep our project maintainable. Here are 3 proven ways Unity Addressables will help you and your games: 1. Reduce Your Game's Memory Pressure When you publish your game, you'll be required on most platforms to specify the minimum hardware specifications your players must meet to buy and play your game. The math is easy here: the more hardware power you demand, the fewer will buy your game. Or, seen from another perspective, the better memory management you do, the higher the amount of content and fun you can offer in your game. Unity Addressables helps you in this regard enormously! To give you a brief idea, converting this kind of code: public class CharacterCustomization : MonoBehaviour { [SerializeField] private List<Material> _armorVariations; [SerializeField] private MeshRenderer _armorRenderer; public void ChangeArmorVariation(int variationId) { _armorRenderer.material = _armorVariations[variationId]; } } Into this other one: using UnityEngine.AddressableAssets; public class CharacterCustomizationV2 : MonoBehaviour { [SerializeField] private List<AssetReference> _armorVariations; [SerializeField] private MeshRenderer _armorRenderer; public IEnumerator ChangeArmorVariation(int variationId) { var loadProcess = _armorVariations[variationId].LoadAssetAsync(); yield return loadProcess; _armorRenderer.material = loadProcess.Result; } } Will bring you these results: Easy gains I'd say. -> Read more on Unity Addressables for better memory management in Unity Addressables: It's Never Too Big to Fit (opens in a new tab) 2. Sell Your Next DLC - Quick and Easy The fact that Unity Addessables gives you full control over how, when and where to store and load your game assets is incredibly useful for implementing and selling Downloadable Content. Even if you are not thinking of releasing DLCs any time soon, just by using Unity Addressables in your project, you will have done already a big chunk of the work ahead. Other approaches for selling DLCs, such as Asset Bundles, are a very deprecated way of doing the same thing but at a much higher cost. Maintaining a well-functioning Asset Bundle pipeline is painfully time-consuming and requires a high degree of expensive expertise. There are many ways you can approach implementing DLCs in Unity, but for starters, this is a good starting point: public class DlcManager : MonoBehaviour { // ... public IEnumerator TryDownloadDlc() { if (_hasBoughtDlc && _dlcDownloaded == false) { var operationHandle = Addressables.DownloadDependenciesAsync("DLC-Content"); while (operationHandle.IsDone == false) { _progressText.text = $"{operationHandle.PercentComplete * 100.0f} %"; yield return null; } } } } You get the idea. Why would you say no to selling more entertainment for your players at a fraction of the cost? 3. Reduce Your Iteration Times Using Unity Addressables will reduce the time wasted waiting in several areas. Tell me, how frustrating is it to be blocked for half a minute after pressing the Unity play button? And it only gets worse if you deploy your build on another platform, such as mobile or WebGL. This all starts adding minutes and minutes to your iteration times. It gets old so quickly. I don't like waiting either. But do you know what I like? Unity Addressables, my long-awaited hero. This is how Addressables will help you: A) Reduced Build Size Your game has a lot of content, I get it. Gamers love enjoying content. Developers love creating content. That doesn't mean, however, that every single asset you produced has to be included in the build your players will install. In fact, you should remove as much as possible. Players want to start playing ASAP. And they're not happy when your game steals 2GB of their data plan and 30 minutes of their gaming time. They'll just keep downloading Candy Crush kind of games that install well under 50MB. One strategy is to include only the assets needed to run your game up to the main menu. Then, you can progressively download the rest of your content in the background, starting, of course, downloading the first level of your game. It's also neat to realize that your deployment times during development will be much faster. You'll be able to iterate more times each day; this benefit quickly adds up in the long term. Unity Addressables - Reduced Build Sizes B) Reduced Load Times We, both as game developers and as players, hate waiting. Waiting takes us out of the zone and before you realize it, it is time to go to bed. Unity is working hard towards reducing the time it takes us to start playing our games, both in the Unity Editor and in the games we distribute. But not hard enough. Things look promising in the future, but not without side effects. Avoiding domain reloads in Unity 2019.3 looks promising, but as of today that's still in beta and not everyone can profit from it. In the mean-time, we can do better than just being frustrated. Let's say you're working on a medieval game. Several months ago, you implemented armor types for your game. You did a pretty damn good job and generated over 100MB of content. At some point, it was time to move on and right now you're working on something else, let's say sword fighting. Realize that, every time you press the play button to work on your features, you are loading an insane amount of data coming from all the already developed features, and loading this data takes a massive amount of time. You press play to test your sword fighting animations, and you spend 5 seconds waiting due to loading the armor features you implemented. The time wasted in loading is mostly spent on I/O (Input/Output), because memory bandwidth is expensive. And, on top of that, your CPU has to process it. You, as a developer, pay this time penalty while developing in the Unity Editor. But your players pay it as well in the games you are distributing. Knowing how big of a deal this can be, let's ask ourselves: which shortcuts can we take here? It turns out that Unity Addressables can help us here in two ways. 1. Unity Addressables will reduce your Players' Loading Times We can alleviate some of our players' pain. Keeping indirect references to our assets instead of direct references will drastically improve your loading times. By using indirect references (AssetReference), Unity will not load everything at once but only what you tell it to. And more importantly, you have direct control over when that happens. 2. Unity Addressables will reduce your Unity Editor Iteration Times How much do you know about the play mode script in the Unity Addressables Window? The play mode script defines how the Unity Editor should load the content marked as Addressable. With Packed Play Mode selected, Unity will directly load your pre-built addressable assets with little to no processing overhead, effectively reducing your Unity Editor iteration times Just do not forget to build the player content for this to work Unity Addressables - Build Player Content What if you applied these strategies to your most demanding content? 4. Extra: Are You There Yet? It is true. Unity Addressables is very helpful. But this package will help only those who want to be helped. After reading how Addressables will help you producing better and selling more to your players, you probably want to start with it right away. However, starting in this new unknown area may be challenging. To make the most of your chance, answer these questions first: Where are you standing right now? Are you just starting, or are your skills production-ready? When to use indirect references, when to use direct references? What's the bigger picture? What is your next logical step? → Take this short quiz now to test your answers ← (opens in a new tab)
  2. Elliot Nykvist

    C# Make a game like Mario Wanted

    Hey!I wonder how to program a mobile game in C # that should be like Mario Wanted, but I want the object to be still and when you click on the right guy a new level appear, but if you click on wrong you lose the gameThanks in advance!
  3. Hello everyone! I finally mustered the balls to come here and ask for your advice. To simply put it, my friend and I would like to emulate, or make a small private server of, this pretty old MMO. We've managed to obtain the database of said MMO, even though it's not the most recent version. The issue is.. both of us are what you'd call non-programmers, so we have no idea where we should start. Having the database we've used SQL Server to take a look at it, but that's as far as we go. He says we need somone who's familiar with c# & sql programming languages to help us set this up, skills that none of us have. All we want is to put a small server up and running so that the two of us and a couple other friends can play together, kind of like minecraft. We'd like to find people to help us set this up, or to at least guide us on what we have to do so we can hire some programmers. So I'd like to ask: Since we have the database and (I think) don't need reverse engineering, what are the next steps to make it work and have the server go live? What are the programms that we need to use for said steps? What kind of skills should we look for in the people we'd hire to set the server up? I'm sorry if this sounds halfassed but I really appreciate any advice you'd have to offer. Thank you in advance!
  4. Rubikon

    #ScreenshotSaturday: Animations Inc!

    This week we spent some time in #aseprite and brought our main character to life. Look at him go 😀 https://rubikon.dev/ https://www.reddit.com/r/Rubikon_Game/ https://twitter.com/GameRubikon https://www.instagram.com/rubikongame/
  5. I am working on a project where I have to approximately simulate the ocean waves. Currently, I am using a mesh modification approach. I am able to simulate low amplitude waves using the following equation: yVal = Mathf.Sin(180 * Mathf.Deg2Rad / freqUpdated + Time.time * speedOFWave) * halfWaveHeight; Now, I want to extend this equation to simulate breaking waves for a high value of "wave height". Approach tried: I tried creating code similar to this plugin but the smooth transition between low amplitude waves to these breaking waves is not possible with that approach. I have the following questions: What kind of modification can be done to the above sin wave equation to simulate breaking waves? Are there any other mathematical techniques that can simulate low amplitude and breaking waves? Is it feasible to do this type of ocean simulation using water particles? I would appreciate any suggestions and thoughts on this topic. Thank you.
  6. Hi, I am working on Unity 2019.2 and I am using C# code in Visual Studio Code 1.38.1 but since 2 days, I found a bug in connection with Unity and Visual Studio code that i can not open C# file with double click on it in Visual studio code.Now please help me to solve out this kind of issue in Unity and Visual Studio Code. Thanks, Gaurang
  7. Hey community, I'm a little bit drown in thoughts about the best/ fastest way to perform a lookup of the relation between two paths. My paths have an order (a number that determine the amount of sub-sequences/directories) and are already unified so there is no need take this into account. What I want to achieve is to determine if a given path is one of the following: The parents of the path tested; given A/B/C then is A the parent of B and C and A/B is the parent of C The same path as the path tested A totally different path as the path tested I know there are some tricks in C# to speed string comparsion up, I'm currently using public bool Contains(PathDescriptor subFolder) { return subFolder.GetAbsolutePath().StartsWith(GetAbsolutePath(), StringComparison.OrdinalIgnoreCase); } but I was wondering if there is a better/faster solution to perform the same task. Again, I need to know if the path tested is any child directory regardless of the hirachy. This is important because for our tool we decided to allow local overrides for our Processor Units. This means the deeper the tool walks into the project directory, the more priority get the Processor Units found there. Thanks in advance
  8. Dear reader, for my long term hobby project I'm looking for additional contributors/ one or more partners in mind that could take the challange and bring some fresh air into the project. Are you in search of a challenge and want to support all those game developers out there seeking for something lightweight to make their great creations or do you ever liked to make your game from scratch developed with state-of-the-art technology? Then this might be your chance! I'm a long time gamer, designer, developer, board game fan and hobbyist board game author, passionated in games since age of 6 with addiction to video games. Working as senior in the games industrie at day, at night tinkering at my very own game engine and ideas for games I want to make with it popping into my mind from time to time. After some iterations and a straight learning curve I felt ready to publish some pieces of my work to GitHub and now want to find a team or partner or any contributors that don't want to be part of a team but anyways feel inspired to make something on their own, to inspire each other and get new prespectives on this huge but very interesting topic and keep motivation up and running. The Framework I started to be interested in game engines arround 21 years ago growing up with Unreal Engine and some popular products like A8 Engine I always had the dream to create something on my own that I could use to easily bring my ideas to life. The framework is on a non-commercial base designed with performance and the goal of customization but also simplicity in mind. This is the reason I decided to have not just a package manager but also a custom build tool to have any user work how he/she likes with their favorite IDE and compiler on their favorite platform. It is planned to have the product work on an ammount of platforms (where Windows is currently the only platform supported but Linux/Android and hopefully one day Sony and Nintendo are on my target list too) where the framework should work on any platform that supports .NET/ Mono and C# 4. I'm always intended to improve the workflow whenever possible! Your Tasks Further develop and improve already existing features and modules Design, prototype, implement and test usefull features and modules Keep an eye on the code because I'm just a human too; humans make mistakes Maintain the public reposetories at GitHub and related resources Requirements Because I already worked together with some people interested in the project At least some experience on the generalist level in C++ and/or C# Experience in using command line tools Knowledge about build-pipelines, build-tools and at least one common IDE like Visual Studio Good communication skills and a reliable response time Disciplined self-reliant and motivated work style Fluent in spoken and written English A Discord account At least 5 hours per Week to work on this project Considered a Plus Knowledge of the German language As passionated as I am for all aspects of game development Working as professional in the industry too, especially in engine/ tools development I offer No money because I'm working for non-profit in my spare time and at my own charge, but a friendly, motivated and passioned teammate in a highly professional work environment and technical knowledge from a long-term industrie professional. Dear reader, thank you for taken the time to read the full post and if you have any questions or want to work with me/us, please feel free to send a PM or Discord Message with a short introduction and a brief time schedule so I/we have an overview to plan further development. Thank you in advance! Stay tuned and take also a look at the list of related posts https://www.gamedev.net/forums/topic/701876-2dconcept-artist-for-hackn-slay-arpg/
  9. I am using SignalR and I can't get a C# command to call the printinitial JavaScript function. I have a similar example that works fine. When debugging it does step on this. I've been scratching my head for hours, please help me. Here are the two functions, what could it be? C#.net : public void register(string name) { int myplayernumber = -1; A_client.ConnectionId = Context.ConnectionId; A_client.Name = name; ClientList.Add(A_client); if (integer == 0) { myplayernumber = 1; integer = integer + 1; } else if (integer == 1) { Clients.Client(ClientList[0].ConnectionId).printinitial(); myplayernumber = 2; } if (myplayernumber == 2) { Clients.Client(ClientList[1].ConnectionId).printinitial(); } } HTML / JavaScript / JQuery chat.client.printinital = function () { $("#turn").html("print_this"); }; Thank you, Josheir
  10. [The original post was published with its original formatting in The Gamedev Guru's Blog] Heya, Unity Addressables fan. Last week, I posted a short but powerful article detailing three ways Unity Addressables can help you developing better games. The article was very well received, thanks for your active participation. Just at the end of that post, you were given the chance to test your knowledge in Unity Addressables through a short quiz. The goal I had in mind when creating the quiz was to help you become aware of the areas you might be less familiar with, so you can get to develop your skills where you need the most. I'll confess that, initially, I didn't expect many people to go through the quiz. After all, quizzes can be daunting and, as usual, there's this extra babbling coming from me. But to my surprise, the quiz results well outperformed my expectations. I'm really happy to see that so many people accepted the challenge. You all rock! I got some interesting statistics out of the quiz. Here are some figures I wanted to share with you: The greatest part of the people who started it, about 80%, actually were determined enough to finish it The average score was about 12, which is pretty damn good for an API that was only introduced recently Less than 5% of the quiz participants fell in the Troll Guru rank About 50% are part of the Apprentice Guru group Over 40% of the participants scored enough to be Enlightened Gurus But only 5% made it to be considered The Final Boss Guru So, congratulations if you were part of the quiz experience! And independently from the score you got, I am sure it will not take you much effort to reach the production-level required score of 20+. I'll be helping you along the path. In this post, I will explain the most interesting challenges posed in the quiz. Some answers might differ depending on your particular context, so make sure to comment at the end of the post if you had a complementary experience. If you didn't complete the quiz before, do it now before reading further. Do not cheat. I'll know. What were your results? Are you a Troll Guru, an Apprentice Guru, an Enlightened Guru or The Final Boss Guru? Share your results in the comments section. Trusting that you finished it, let's have a look at the questions and some of the answers. The format should be self-explanatory, but I admit I could have chosen less cheesy graphics for it— yes, that's me. Question 1: Intense Memory Pressure An angry player leaves a 1-star review because your game uses too much memory. You... Answer in public, telling the player to upgrade their device and then come back This is a popular answer somehow. As much as we might feel like answering this, chances are, we have been too busy (or lazy) to implement a proper architecture. Blaming players for playing with a brick-phone won't get us more sales, so a better strategy is to fix our mess. Switch to a more advanced texture compression method, e.g. ETC2 to ASTC This is helpful and you should indeed switch to more advanced compression methods, where possible. But this solution will only take you so far. You'll get moderate gains in memory usage and texture quality, but they'll not be enough to cover your memory pressure issues. Split your scenes into sub-scenes, so less content is loaded in memory In general, sub-scenes used to be a good solution. I've used them in the past with great success. However, if you are having bad reviews already, chances are it is too late to introduce such a massive change in the architecture of your game. Better to look somewhere else. Implement an asset lazy-loading mechanism through AssetReferences Over 75% of people agreed on this, that's great. AssetReferences are likely to give you the biggest gain for the buck. The migration to this workflow is usually straight-forward and much easier than the other alternatives. However, be aware that, in some cases, it might be hard to work around the asynchronous requirements of the Unity Addressables API. Question 2: Endless Loading Times You press the play button. By the time your in-game scene is loaded, your coffee is cold. You... Blame the artists and ask them to put every texture into atlases. Also, you buy a faster PC 10% of the subscribers chose this one. I love you guys. Reduce the texture size globally, so asset loading is much faster. You don't submit these meta file changes in your versioning system I've done this a few times recently. It works. However, the pay to price is high. Your versioning system might go nuts and your changelists will be full of garbage. This is indeed hard to manage, as if you ignore these temporal texture import settings modifications, the real changes will mostly go unnoticed and won't be submitted. Create custom scenes that contain just the functionality you are working on Creating sub-scenes for faster iterations might be a possibility for your game, but in my experience, they tend to be left unmaintained. With time, they break and one might spend more time fixing them than the gain you eventually had back then. Consider implementing sub-scenes only if you don't see these problems in your project. Remove direct references and add indirect references instead, so only the required assets are loaded Indirect references for the winner. Direct references will implicitly ask Unity to load all their content as soon as the script holding them is instantiated. Indirect references, however, gives you full control over the when/how/what. That means, you can delay loading until you need it, if at all, saving you from unnecessary loading times and wasted memory. Question 3: What Play Mode Script? You are currently implementing materials for your new characters. You want to try Addressables, so in the Play Mode script section of Addressables, you select... Fast Mode: we want it always fast, after all This is a valid option, but fast mode does no validation at all of important aspects of development, such as asset dependencies and cross-references. If there are no substantial changes in the content you're working on, fast mode will be fine. Otherwise, we can do better. Packed Play Mode: yes! we want our characters to be packed No! The Packed play mode requires you packing the assets every time you do a change in your addressable asset contents, otherwise you'll end up loading the old versions. You don't want to be packing every time, it's a huge time sink. But you might consider packed play mode once you're done working with addressables content to gain faster iterations, as these assets will require minimum processing while being loaded. 35% of the Guru Challengers chose this answer. Virtual Mode: it sounds safer than fast mode Virtual Mode is the option I suggest you using while actively working on your addressable content. The virtual mode is fast enough to keep iteration times short and at the same time, it'll give you useful validation checks to avoid screwing it up and finding out the mess way too late. Question 4: Oops... Error Diagnosing You try Addressables but you don't recall your assets looking pink in your Android device. How weird! You... Enable the ADDRESSABLES_LOG_ALL symbol, make a development build and check the logcat logs If you came to me with such a description, I wouldn't necessarily take you down this road directly. The main issue with adding scripting defines and checking the logs on the device is the time it takes to prepare such a build, deploy it, test it and gather useful information from the logs. There are indeed better ways to tackle this, but certainly keep this as a backup option if they fail to give you an accurate diagnosis of the problem. Set the play mode script to Packed Play Mode and run it in the editor to further diagnose the issue with the Addressable Profiler Emulating as much as you can the environment in which the content will be displayed is my preferred option, as it takes the least total amount of time. You do this by selecting the packed play mode in the main Addressables Window settings. The Unity Editor will load the addressable resources directly from the built content, so this is expected to give you a similar behavior than on the device, as long as the editor can load such a content. You can also try running it in virtual play mode, which does some validation on top of the traditional asset loading pipeline for addressables. Don't forget to count on the Addressable Profiler's help, a tool that will inform you about the addressable operations that are taking place at all times in your game. This answer was correctly chosen by 66% of the participants. Post in StackOverflow and Unity Answers 12% of you see value in posting questions on these platforms, as there are always people willing to help. But preparing a reproduction project, posting and refreshing your screen with F5 is likely to take you much longer than just diagnosing and fixing the problem yourself. Trust me, this should be your last resort. Question 5: Heavy Video Packing You want your mp4 trailer video to be included in your game. You... Toss it into the StreamingAssets folder The StreamingAssets directory works just fine, especially when coupled with famous video plugins you find in the store. The assets stored in that directory are not packed together like Resources do but rather left as individual files when your game is installed. Its simplicity and easy I/O is the reason it is the default method of playing video. The biggest con is that the assets stored in StreamingAssets are forcefully packed in your distributed game from the beginning, so they are likely to take a lot of space in your build. Why would your users have to wait 5 minutes longer just to download the credits video that will be played at the end of a 30+ hours game? Mark it as Addressable, add a "videos" label to it Sure, making it addressable sounds cool. But adding a "videos" label to it? Usually, labels are used to download all assets belonging to that label category at once. Unless you have a very specific use case, doing this is not likely to help your project. Mark it as Addressable, adding it to a "videos" group with the following attributes: static content, no compression Videos are not likely to change, so making them static makes sense. Also, there's no need to compress them, as the used video codec should already offer you compression. Adding LZ4 or LZMA compression on top of this already-compressed content will only incur in CPU overhead. Your users' battery will drain faster as well. I'm sure your players wouldn't appreciate it. Mark it as Addressable, adding it to a "videos" group with the following attributes: dynamic content, LZMA compression Dynamic, compressed content is by far the most commonly chosen answer. But it is a misleading one. For the reasons stated above, you should avoid using compression on already compressed content. And videos are often enough very static, so by marking that group dynamic you wouldn't be helping your asset building workflows. Most people (46%) thought this was to best option. Question 6: Memory on Instance Releasing You loaded your asset once through LoadAssetAsync. Now you're done with it, so you... Call Addressables.Release, so the memory is immediately released There's no guarantee that the memory will be freed right away, as the current documentation correctly points out. But do not worry about it too much, it will be correctly freed by Unity. 23% popular. Call Destroy, we better make sure we free that memory up Addressables is, as of now, unaware of traditional Unity instantiation and destroy mechanisms. If you do so by yourself, you are doing it at your own risk and bookkeeping. If you mess it up, the API and OS are unlikely to be happy about it. And you will know. Call Addressables.Release, so the memory is released at some point in the future The documentation implies that the memory occupied by addressable assets will be freed at some point in the future after calling the Unity addressables release method. You can count on Unity smartly deciding when it is time to do just so (e.g. low memory situations, Resources.UnloadAllUnusedAssets, etc.). You guys got this one right! Question 7: Loading with LoadAssetAsync You're excited about doing your first Addressables.LoadAssetAsync. So you call it and use its returned handle like... while (handle.Status == AsyncOperationStatus.Succeeded) ; I confess to you that I've tried this method to try to force a synchronous behavior out of the Addressables API (e.g. Photon Networking under Unity Addressables). But you can guess what happened after seeing the answer's smiley. My computer's fan started spinning insanely fast and I had to reboot the computer as the OS became utterly unresponsive. I'm not trying this again any time soon, thanks. Doing this loop is likely to cause a deadlock, as part of the loading process is executed in Unity's main thread. And that line of code is the easiest way to block your main thread. await handle.Task; or yield return handle; These two solutions are asynchronous ways of waiting for the loading process to finish before continuing with our code. That's great stuff for you and me, as they offer great readability and are easy to maintain. However, be aware they incur on some performance penalty. handle.Completed += OnLoadCompleted; This is the simplest and yet most powerful option to do something after the asset has been loaded into memory. Keep in mind, though, that you're introducing lambdas and/or callbacks. They will reduce the readability of your code and therefore make your programming style more dangerous. Unless you are a pro, of course. Question 8: Migrating to Better Workflows You have a bunch of skyboxes living as direct references in your Skybox manager as a list of materials. Those are eating all your memory, so you... Move them into the Resources folder and start using Resources.Load as you need them No! Bad boy! Don't ever use the Resources directory for heavy assets. They are a major cause of pain, tears and burnouts in large scale projects. It is indeed surprisingly easy to misuse the Resources API. Read more info on why it is so here Put all skyboxes in an asset bundle that you will load appropriately Asset bundles were a much-needed solution back then. But we have better solutions now with Unity Addressables. The issue is that working with asset bundles is way more tedious and expensive to implement and maintain than just using Unity Addressables. Unless you're doing a port and you don't want to touch much of the original systems, try to avoid them. Replace the list of skybox materials with a list of AssetReference's and load them as you need Using Unity Addressables is probably the best option to tackle this kind of memory issues. One of the reasons it is such a silver bullet is because you can easily migrate from the most popular approaches of managing content such as direct references, resources API, additive scenes and asset bundles. Unity Addressables are a simpler way to develop more efficient games. Decrease the skybox texture sizes Tweaking the texture import settings works up to a point. This has an upper ceiling limit, as you cannot infinitely go lower in memory usage (and quality) without re-categorizing your 3d game into pixel-art. This just doesn't scale well. Chances are very high that you didn't reach the rank of The Final Boss Guru. But that's good, because that means there's massive room for improving and optimizing the way you develop and ship games. And what is more important, your players will appreciate the expertise you build in each of these areas. The only place you want to read 1-star reviews is at the app store of your competitor's game. Given the importance of delivering enjoyable experiences to your players, I will share something with you. Between you and me: I have a work-in-progress plan for maximizing the potential of your game with Addressables. In the upcoming weeks, I will be revealing to you more information about the Unity Addressables level-up program I'm developing. That program is going to get you to the production level you need to deliver the games people will deeply enjoy (purchasing and) playing. To make sure you don't miss on the upcoming content, subscribe now to the newsletter. I'll keep you posted. Till then, comment below on what you would like to learn the most and also how you plan to use Unity Addressables in your project. See you soon on the blog! Rubén
  11. Hello! I need a C# Developer for my game called: "Pokémon: Onyx" I have 1 more developer. I don't care what engine you use you just have to agree with the others. I'm making the storylines and the new sprites (For the normal we'll just reuse some of the old) and of course ideas is welcome. I live in Denmark and the dev i already hired lives in UK. SO if you live in the timezone "GMT" That would be great. If you're interested send me a mail: datmemecontact@gmail.com or join this discord: https://discord.gg/je3PqbC. I check discord everyday so ig you have discord then contact me on there.
  12. Rubikon

    #ScreenshotSaturday: Keep Walking

    This week we worked on rough versions of walk & run animations for our main character. We are pretty happy with the general movement, so far. What do you think? https://rubikon.dev/ https://www.reddit.com/r/Rubikon_Game/ https://twitter.com/GameRubikon https://www.instagram.com/rubikongame/