Jump to content
  • Advertisement
    1. Past hour
    2. Dawoodoz

      Feedback for games idea

      Back in 2004 when I got tired of writing the same types of games over and over again, I made a crude application with colored lines on a black background for fast prototyping to explore the options of game mechanics quicker. I learned how to write physics simulation in a more reusable way by not getting stuck with game specific limitations. Eventually became a physics sandbox where challenges could be created. People liked playing around with it more than my actual games, so I decided to do a remake with 3D graphics that people liked even more. It wouldn't hurt to put some extra effort in making rapid development tools available to players and modders.
    3. This is how unity builds work, and they are awesome (in fact you can have lots of .cpp files, you just include them all from one (or a few) .cpp file which is passed to the compiler, the effect is the same). It can still be a good idea to use a few different modules with unity builds though, so you get most of the benefits from both approaches. Even with unity builds, even though the headers may only be included once, they can still take a while, if you are impatient like myself, so having wrappers can still be a good thing for thirdparty stuff. As a project gets bigger, the link time can get more of an issue, my current preference is to have a bunch of modules and dynamically link them for fast iteration, and statically link for final release. That way if you touch a file in 1 module out of 10, it only needs to link 1/10 of the codebase. I suspect it may be even less than that in terms of linking time (link time might not scale linearly with size of project). As an example I recently experimented making unity builds of Godot, which decreases the full build time: https://github.com/lawnjelly/godot_SCU Unfortunately for everyday developer iteration the link time is more of a rate limiting step because it is all built as one executable. i.e. you touch a file, and it can compile super fast, but still takes 30 seconds linking. With dynamic linking this could be reduced to e.g. a couple of seconds. Your implementation looks quite nice, although really all I was trying to show was an example of wrapping an external library, rather than selection between libraries, perhaps I shouldn't have used windows.h as an example(!). Having the macro in the header file is to ensure that calling the third party library is in the same translation unit. Compilers used to be rubbish at inlining anything that wasn't in a header files, but with link time optimization that is less of an issue now. I still prefer it out of habit (plus link time optimization is SLOOWWW ).
    4. Today
    5. I would actually recommend going the other direction and making just a single .cpp files and putting everything else in headers. The time required to fully compile a program is roughly proportional to (number of compilation modules)×(number of lines of code per compilation module), where a "compilation module" is a .cpp file plus all of the headers it includes. There are two possible strategies for reducing compile times: reducing the number of compilation modules and reducing the size of the compilation modules. There's a lot you can do to reduce the number of lines of code per compilation module, but it's ultimately a losing battle. Just including a few headers from the standard library is going to add hundreds of thousands of lines to each compilation module. Any template you use is going to be replicated across every compilation module that uses it. On the other hand, reducing the number of compilation modules is easy, straightforward, and effective. If there's just one compilation module, then every header file that your project uses is only going to be included once, and every template is going to be instantiated just once. Just don't try to mix and match these two approaches. When trying to minimize an A×B problem, it is most effective to get either A or B as low as it can possibly go, and more or less ignore the other one. If you have just two compilation modules instead of just one, you're going have compile times about twice as long as if you went all the way.
    6. Putting windows.h in the precompiled header also helps
    7. at all its quite a simple concept but a great idea. i might try to create automated playtests that runs ony my jenkins, automated after each git push 😮
    8. iradicator

      Biletaral Downsampler

      That makes sense to reduce halos. Thank you for the explanation. I see that you’re use linear depth distance as the weight. I wonder, have you considered using some other weighting function? I'm experimenting right now using the previously calculated coc difference as the weight. Results seems to be okay so far and I can save some instructions by not having to linearize the depth. Thank you Jànos. I really like your posts about the work you’re doing on Wicked.
    9. RickBaker

      Bare bones AAA team

      Awesome, 18 years is a few years long time for a kid2 seconds for an older person. Ignore the gray in my hair.
    10. Finally if you still feel to suffer in compile time, you can modularize your project into standalone modules. Log-System for example is a good candidate to be excluded from the main project. Separate them into own static library projects and then just use their public interface and have the linker doing the rest of the work. Static libraries don't produce additional overhead because they are statically linked together with the rest of your code and Visual Studio is well in deciding what you really used so it dose link only the code used in your final assembly. This has the advantage if you turned incremental builds on, that you only recompile the projects with changes and keep anything else from the previous compiler run. So if you work on your game for example, only your game gets recompiled while the Log Module remains the same and safes compile time for that code. I expect the linker to be faster than the compiler because it dosen't has to struggle with macros, templates and so on
    11. Tom Sloper

      Bare bones AAA team

      Here's one I came up with a few years back. Okay, so 18 years ago.
    12. RickBaker

      Bare bones AAA team

      Awesome, thank you for playing along with the scenario. ok, let’s say your a billionaire and you just want to blow money not caring about the costs but you can’t build in North America. To give my background in real life I am currently an executive for an a-list production studio for movies, that loves to program algorithms to solve problems. I also love video games. I also love to come up with imaginary scenarios that are hard but possible. my personal life doesn’t matter for this though as I’m just having fun with a made up scenario and love using my imagination. I always came up with around $100,000,000 budget for 3 years with 50 on the team, still excluding hr and what not. With wiggle room to 5 years. I am curious what others come up with. A distraction per say and enjoy theoretical scenarios. Theorycrafting but instead of at a game, at the studio itself. For example if you wondered what made a game that could easily be aaa but shipped as a. Or if they used this tool instead or that tool. Did they throw away the white papers? Where did they find this non standardized library referencing pascal code etc... Just a fun game. I am curious to see what others come up with. If no one wants to play that’s cool too.
    13. Rutin

      DOOM: Placeholders

      👍 Best of luck finishing.
    14. Vilem Otte

      Bare bones AAA team

      I will just input salary for my country (Czech Republic, next to Poland) - for software developers, so you get the picture. For senior developers the statistics says that on average they require $40,000 per year. For junior developers it is $18,000 per year. These are netto - as it is reported salary by the employees. (Source: Startupjobs.cz) So, your income budget would be (our taxation is around 45%) at $73,000 for seniors and $32,000 for juniors. As senior we generally count somebody with at least like 5 or better 10 years of experience. Often also working for foreign company for few years. Of course the salary heavily varies based on the branch where you work. Of course, you can also try luck in India, which may be even a bit more cheaper - forming even bigger team. The problem is, bigger doesn't necessarily mean better. And when you have to aim at qualified people (often with university degrees and experience) that know what they are doing, the costs difference tend to decrease.
    15. RickBaker

      Bare bones AAA team

      Yea that is why the imaginary 2 year startup fund is at 80,000,000usd. I guess imagine a company that gets 40,000,000 a year regardless. Let’s add that “cheat code”. That isn’t there total budget but garenteed, add to that which will never go away on top of any money coming in on future titles and expansion of the team to larger and larger say running 3 IPs. the characters are well designed using psychology to hook the player. The hypothetical of all the designers, programmers, leads, qa is all in the top of their field. Let’s set their salary at $200,000. That’s 2-5 million a year on salary’s for 10-25 people. Have fun with it.
    16. Vilem Otte

      DOOM: Placeholders

      Currently, the only "playable" level is still full of placeholders - I'm still hoping for having the game finished on 18th, but we will see. In worst case - there might be some place holders left (while the game would still be playable). In the meanwhile I have added: Full physics (based on Bullet), not just character controllers, but even rigid bodies are technically supported (I'm still not sure whether I will do anything with them) Ability to control behavior of entities (doors, elevators and such are possible - but I don't think I will have enough time to make art for those, so we might be limited here) Improved the speed of dynamic BVH building by about factor of 10+ (by simply going through my code and removing dumb things) Get rid of most of the limitations (like total texture size was originally limited to just 8192x8192 texels, technically this is much higher now) Finished some sort of player movement I'm kind of satisfied with I'm realistic, the competition ends in about 2 days (and as most of us - I still have to be at work during those). I personally will be glad if I manage to make the scope I wanted for proof of concept demo - that includes: Simple menu (New Game/Exit) Single level Single type of enemy Single weapon Player can die in the game and player can win the game Some sort of Doom-ish UI Some advanced ray tracing effect or two I know this isn't much (and is most likely barely covering the scope for the challenge). In the meanwhile - behold - the placeholders (and no that 0.44 GRay/s is not joking - I'm currently limited by performance of actually displaying the buffer, not ray tracing nor BVH updates at all)!
    17. Shadowsane

      AltarisNine

      My project started in 2014 but recently ended due to no funds. AltarisNine was a Minecraft project based on RPG. The concept was nine islands that you explore at a time to follow an in depth lore based on our own production team. This is where the 'Nine' comes in. With skepticism of future success we hope to make this tale into chapters. Such as the first one introducing Nine islands at time. It wasn't always the same though, my world did evolve over time and now I have a better idea of what it is better than ever. In the first island, Main Isle, is themed around jungles and wilderness. There's lore that stretches throughout the chapter which will engage the player. There would also be kinds of characters you can be such as any other RPG which could be talked about (because i'm still about what I have lol) My former team was designing a world players would get into interact with in various ways. Boss battles would be minigames and the RPG lore would be engaged in and something indie platforms would enjoy and talk about beyond platforms. In the minecraft varient I was a builder, the leader, and the story director which everyone respected. I led my own team of builders and story writers. While I chose certain individuals to be the head department of development and art design. The reason I am here is to find a new team to help take this away from minecraft and hope we can be successful about it. I'll happily commute each and every person that volunteers and will be accommodated down the line with promotions, wages, and definitely praised for helping start my dream up. The first 8 pictures were of our hub, the other 9 was our factions world. The factions world doesn't retain to this project I wanted you to see how dedicated I was to making this project. I built everything in the hub myself except for the giant pagodas. The last two photos were all the ones I could find of the RPG world
    18. fleabay

      plane game

      You need another level of abstraction.
    19. Thank, lawnjelly and Wyrframe. I already separated <window.h> to .cpp. My problematic cpp file does not #include <window.h> neither directly nor indirectly (I just check it), but your advises (and JoeJ's) make me realize that I really should enable "C/C++>Advanced>Show Includes" compiler log. Thanks.
    20. phil67rpg

      plane game

      thanks
    21. BeerNutts

      plane game

      Phil is the hardest working troll I've ever been around. Hall of Fame stuff. Good job.
    22. phil67rpg

      plane game

      void drawcollision_one() { glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, texture[3]); glBegin(GL_POLYGON); glTexCoord3f(0.0f + screen, 0.0f, 0.0f); glVertex3f(0.5f, -0.5f, 0.0f); glTexCoord3f(0.167f + screen, 0.0f, 0.0f); glVertex3f(0.5f, 0.5f, 0.0f); glTexCoord3f(0.167f + screen, 1.0f, 0.0f); glVertex3f(-0.5f, 0.5f, 0.0f); glTexCoord3f(0.0f + screen, 1.0f, 0.0f); glVertex3f(-0.5f, -0.5f, 0.0f); glEnd(); glDisable(GL_TEXTURE_2D); } void timer(int val) { screen += 0.1667f; if (screen >= 1.0f) { screen = 1.0f; } glutPostRedisplay(); glutTimerFunc(500, timer, 0); } void coll_plane_one() { //draw bullet float x = 5.0f+horizontal_one; float y = 0.0f+vertical_one; float oWidth = 0.125f; float oHeight = 0.125f; //draw plane float xTwo = -5.0f+horizontal+up_two; float yTwo = 0.0f+vertical; float oTwoWidth = 1.0f; float oTwoHeight = 1.0f; if (checkCollide(x, y, oWidth, oHeight, xTwo, yTwo, oTwoWidth, oTwoHeight) == 1) { drawcollision_one(); } } I hope it is ok if I go back to my plane game that I started on last year. I am using a collision function to call a collision function but it does not call the collision function properly. when the bullet hits the enemy ship it does not display the collision function.
    23. dyl_pickle

      Need Social Media Manager + Promoter

      Hi! I believe I could help out with this position. I'm very active on most social media apps/websites so frequent posting shouldn't be an issue. Interaction with the game's audience shouldn't be anything too difficult to manage! If it's not an issue, could you please share more details about the game? I'd like to know more about it before diving right in. If you have any questions or if you're interested in having me work this position please let me know! 😊
    24. Second take. Try this as the main loop of the dynamic programming: for (size_t last_point = 1; last_point < smoothed.size(); ++last_point) { for (unsigned last_time = 0; last_time <= resolution; ++last_time) { double error = distance(smoothed[last_point], time_interpolation(original, total_time * ((double)last_time / resolution))); double min_error_in_previous_points = 1e20; for (unsigned prev_time = 0; prev_time <= last_time; ++prev_time) { double error_in_previous_points = fit_quality[last_point - 1][prev_time]; if (error_in_previous_points < min_error_in_previous_points) { min_error_in_previous_points = error_in_previous_points; time_of_previous_point[last_point][last_time] = prev_time; } } error += min_error_in_previous_points; fit_quality[last_point][last_time] = error; } }
    25. RickBaker

      Bare bones AAA team

      That’s why it’s hypothetical I have never come up with a good number in my spare time playing with it. I understand the pipeline of development. I know about assets, polish, the amount of time just those two take, again that’s why I say hypothetical and what would change if needed. Gta series runs around 600-700 employees at rockstar north. I also know about the costs of motion capture, the scoring for the sound track, the process times on rendering, that is real world I am trying to think of a solvable unsolvable question in an imaginary world. I am not meaning MMO here, I am referencing triple aaa type like diablo, torchlight, final fantasy, Zelda, civilization, total war, etc. although Zelda is locked by Nintendo so it’s always going to look horrible.
    26. Acosix

      What are you?!?

      http://trix.slovenianforum.com/
    27. Well, with borderless you still want to support a configurable render resolution. You just may need an upscaling step to the full display resolution, which you'll want anyway if you do dynamic resolution and/or if you want the UI rendered at full display resolution. Either way your backbuffer doesn't need to match the window size. Swap chains in DX12 can handle certain amounts of upscaling during scanout when you're in "direct flip" mode (bypassing the compositor). There's some more info here: https://docs.microsoft.com/en-us/windows/win32/direct3ddxgi/for-best-performance--use-dxgi-flip-model
    28. Rutin

      GameDev - Doom Challenge - D.O.A

      Yea it's a bummer! I had some nice wall variations and flooring. I had already planned out some lighting effects throughout the level and even how the laser would look. Will you be releasing anything by October 18?
    29. Yesterday
    30. Sacaldur

      Feedback for games idea

      You're certainly not the only one who tries to make informed decisions as early as possible, or to get done faster without sacraficing quality. There are several things one can do: Building Prototypes of (just) the mechanics that are questioned A/B testing Playtesting (meaning a Game Designer watches players play the game) Research (e. g. for similar games, how they performed, bad design decisions, ...) Limiting the scope (development time, budget, or game content) early on These are not exclusive (you can do several things), and some of these apply at different stages during the games development cycle.
    31. Embassy of Time

      What are you?!?

      You're a functional schizophrenic?? I've been looking for someone like that, the illness dfascinates me! I'm a highly functional autist (VERY autistic, though, think Rainman with a Sherlock attitude), and I turned my 'condition' into an advantage, as well. Not the same level, but it helps me understand the atypical brain a bit better than, I think, my peers around here... Sadly, my surroundings are chronicly normal, giving me little to work with. We should talk brains sometime! Btw, the link won't work for me?
    32. Embassy of Time

      Playing God - The troubles of creating a real-size universe!

      Re: Creating universes full of galaxies with PG, I doubt that would really be that hard, theoretically speaking (it would take time and study, for sure). This is mainly science, all working on mathematical laws. It's a puzzle more than a mystery, putting all the existing pieces together. Some tricky math would be needed to fill some gaps, creating a faux random structure. But from supernovae to grains of sand (or something more... esoteric?) on a shore, I started down this road believing it to be possible, and I admit I still do! Re: PG made with PG... Now that's a tricky one. Still, far from impossible. It's essentially the root of simple AI. I only needed 0 lines of code to make one of those things that scan a writer's writing and created a story that was like it, except when read closely was just a rambling mess of words, all style and no structure. On a similar basis, anything that can be expressed through a computer can be randomized, so I doubt it could not be procedurally generated. Damn. Now I am getting the urge to do AIish PG of stuff. Down boy, down!
    33. Dawoodoz

      Story feedback

      "The Sky Realm is a world where only gods live. People have worshipped them for generations as they are responsible for answering people’s prayers and giving them blessings for their happiness and wellbeing." This description of blessings and happiness sounds too pacifist for warmongering polytheism. Spice it up with ritualistic sacrifice or something more unique with a divine metaphor. "the Olympus trophy" Avoid direct references to anything outside of your fantasy realm. This has a huge affect on the theme and is the most difficult part on writing pure fantasy without a basis in alternative history to explain the language's origin. Words like "thug" from Hindi's "thuggee" would be okay thou, because that kind of word could appear from a translation of a similar word. "teleport to places without the need of electricity" This breaks the timeless feeling by using modern words. Using words like "portals" and "energy" would be okay for ancient fantasy, as if they always had the technology before us. "the Orchard High School" High School is a modern American concept. "they get sucked right into a dimension" A dimension is a vector along time/space in which one travels, an approximation of direction from temporal/spatial connectivity in a relatively coherent time-space fabric. You can say "another realm" or simply avoid using words for it in the final prose. I'm used to critique whole novels for aspiring authors, so just pick something that sounds interesting to start with. * Motivations allow the reader to relate with a character by knowing that they would do the same in their situation. Find all your actions and figure out the "why". If you can't find a motivation, skip the action. * You need to test the prose of your characters because that's the main content of the final script. Just a short example dialogue will give a sense of how they speak, where they are from and who they are. Note that prose for the opposite sex is difficult even for professional authors. * Standard three-arc stories has a low-point before they struggle up to success, but there's also riches-to-rags and other styles. Being completely flat without progress will not evoke any emotion, but might work for a grinding arcade game. Rags-to-riches is the story arc of RPGs by getting stronger. Being constantly at the bottom with contrast too much with game-play like in Max Payne 3. * Get inside your characters heads and find out what drives the conflict. Everyone sees themselves as the good guy until they are forced to fight for survival. I'd start with the 16 personality types and then move into loyalty, empathy, sympathy, ethics and moral. * It doesn't really feel like fantasy without at least one ethical dilemma that would never happen in our world. The choices here feels like picking a mystery box at a lottery show instead of having something to reason about. * You need to read more about old myths and religions to get inspiration directly from the source without worn out popular concepts. Athena is probably the most worn out concept right now and there are many ancient countries with equally interesting folklore to use for inspiration or base on directly.
    34. Just to let everybody know that I am available for work! Please check out my Soundcloud if you're interested and be sure to contact me for quotes or queries. Thanks!
    35. Hello everybody, Is there any recommendation about the shadow map size? I saw no difference between 2048x2048 and 1024x1024 in a 4 cascaded shadow mapping using a compute shader to reduce the depth of each cascade. What about the other kind of light? Any recommendation for the shadow map atlas for point light and spot light? Finally, is these question useless now that raytracing is the new world? Thanks!
    36. I believe the size is the same. If we run a 1920x1080 on a 4k monitor, the only difference is the desktop resolution when that happens. And the DXGI error I got was DXGI ERROR: IDXGISwapChain::Present: The application has not called ResizeBuffers or re-created the SwapChain after a fullscreen or windowed transition. Flip model swapchains (DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL and DXGI_SWAP_EFFECT_FLIP_DISCARD) are required to do so. [ MISCELLANEOUS ERROR #117: ]
    37. By 'curious about failure cases' I meant that I'd be curious in exactly what circumstances the algorithm failed. And yeah, I was suggesting making specific data available, which you did. I will mention one thing about that though: Just to be clear, by self-intersecting I don't necessarily mean that one point lands directly on top of another. I just mean that the path formed by the points intersect itself (which may involve going 'between' points, as you seem to be describing). Just looking at this part: You'd have to specify what you mean by division in this context, as it's not immediately obvious (to me at least). As for your question about geometry and physical distances (what you refer to as the graphical perspective), even though the input data consists of 1-d arrays, the contents of the arrays include 2-d positions. Given that at least part of the input is geometrical in nature, it seems natural that the solution to the problem would involve geometry. As such, I'm not sure what a solution independent of geometry (i.e. graphical perspective) would look like. If you can come up with a concrete example though, it'd be interesting to see what you have in mind exactly.
    38. DjIceCuddi

      Flight Sim Unity

      Hi I'm a 3D modeler attending University for my AA in Game Development and I'm working on a flight simulator I should have several different models all completely textured in 3 months but I need a programmer to write the controls and do the UI, basically I'm looking to build a team for this flight sim I allready have several models prepared so if you're interested private message me here and we'll talk.
    39. Vilem Otte

      Bare bones AAA team

      The Witcher 3 development costs were 306 mil. PLN - if you would convert that into USD that is $81 million. Witcher 3 is one of the largest open world RPG games I have played in past few years. I would say that it was a AAA experience. The Witcher 2 development costs were around 40 mil. PLN - about $10 million. I would dare to say that Witcher 2 was also AAA experience, despite being much shorter and not open world like its successor. It is considered as one of the cheaper AAA games. These games were developed in Poland, the costs for employees and living are slightly lower compared to Western Europe, and a lot lower than in F.e. California. You also need to take this into account.
    40. AtomicWinter

      Bare bones AAA team

      Below is a video showing the credits of Battlefield V. It's almost 15 minutes long to put it into perspective. It will also show what the different positions are. Two years for a AAA title with only ~15 people... Not sure. https://www.youtube.com/watch?v=AJv98I6eY9E
    41. Doesn't DXGI_SCALING_STRETCH already do the job for you? EDIT: this also may help: https://docs.microsoft.com/en-us/windows/uwp/gaming/multisampling--scaling--and-overlay-swap-chains
    42. I would like someone who can post with a high frequency for 4-6 weeks. This position would ideally continue with posts made as often as possible - interacting with users, posting content and continuing an online dialog for our website(s).
    43. @alvaro Okay, i made a new VIDEO where i draw a self intersecting trace and it fails at the first time. I'am sure that the data given to your code start with zero. Or else it would not work sometimes when its not intersecting. I believe that, WHEN its intersecting (1st video) it just looked like its intersecting but didnt actually hit anoter previous coordinate point. I had Line style ON. So SFML drew a solid line but just went inbetween 2 previous vertices and actually didnt hit one directly. At least this is how i imagine it... I also switched the Line Style of SFML back to just dots/vertices for better visibility. I hope that what i did, are the expected actions. @Zakwayda Haha, sounds promising: "Half way there..". I dont exactly understand what you mean by "curious about failure cases". Do you mean i should provide data that lead to a failure? If so then i just did that. 😀 The part that i dont understand about solving this problem is: Why do we look at it from a graphical perspective when the actual data is actually a straight "line"? (1D Array/Vector). I'am sure there is more to it than i understand. But thats just my 2 cents. Like, if the original vector is smaller then the smoothed one. Divide the smoothed one by the original. And then interpolate the segments somehow. Why do we need to incorporate "physical" distances? Data.txt
    44. Tom Sloper

      Bare bones AAA team

      AAA expectations are for high content. Takes time to create all that content.
    45. The last game company I went on interview with just had some "chill dude" who paid for everything. They just had to follow his lead in every way without complaining about him recruiting people based on looks rather than skills.
    46. I couldn't agree more that borderless fullscreen is a much nicer experience. But the problem is what if a the user has a 4k monitor but a lame GPU ? Exclusive fullscreen seems like the only way to go in that situation. And you don't want to break their experience if they want to skype someone in the middle of the game. Metro : Exodus minimize the fullscreen window in that situation and re-enable the fullscreen state once it gains focus again. I guess somewhere down the line, they have to call ResizeBuffers after this situation happens, even they are minimizing the window. No one wants a GPU removal in the middle of a game. The important thing is, how should we know when that happens ?
    47. Green_Baron

      Old CRT Radar scope emulation

      One could calculate or estimate the gradient of the phosphorus fluorescence/luminescence from white over several intermediate steps, convert to rgb values and store them in a ramp texture. Or get the curve empirically if circumstances permit. The lookup in the texture would be time dependent, over one revolution of the sweep, maybe a little less or more. There are papers on all kinds of -escences. The spectroscopy guys seem to be interested in such stuff, apart from oscilloscopy and such.
    48. [The original post with its original format can be found here] Players want to play, they don't want to wait. Help them buying your game: reduce your game's download size with Unity Addressables Hosting. And a year later? Offer them a DLC based on, guess what? Addressables. Picture your potential player on a Friday afternoon. Your player has just left behind a hard week with long working hours. Their wife or husband is gone to their family's country house for the weekend along with the kids. The perfect time to go home, order pizza and browse through Steam with the wallet at hand. With or without kids, with or without partner, we all had these awesome weekends. Just videogames, please. So your player comes across your newly released game in the Steam shop. They see all the effort you put into creating polished content. No need for convincing, they hand in their credit card details and buy two copies of your game. One for theirself, another for their friend / brother / sister. You get your 19.95 bucks, twice. Both users happily start installing the game. But wait... A wild Steam installation pop-up appears. The remaining installation time suddenly exploded to 12 hours What, 12 hours for over 30GB? What the #*@! is in this game? I'm not wasting my weekend on this shit, I'm out! What happens afterward is not uncommon. Your ex-player requests a full refund and purchase instead the next game in their wish-list. One of the pain points for players is the waiting time wasted on downloading all the bytes of the whole game and start playing. People do not have that much time. Nothing will burn a hole in your wallet faster than an angry player. Do you need to include in your installation package all these assets that are spawned in the level 5 of your game? Chances are, you don't. Players will need a couple of hours to play through the initial content of your game. Use that to your advantage The idea is simple. Provide the minimum content possible in your game installation package and download the rest while playing the initial levels of your game. Can you picture your player ready to play in a mere minute after purchasing your game? How different would the reviews be compared to the ones commonly found with huge games? Ideally, your game's download size should be below 100MB. But how? This is what you will get by the time you're done implementing the information of this article: Ridiculously tiny installation sizes A new Amazon S3 bucket to host your content online Upload Unity Addressable Assets to S3 through the Unity Editor Download the Unity Addressable Assets from the S3 bucket in your player builds A high-five from your happy players Fox / Via mashable.com Level 1 Developer: "Storage is cheap, anyway" We started developing our game a few months ago and we have big plans for it. You and I worked endless hours into creating highly polished content. Not only that, we saw some great offers in the Unity Asset Store, so we bought several asset packs at heavily discounted prices. Now our game is full of content our players will love to play through. Those Sci-Fi modular parts, the exploding particle systems, the punchy soundtrack. It's all gorgeous. And heavy. And slow to download. Now your Android APK is well over 2GB, so you need to start messing with expansion files, which adds another good week to your efforts. But it's fine, we all have time here. Or maybe you're publishing on Steam, so you can be at 30 GB, no problem. You just need a few hours for uploading it. And players? It's ok, people have a fast connection nowadays. So we released our game. Some players reported some bugs, so we make a 5-minute fix and we go through all the long process again. Build, wait for hours, upload to stores, wait for hours. And our players? They just re-download the whole thing again. Wait for hours, then start playing. It's not a big deal. Only that you are not recovering all the time you wasted on this previously. And a great deal of your players will stop downloading your game once they see how many hours they have to wait. That only gets worse with each update. Did I mention refunds? We can do better than this, now that we have the tools. Let's upgrade our skills to Level-2. Level 2 Developer: Unity Addressables Hosting Welcome to Unity Addressables. This package will allow you to efficiently manage your game assets. That, my friend, includes online distribution. For an introduction on this topic, visit my previous article on Unity Addressables Benefits for your game. These are the steps you and I will be following in the article: Set up an Amazon S3 Bucket for online distribution Mark our content as Unity Addressable Assets for online distribution Upload our content to the cloud Profit from tiny installation sizes (and others) Like granny said, a 2D sprite is worth a thousand times: Unity Addressables Hosting with Amazon S3 - Steps Let's start with... 1. Setting Up a Free Amazon S3 Bucket It's our lucky day. Amazon offers a free tier for their S3 service. That means, we're going to host our content for free. The limitations for their free tier is mostly storage space and the number data transfers. At the moment of writing this, you can store for free up 5GB and perform 20,000 GET and 2,000 PUT requests, but do double check it in the official site of AWS Free Tiers. What we are going to do here is to create an account for AWS so we are ready to upload our game content for further distribution. You and I will do this as fast as possible. No need to waste time in detail. No BS. Setting up Amazon S3 Hosting for Unity Addressables 1.1. Create AWS account Navigate to the AWS Management Console and click on Create a Free Account. Enter your e-mail and bla bla bla. That will take you roughly a minute. Be aware that you'll need to give them your credit card info to verify your identity. 1.2. Choose AWS Plan Unless you're going pro right from the start, we want to evaluate this in our game first. So, after confirming your account, choose the basic plan. 1.3. Create your first S3 bucket After a few minutes, your account will be activated (you'll get an e-mail). Then, sign in to your new console and open the S3 service panel: You are now located at the S3 control panel. Now we are ready to create the bucket like shown below (change your bucket name and region!): Leave the permissions set to public for now, you'll have the chance to tweak them in the future. Your S3 bucket for Unity Addressables is now ready, congratulations! That was the most tedious step. The next step is a piece of cake: time to get your Unity Project to produce downloadable assets. Summary: Use the AWS Management Console to create a Free Tier S3 Bucket For starting, assign public permissions to your S3 Bucket Alternatively, use another storage service based on the spreadsheet in the Resources Pack 2. Unity Addressable Assets for Distribution Finally, we made it to Unity. That whole S3 process was getting old. I will assume you have some content marked as Addressable in your game. If that's not the case because you are new to this, don't worry, I have you covered with the previous Unity Addressables Tutorial I wrote. I'll show you the steps to get content uploaded in your newly created AWS S3 Bucket. We will do so based on a project I created for this purpose. Instead of following the whole story, you can also skip the line, get access to the code now and read later. Unity Addressables - Profile Settings A. Addressables Profile Configuration The way to start is to tell Unity where to load remote assets from. That we achieve by tweaking our Addressables Profile Configuration. In the Addressables main window, click on: Profile: Default → Inspect Profile Settings. This will redirect you to the settings we need to tweak. Here is a collection of funny toys you can play with, but for our purposes we just need to focus on the Profiles section. We want to make sure we set the Addressables RemoteLoadPath field to the correct URL. We form the RemoteLoadPath URL by concatenating our S3 Bucket URL with the Unity variable [BuildTarget], like below: https://YOUR-BUCKET-NAME.s3.YOUR-REGION-NAME.amazonaws.com/[BuildTarget] E.g. https://thegamedevguru.s3.eu-central-1.amazonaws.com/[BuildTarget] The [BuildTarget] variable is left on purpose so Unity fetches in run-time the right assets for each of the platforms we build for. Android assets will be packed differently from Standalone, so each of these platforms will require a different directory. The way I found my S3 Bucket URL is by uploading a random file; if you then navigate to its details, you'll see the base URL of your file and hence your bucket. B. Addressable Asset Groups Configuration So, we just told Unity where to load the remote assets from through the RemoteLoadPath variable. Great. What is left is to tell which assets should be loaded remotely. Easy. Go over the heavy assets you want to be downloaded remotely and mark these Assets as Addressable. In our case, it's the skybox materials. Open the Unity Addressables Window and assign these assets to Addressable Asset Groups. If you are just starting with Addressables, assign them to a single group for now; e.g. Skyboxes. Eventually, you'll want them to be grouped in a way that makes sense (check my Level-3 guide on Unity Addressables Tutorial for more info). Navigate to the Addressables Group inspector settings by clicking on the group and make the following adjustments: BuildPath is set to RemoteBuildPath LoadPath is set to RemoteLoadPath You can see a graphical breakdown of this entire process below. Asset Groups for Unity Addressables Hosting Unity Addressable Asset Group Settings for Network Delivery We now have our skybox content assigned to a group that will be downloaded by your players in run-time. Summary Set RemoteLoadPath to the base URL of your web hosting provider Append the [BuildTarget] variable into RemoteLoadPath to differentiate multiple platforms Assign your Unity Addressable Assets to a group and tweak its settings to use the remote paths so it'll be downloaded from your web hosting provider 3. Uploading Content to Amazon S3 All our settings are now in place. What about uploading our content to S3? This is a simple two-step process: Build player content. Upload it to S3. Building Addressables Player Content is straightforward. Open the Addressables main window and press the button that does just that. This will cook the assets for the current platform your editor is in. Unity Addressables: Build Player Content The output content will be stored in the path dictated by the RemoteBuildPath variable you happened to see early in the Unity Addressables Profile Settings. If you didn't modify it, it's likely to be in a subfolder of your project called ServerData. The second step involves navigating to that directory and dropping its contents into the website of your S3 bucket, as you can see just below: Unity-Addressable Assets - Upload to S3 There you have it, it's that simple. However, this can quickly become tedious. It's a very manual task that could easily be automated. I did just that so now uploading all my assets takes the press of a button inside Unity Editor. To upload your Unity Addressable Assets directly from the Unity Editor, check my Unity Addressables Hosting Resource Pack at the end of the article. 4. Downloading Assets from Amazon S3 This is the part we all were waiting for. You now have a game you can distribute that is significantly smaller. The remaining part is launching it and watching it download the assets on demand! If you want to make sure these assets are being effectively downloaded, delete the data from your S3 Bucket, disable the caching option in your Addressable Asset Group Settings, rebuild the content and your player. If you launch it, you should see a few error messages pop up, as you can see below. Unity Addressable Assets Download Error If you followed this tutorial on Unity Addressables Hosting, chances are, you will be totally alright By now, the asset groups you marked to be remotely downloaded are hosted in S3 and Unity knows how to fetch them. The Gamedev Guru's S3 Upload Tool Level 3 Developer: Unity Addressables Hosting Resource Pack By now you should have your first Unity Addressables Hosting experiment up and running. You learned how to build player content specifically to target downloadable content. That's great, but there's more than just the basics. To help you further, I prepared a Free Unity Addressables Hosting Resource Pack just for you. This bundle contains: A spreadsheet comparing different hosting alternatives to the pricey S3 An extension to upload your Unity Addressable Asset to Amazon S3 directly from the Editor The source code of this project; see it for yourself Newsletter access with exclusive free content Level up your skills. Download your free Resource Pack now.
    49. Hello, As the title says, looking for a SMM / Promoter for my hobby project. Project is nearing completion, your job would be to start generating buzz & bringing in views via Twitter, Instagram, Facebook, Forums, etc. Lots of material for screenshots and screen-recordings. Twitter account currently has > 50 < 100 followers IG sitting over 1,500 If interested, please DM and I will share project website more details. Looking for someone who can post minimum 4-7x week across main social platforms.
    50. arnero

      The beginnings of a solar system

      Yeah just wanted to tell you that the text was not perfect. Only 99% 😉 . With everything SciFi I want it to not give up realism unecessary . I like the planets.
    51. arnero

      Old CRT Radar scope emulation

      Some atoms or molecules have long living excited states. A single atom has lots of states with different lifetimes. But I think, most of them live quite short. I used ps light pulses to pump/probe them . A crystal can be doped. At such an atom long living states may occure. But then phosphore, I mean it looks so low tech. I think that maybe electrons and hulls in a semiconductor are involved. They need some time to find each other. This gives a 1/t dimming over time ( as opposed to exp(-t) for single atoms). We could measure this with simple and cheap electronics in the future school teachers labs. .. I think I have tried to google this phosphor stuff, but was not satisfied. Also strange that these CRTs hold stuff for seconds while computer crts flicker at 60 Hz...
    52. Why would you parameterize that with a macro, when you can just isolate that implementation detail into its own .CPP? // service.h #pragma once class ServicePayload { ... }; class Service { public: void send_operation(ServicePayload const &); void default_operation(void); }; // common/service.cpp #include "../service.h" void Service::default_operation() { ServicePayload basic( /* ... */ ); send_operation(basic); } // windows/service.cpp #include "../service.h" #include <windows.h> void Service::send_operation(ServicePayload const &p) { // ... } // linux/service.cpp #include "../service.h" #include <iostd.h> void Service::send_operation(ServicePayload const &p) { // ... } ... and then always link against common/*.o, and link against only windows/*.o or linux/*.o depending on which EXE you're building.
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.