Jump to content
  • Advertisement

Search the Community

Showing results for tags 'Learning'.

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 238 results

  1. Unlock Audio

    Learning to Embrace Criticism

    A number of years ago, I had the opportunity to work on a trailer with a very established music producer. To give you an idea: he had recently finished contributing to a Rihanna album. I was ecstatic for the opportunity. I get to work with and learn from this guy?! YASS! We listened through the music track I had written and he began picking out potential improvements with the arrangement, mix, production, etc. I scribbled down everything I could, taking no offense whatsoever. I mean, who was I to question what he was telling me? We talked for a bit - I had some questions on how to tackle some of the issues he brought up. The session ended with me having some serious homework. But I was STOKED! I spent five days moving things around, changing settings, making small tweaks. This was me giving my all. I wanted to impress him SO much. By the time we met next, I couldn't think/hear of any way I could do better. The next step was to watch his face light up when he heard how good I was. Right? We pushed play and he seemed to like it. He listened all the way through without stopping and even had a positive look on his face. Not the utterly enthusiastic reaction I was looking for, but hey, he was kind of a quirky personality. When it ended, we sat in silence for a few seconds before I asked "what do you think?" "B+" B+?! Hey! That's not bad! I mean, if he's saying B+, then for most people it's really good! Maybe a few small tweaks and we're good to go. For a second there, I was SO HAPPY! Then he says, "Unfortunately, we're in a business where it's either A+ or F." He then proceeded to list off even more homework than he had given the last time we met. It was a bit devastating - I felt like I had given 110%. And it definitely seemed like I hadn't impressed him. It’s moments like this that can crush your spirit and make you feel like giving up on a piece of creative work. While in the short term that experience stung, I realized criticism is actually an opportunity and encouraging, though it can be perceived very differently for any creative artist than for most other professions. For many amateur artists, to criticize their work is not criticizing a thing they did, it is criticizing an intrinsic part of themselves. There's a lot to unpack here. First, it's important for an artist to realize the criticism is not about direct attacks on their self-worth. The issue is how criticism is expressed so that it aids communication, the experimentation process, or it's execution - not a personal, intimate artistic failure. As a creative whenever you put a piece of work forward people will have opinions about it. It will naturally feel like they are attacking your level of skill. You must develop a thicker skin. Second, the fact that someone is criticizing your work means they think it's worth having a potentially uncomfortable conversation about. Not only that, they think you're worth having that conversation with. Think about it - we all have people in our lives who we've kinda given up on. - They always talk about the things they're going to do but never actually attempt them. - Everything is someone else's fault - not theirs. - Their idea is so bad that you can't even begin to determine how to communicate everything that's wrong with it. At a certain point, we stop caring. We stop saying "I don't know if that's a good idea.." We stop pointing out what doesn't work or what does. We stop expecting them to follow through. Ultimately, we stop taking them seriously. To that end, we stop objecting. We stop trying. We stop criticizing - because we feel the idea is so terrible, or the person won't or can't act upon our input. So why try to help? If someone criticizes your work, it means they think the potential of your idea is worth being uncomfortable about. It means they think that if they tell you their thoughts, you'll understand them and are capable of implementing them. Criticism means someone thinks you and your idea are worth helping. It means they think you and your ideas have value and can be better than they currently are. While my additional homework from the producer was initially disappointing, it also meant we were making progress. My music was worth working on and I was worth talking to. It took a while, but we ended up with one of the best overall tracks I've made. Those sessions became a learning experience in craft and in self. Be happy if someone is willing to tell you that something isn't A+ and why. Welcome it. Embrace the criticism! Be sure to check out Unlock Audio and grab some free stuff. Want to reach out? hello@unlockaudio.com Elliot Callighan is a composer and sound designer, and the owner of Unlock Audio. He also teaches in the film and game programs at DePaul University and is an Officer in the Army National Guard.
  2. Several years ago I made a series of training videos to teach artists how to write real-time shaders in HLSL. The series starts out with very simple concepts so that someone with no programming experience at all can start right from the beginning and learn to write shaders. Further into the series, I cover more advanced topics such as parallax mapping, global illumination, reflection and refraction, and vertex animation. Everything is explained step by step so it's easy to follow. Originally, the videos shipped on 3 DVDs that sold for $60 each. Sales were pretty successful, but the company that sold them went out of business just a short time after the 3rd DVD was released. So I've decided to upload them to YouTube so that everyone can watch them for free! My hope is that they'll help aspiring artists and programmers learn the art of shader creation. Although some of the material is out of date, almost all of the principles taught are still valuable to learn and understand as a foundation to learning to write shaders. Here's my channel: https://www.youtube.com/user/bcloward The series consists of 40 videos. I'll be releasing a new video each weekday starting this week - so if you're interested, be sure to subscribe to the channel and check back often. If I get enough interest, my plan is to start creating new videos that demonstrate more recent shader techniques. Let me know what you think. I'd love to hear your feedback! -Ben
  3. This video tutorial is very great! For example, we want to add a cube on a scene: bpy.ops.mesh.primitive_cube_add() You can read about this API function in the documentation: primitive_cube_add Create a work folder with the name: mock-object-for-primitive_cube_add-api Open Blender and safe project in the work folder Open "Scripting" tab in Blender from the top menu Open your favourite Python editor. I use VSCode. You can read about how to use VSCode with Python here Python in Visual Studio Code Create a file with the name "main.py" in you favourite Python editor. This file must be placed in the "mock-object-for-primitive_cube_add-api" folder Write in the "main.py": print("hello from blender") You can run this code from command line terminal or from VSCode internal terminal. Press in VSCode "Ctrl+`" and enter command: python main.py You will see in the console terminal this message: If you opened "Scripting" tab in Blender you will see an ability to open Python script in Blender. Click on the "Open" Button in Blender Script editor inside Blender Choose the "main.py" file and click the "Open Text Block" button Open the Blender console terminal. For this you need to select in the main menu of Blender "Window" and select "Toggle System Console" Run the "main.py" script from Blender. For this you need to place your mouse pointer on text area and press "Alt+P" button You will see this message in the Blender console terminal: If you will change a code in an external editor like VSCode you need to reload in the Blender text editor. For this you need to press the "Alt+R+R" button You need to add only one file: "main.py" to the Blender text editor. Another files you need place in the work directory: "mock-object-for-primitive_cube_add-api" Copy this code to the "main.py" file: main.py import bpy import sys import os # Get a path to the directory with .blend file # There are the scripts in this directory dir = os.path.dirname(bpy.data.filepath) # Is the directory in the list with included # directories? If no, include the directory if not dir in sys.path: sys.path.append(dir) import object3d_service # Reload module. It is necessary if you use # external editor like VSCode # For reloading module you need to press in # Blender: Alt + R + R import importlib importlib.reload(object3d_service) # Note. You do not need to open all scripts in Blender, # you need only this script from object3d_service import Object3DService def main(): objectService = Object3DService() objectService.create_cube() if __name__ == "__main__": main() This is another files that you need to copy to the work directory: test_blender_service.py import unittest from unittest.mock import MagicMock from object3d_service import Object3DService class BlenderServiceTest(unittest.TestCase): def test_myTest(self): # Arrange object3DService = Object3DService() object3DService.blender_api.create_cube = MagicMock("create_cube") # Act object3DService.create_cube() # Assert object3DService.blender_api.create_cube.assert_called_once() object3d_service.py from blender_api import BlenderAPI class Object3DService: def __init__(self): self.blender_api = BlenderAPI() def create_cube(self): self.blender_api.create_cube() blender_api.py import bpy class BlenderAPI: def create_cube(self): bpy.ops.mesh.primitive_cube_add() Delete a default cube from the scene. Now you can reload Blender code editor ("Alt+R+R") and run the code ("Alt + P"). You will see that a new code will be created: You can set breakpoints in "main.py" because there are mock-object for Blender API. And you can run unit tests using this command: python -m unittest You will see that unit test are passed.
  4. Hello and welcome to this weeks Dev Diary! Today I'll be continuing on how upscaling heightmaps affects the end result, when you wan't to create more detailed terrain with ease. After last weeks test with the heightmap upscales, I decided to try to upscale the heigthmap even further - from 3000 x 3000 pixels to 40 000 x 40 000 pixels, just to see if there would be any return on investment. Or in other words, if there would be any benefit from the extra detail, that the upscaling algorithm creates. Initial Testing First, lets compare the first set of renders. Like last week, all the settings remain unchanged between renders and only the heightmap is changed between them. This is done in order to eliminate the changes that changing the the lighting or camera angle could cause by creating/showing shadows in different perspective, if moved between renders. Plane 8m x 8m in size. Subdivided several times, first by 100, second by 6 and third by 1 (or 100:6:1 subdivision) Diffuse Scale 1.0, midpoint 0.5 (defaults) Resolutions from top to bottom; 750 x 750, 3000 x 3000, 40 000 x 40 000. The above 750 x 750 pixel heightmap sample is from the original 3000 x 3000 heightmap. The above 3000 x 3000 pixel heightmap sample is from the upscaled 12 000 x 12 000 pixel heightmap. The above 10 000 x 10 000 pixel heightmap sample is from the upscaled 40 000 x 40 000 pixel heightmap. Both upscales were made using the original 3000 x 3000 pixel heightmap and slicing a 1:16th piece (or 1 km2 piece) from the bottom left corner of each of them, in order to highlight the difference in details. As you can see, the differences are most notable between the Original and the smaller upscale, but from there, the added detail is a tad harder to notice - but it is there. After this, I also tried to ramp up the data points, or in other words subdivide the plane even further and see how much that changed the outcome. The settings are identical, but the subdivision is greater (100:10:1 instead of 100:6:1 subdivision) 750 x 750 pixel heightmap sample, with the 100:10:1 subdivision. 3000 x 3000 pixel heightmap sample, with the 100:10:1 subdivision. 10 000 x 10 000 pixel heightmap sample, with the 100:10:1 subdivision. The added data points did increase the level of detail quite a bit. The difference between the two upscales are still hard to see, but still visible after closer inspection. The difference is more visible on 4K monitors, but can be seen on Full HD monitors also. Having these images on top of each other and toggling between them shows the differences much more clearly. Going For More Detail Since it will look essentially the same on the rendered images, if I increase the land area of the plane in order to try to bring out even more detail out of the renders, I'm not conducting those tests. How ever, there is still one more way to up the ante - an even further zoom in to the minute detail differences of the upscales. To do this, I needed to take even smaller samples, dividing the heigthmaps in 8x8 grids (instead of 4x4 as shown above) and taking one piece out of each of them. For consistency, I'll use the bottom left corner as a sample. 375 x 375 pixel heightmap sample from the 3k heightmap, with the 100:10:1 subdivision. 1500 x 1500 pixel heightmap sample from the 12k heightmap, with the 100:10:1 subdivision. 5000 x 5000 pixel heightmap sample from the 40k heightmap, with the 100:10:1 subdivision. Edit; You can see the difference most clearly on the illuminated back portion of the landscape as more "grain" or roughness among the white. The Question Remains But is it really worth it? That depends if you want all the possible variation out of the heightmap, that could possibly get squeezed out of it, as it is not necessary. but it might just create enough minute differences in the terrain, that the end result will look more natural in the end. But on the down side, the more faces you have, the more the performance hit will be. Even as the added data points, or mesh resolution will affect the performance of the game, Skyrim also has high def mesh mods, which make the original rather low poly models into much more detailed meshes, especially the rocks, mountain faces and characters. In this light, it might be more than feasible to increase the detail level of your terrain meshes even further. The land area of the smaller samples of the above testing is roughly 500 square meters, that has been fitted on a 8 by 8 meter plane object. The second thing to consider is how many objects you would need to divide your terrain in to, in order to maximize the resolution you can get out of the heightmaps. As creating a single object that would be miles long would require some serious machine power and RAM from your computer, it's not feasible for all to make a large monolithic map area. Creating a large amount of smaller pieces on the other hand is more work intensive and requires more time and patience from the developer to insert them all in the game world and line them all up in the correct order. The Conlusion Edit; The benefits of upscaling your heightmap only show, when you divide it to smaller samples > the smaller the pieces, that you divide your upscaled heightmap at, the more benefit the upscaling has. Alternatively, the same benefits of the upscaled heightmap can be seen when making a larger and closer to IRL size map, but to my knowledge, a huge monolithic map with lots of detail takes up more processing power. Though this might be an utterly out-dated notion these days - I need to do more research on that. What i know for sure, is that it limits the amount of subdivision that can be used while editing the landscape, as Blender is very likely to crash on my PC when I go with any larger subdivision than 100:10:1 and the amount of subdivision matters. Edit; When you are upscaling your heightmap, the algorithm you do it with matters the most, as the more the algorithm creates more gradual shades between white and black while trying to make sense of the original shapes, the more likely you get more added details to the landscape. Still, this method is not for purists, as it does not bring the absolute original shape of the land back to the image, just adds more variation. Edit; As an example, if you know that the heightmap represents a 4 km2 sized area and the accuracy of the satellite/airplane measurement was something between 2 - 30 meters. If your heightmap has an accuracy rating of 10 meters, then by upscaling the heightmap to 10 times the size of your source image, your get a simulated accuracy of 1 meters. If you want to have more granularity than that, you can go for as large as you want (or can), but at some point there will be no visual benefits. To determine that point, you need to experiment for your self on a case-by-case basis. Edit; As the GameDev forum does not show the images in full screen, some of the differences between the images is apparently lost, when trying to spot tiny differences. The original images in full screen show the differences much more clearly. You can download them from here 040.7z All in all, the more you are willing to work for your terrain mesh fidelity, the more you seem to be able to get out of upscaling your heightmaps. This seems to continue as far as you your self are willing to take it, or at least to much smaller (or larger, depending on how you look at it) scales than what my testing indicates here. It will be interesting to see how much of a performance hit it will have, when using a higher detail mesh for terrain. This will be revealed when I get to the first testing phase, with only a small land area and the 3D character model that I created earlier. But before that, next weeks Dev Diary will be about slicing big images seamlessly into smaller image files semi-automatically using GIMP, so stay tuned! Thank you for tuning in, and I'll see you on the next one! You can check out every possible mid week announcements about the project on these official channels; • YouTube • Facebook • Twitter • Discord • Reddit • Pinterest • SoundCloud • LinkedIn •
  5. Hello and welcome to this weeks Dev Diary! This week I will be showing some comparisons on how upscaling heightmaps effect them and what potential gains that might have for the developer. First though, a tiny report concerning my PC; I re-installed my Windows 10 to see if that would reduce the crashes I have been experiencing. So far, there has been only one BSOD during night, after the computer had been on for 3 days straight. Previously my computer crashed at more irregular intervals, sometimes even after 24 hours and the next few days stay up just fine for 4 or 5 days. It is clear though, that despite running DISM and SFC after every crash, there were some corrupt files that were causing the more sudden crashes. The Theory Behind The Practice The theory behind the upscaling of the heightmaps was, that since most re-scaling algorithms add some details to the file, as they try to retain the details of the original file, upscaling heightmaps with certain algorithms should add granularity to the image, thus making the elevations smoother. This in turn should reduce the need for tweaking the 3D model after the heightmap has been used for it. The below examples share the same settings, that are; Plane 8m x 8m in size. Subdivided several times, first by 100, second by 6 and third by 1. Static light source - the lighting was unchanged between renders. Static camera - the camera remained stationary and settings unchanged between renders. Displacement effect scaled down to 0.1333 Above is the 3000 x 3000 pixel heightmap and below is the 12000 x 12000 pixel heightmap. The difference is really subtle when compared to such a large area, as the covered area if the heightmaps are about 4 square kilometers. The differnece becomes more apparent when you scale down the area, as seen below; Above is the 750 x 750 pixel heightmap, taken from the original 3000 x 3000 pixel heightmap. Below is the 3000 x 3000 pixel heightmap, taken from the upscaled 12000 x 12000 heightmap. As you can see from the above pictures, there is noticeably more detail on the higher resolution heightmap, as there are much more height differences, due to more graduation in the heightmap image. It seems like lighting changed a bit, but in truth, those are extra bumps in the terrain. The effects of upscaling the heightmap could still be much more visible, if the sample image used for diffusion were even smaller. I'll try upscaling the heightmap even more in the future, and see where the differences become not worth the hasle, but it might well be, that depending on how much detail you want to have in the 3D mesh, there is no upper limit. At least when using a decent quality source for the heightmap. The Raw Images It wouldn't be so educational without the source image examples, now wouldn't it? Here are the side-by-side comparison images from the bottom left corner of the upscaled heightmap; As you can see, the differences are must harder to spot from the sample images. The only clear difference is, when you compare the "Nearest Neighbor" with any other method of upscaling the image. I personally like the results of the "Preserve Detail V2" without the noise reduction effects, which makes the road tracks quite clear also. Conclusion This is but one example of how testing different solutions can bring benefits to developers, be it a beginner or a pro. Even when graphical designers often say, that upscaling regular images in conventional ways is not a wise thing to do (for a good reason), it depends highly on the application you need the upscaled image for. Hopefully this was beneficial to some of you. Thank you for tuning in, and I'll see you on the next one! You can check out every possible mid week announcements about the project on these official channels; • YouTube • Facebook • Twitter • Discord • Reddit • Pinterest • SoundCloud • LinkedIn •
  6. After more than 10 years as a Game Designer in very successful companies (Senior Game Designer at Matific, Lead Game Designer at TabTale, Owner at Lookandfeel Games), I had — and still have — the privilege and the opportunity to utilize data from hundreds of millions of users around the world. Now’s my time to share my knowledge with the world. For a long time, game designers utilized data through playtesting, usability sessions, data, and reports in order to ensure the best experience for their players — and their products. The great thing about working in big game companies is to have a dedicated data-analysis team to analyze the games’ data and tell me their pros and cons, including interesting insights and trends. Sorry to disappoint — your idea didn’t work. To disappoint? Hell no! Thanks for the opportunity to tell me I should rethink my design so I won’t continue to think that I nailed it, while in reality I didn’t. How can I improve otherwise? How can I gain mastery otherwise? Based on data-driven insights, good ideas are being duplicated and leveraged in my next projects, and the ‘trial balloons’ are being adjusted or dropped accordingly. Here’s my best practices bible with lessons learned from +250 games — proven by data to improve your monetization, retention, user experience & engagement. UI POSITIONS Speaking on mobile games, considering that most players are right-handed, the devices have comfort-to-reach area and hard-to-reach area depends on their orientation: Now take a look at the below examples from various mobile games: As you can see, in the most comfort-to-reach area, the best practice is to place interactive elements which can lead to monetization: Store button More apps Ads Users are likely to interact with these elements — unfortunately even by mistake. Those mistakes are what we call a dark-UX, but it’s proven to maximize revenues. Note that for bottom ads, you must include at least 10 pixels margin from the ad to the interactive content in order to follow ad-serving guidelines in most of the platforms. SLIDERS Because the screen’s real-estate is limited, and the content in games is just getting bigger, sliders become a very handy component to expose many options to the users regarding extra content, without the need to navigate away from the main scene. Here are five examples of different slider designs which offer horizontal or vertical sliding, used in world-selection, shop, landscape categories\items selection, portrait categories\items selection, and avatar customization: Because the slider’s content expands outside the screen, we need to help the users understand there’s more content inside. Here are the best practices for sliders: Partly visible items: Make sure that content which expands outside the screen’s border will still be partially visible on screen, so users will understand there’s more of it. Animate from end to start upon launch: When introducing the slider to the users, either by automatic event or by a user-initiated event, make sure to launch it on its end-of-content, and scroll-reverse automatically to the beginning of its content. If your slider contains lots of content (i.e. 10 steps to scroll from beginning to end), you can just start from “step three” of the slider and then animate scrolling to “step 1”. This will show the users that there’s more content on the other side. POP-UPS Pop-ups are a good game component for delivering abstract and informational messages to users. Here are some useful best-practices: Associate visible UI with hidden UI via animations: When pop-ups are opened due to user-initiated action on an interactive item\button, animate their launch from the triggering button (i.e. scale up a store-pop-up from the store-button, and scale down the store-pop-up back to the store button upon closing). This way users will associate the pop-ups with their initiators better. Have a semi-transparent dim background behind popups: Because they often require a user-action, and might be big in size on screen, we should help the users understand that their session is paused, but still reachable. Pop-ups should be seen over a dim background that will allow the users to see a bit of their session behind (the dim background should animate quick fade-in parallel to the pop-up open animation, and fade-out parallel to its closing animation). Avoid the X: Many pop-ups contain a default design choice of an “X” button to close them. Most users recognize this “X” button as a pattern of an ‘annoying’ content and closing the pop-up instantly. If your pop-up contains valuable content to the users, and you’d like to increase the probability that they’ll read this content, make sure that the “Close” button will be designed as one of the user’s choices and not as an “X” button. Note: Don’t have duplicate options with the same meaning (i.e. both “X” and “Close” in the same pop-up; users will just tap the “X”). Pro tip #1: Tapping the dim background should close the popup as if tapping “cancel”, unless it’s a store popup — then only closing via “X” will close the store. Pro tip #2: Popups with rich text (such as intro story popups) should show their “X” or “Continue” button only after 2 seconds delay. This way users will be more likely to read the important content of the pop-up rather then instantly close it. USER CHOICES (VIA POP-UPS) As I mentioned above, lots of pop-ups require user-action as they are offering the users to take a decision. Here are several examples of pop-ups which asks the users how to proceed — do you see a pattern? As you may see, the rule of thumb here is as follow: User decisions which are good for your game are placed on the right side of the popup — As a game designer you want your players to confirm a purchase, you want your players to share the game, you want your players to spend in-game currency… etc. : User decisions which are bad for your game are placed on the left side of the popup —As a game designer, you won’t want your players to quit the game, disconnect, reset progress… etc. : Although you might think that this is considered as a dark UX, it can actually help the users a lot — you don’t want your users to accidentally reset their progress, do you? Anyhow, the key here is to lead the users to take a decision you want, which is good for your game’s KPIs (IAP, retention, engagement, viral exposure, sharing and so on). Tip: Associate a button color with its function (negative is red, positive is green, neutral can be blue). REWARDED VIDEOS Rewarded-video ads become an industry standard in the past years, as part of a freemium model in mobile-games, which boost revenue and considered as a “win-win” situation (the users who cooperated with the offering to watch an ad, will receive an actual in-app reward in return). The best icon to represent rewarded video ads should look like a film clapper board with a play icon on it (we’ve tested lots of different icons and this one worked best). Here are several examples of rewarded video offering in different mobile games: As a game designer, you should think carefully what the prize is going to be, how to reward it and for ‘how long’. The main scenarios are: Permanent — Once the ad is watched, the users receive the prize for an unlimited time (i.e. get an item which is added to their inventory and stays there for good). Per Session — Once the ad is watched, the users receive the prize and it’s available to be used anytime during their current session. Once quitting the game and getting back on a later time — the prize is not there anymore. This can be helpful in order to increase session time. Per Scene — Once the ad is watched, the users receive the prize and it’s available to be used only at the current level (i.e. getting a booster, or ‘another try’). The rewarded video prizes should be significant and not ‘little things’ — otherwise, users won’t want to waste their time on the ad. As a game designer, you should think about what your users will want from your game. Pro tip: Don’t tell users what reward they’re getting, to make the reward more exciting (motivate their curiosity and surprise — and increase the probability that they will watch the ad). DRAGGABLE OBJECTS An intuitive game mechanic on mobile is ‘dragging an item’, though many times it can harm the game experience if not done right. When exporting game assets such as PNGs, the design can be very creative, while ‘behind the scenes’ of the device they are all rectangles with some transparent area. The default anchor points for rectangles are either the top left corner or the exact center. As a game designer, try to demonstrate how the object should be dragged as if dragging it in the real world — where the actual holding point of the item should be positioned for the user: Default anchors are often outside of the dragged object (top left corner). Even when centered, the dragging won’t make sense to the user most of the time. Here are important best practices for draggable objects: Set a custom anchor-point offset on draggable objects so the user’s finger will not hide them: Most of the times the default anchor points will have to be adjusted and get a custom offset so the draggable item will be visible despite the user’s finger on the screen. The grab area of small draggable items should be larger than their actual canvas size. The dragged item should be in front of other items when dragged (Z-index wise). In special cases (i.e. inserting an object inside another object) this should be customized. Use glow or dashed-outline for drop-zone areas. Don’t expect the user to understand immediately where the dragged item should go to. The best case is when having an intuitive ‘drop-zone’ (i.e. dragging a food item to a mouth) — in this case, no need to highlight the mouth, but just animate it ‘open wide’ when the food item is dragged. Users will know what to do. Pro tip: In general, pulling is easier than pushing (i.e., for right-handed users, dragging from left to right is easier than dragging from right to left ). If your game is designed for kids, try to have pulling over pushing by design. RATE US DIALOGS Lots of game designers are using the ‘rate us’ dialog too soon — calling the users to rate their experience before they actually formed an opinion about your game. When done right, using the ‘rate us’ dialog helps to achieve better ratings on the stores and helps organic promotion. So how to do it? The ‘rate us’ dialog should meet the user on the following scenarios: After a big achievement or big satisfaction point (i.e. defeating a boss, completing a world, winning a major challenge, etc.). After accumulating small satisfaction points (i.e. win 10 badges). To maximize the probability that users will rate your game, the ‘rate us’ dialog should be designed as follow: Have a relevant presenter, looking at the user. ”Rate button” should be with positive color (i.e. green) and more noticeable than the ‘later’ button. Also, if you followed the best practices mentioned in the ‘user decisions’ section above, you should know by now that its position should be on the right side. Tip: Never use “5 stars” reference — it’s against Apple’s guidelines. STORE DIALOG The design of your store dialog is critical to your selling. Many times the store dialog will offer some ‘full version’ deal along with some other in-app purchase options. Here are a few examples: To maximize the purchases of the full version, you can follow these guidelines: Make sure that the ‘full version’ button includes a presenter from the game, with noticeable eyes (preferably looking at the user). The ‘full version’ button should be stronger in color, larger and more attractive rather than the other in-app offerings. Add a ‘breathe’ animation to the full-version button(scaling up to 104%, then back to 100% two times, then stop for another 6 seconds before repeating the animation). The title of the full-version button should be bigger than its inline content. Have a clear “Discount” or “Best Deal” ribbon on the full-version button. Pro tip: If you are selling content such as extra levels, worlds, etc.., allow the users to enter the locked content screen and only then open the store dialog with a dim background behind it (rather than opening the store dialog ‘outside’ when clicking the locked content on the level-selection screen). WRAP-UP I’m glad to take the opportunity to share my knowledge with this community and I hope that this info will provide value to lots of game designers, game developers, and product owners. This best practices bible for game design UX is formed from big data (and I mean — BIG — TabTale alone has more than 2 billion downloads and ranked among the top 10 publishers in the world several years in a row), but I also watched it executed for real with more than 500 users (at Matific I have the privilege to watch more than 500 users play my games in large scale events by the Israeli Ministry of Education where kids from all around the country are competing in a yearly Math-Olympics session). One thing I’d like you to remember along the way is that these are not ‘rules’, these are best practices. I recommend you to adopt them in order to get a better starting point, but don’t expect them to magically turn your game into the next hit. Now you are ready! If you liked what you read please help me spread the word — it means a lot Amir Dori https://www.linkedin.com/in/amirdori Senior Game Designer at Matific (2016 to date) Lead Game Designer at TabTale (2013–2016) Owner at Lookandfeel Games (est. 2009) Lecturer at Mentor College (Metagame & Game Design course).
  7. Hello and welcome to this weeks Dev Diary! Today's topics revolve around my attempts to create a height mapped terrain. As mentioned earlier, after several hours of watching tutorials and finding most of them lacking in beginner friendliness, I was a tad frustrated to say the least. But after letting the issue rest for a week and indulging in my addiction (yes, Total War Three Kingdoms was more addictive than anything in a long while, which also made it a pleasure to analyze as a striving game dev), it clearly helped me internalize some things about the tutorials that I had watched and tried out earlier, as now just this morning, I got the following results just with a few minutes of fiddling from memory; It still lacks finer detail, but keep in mind, that this is a 10x10km sized heightmap, a "tad" smaller than the previous 60x60km that I quickly made using SketchUp. For the final game it is most likely necessary to make the map out of several pieces, in order to be able to make it as big as I have envisioned it to be. Still, the first target is to make the 10x10km playground for testing purposes. Here is a preview of the textures I'm going to be using with the terrain, which also works as a followup hint from last weeks puzzle - where is the first map based on?; I'm still looking for sources for higher quality height maps, but no luck so far. Those who are interested in trying out for them selfs to create terrain from heighmaps, an easy tool can be found here, originally made for making Cities Skylines maps from any place on earth you might want to build your own city at; Terrain.Party It might turn out that it is easier to make a map from a medium quality heightmap at first and do the details by hand, but we'll see. One major thing pointing to that plausible outcome is the fact that I have managed to make Blender crash several times because my PC runs out of memory, when I try to increase the quality too much on the current heightmap. Conclusion For the coming week I'll be working out the textures and after that focus more on the height map it self, as texturing the ground makes it easier to visualize while modding the settings for height differences and smoothness of the terrain. I'll also leave you with a link to a simple tutorial on how to make a textured 3D terrain from heightmap. Thank you for tuning in, and I'll see you on the next one! You can check out every possible mid week announcements about the project on these official channels; • YouTube • Facebook • Twitter • Discord • Reddit • Pinterest • SoundCloud • LinkedIn •
  8. JohnElliott

    Books and articles on game dev

    Greetings all. I'm a researcher from Portugal, with the multimedia department of CIEBA, and I'm currently writing my PhD thesis on videogame composers' expansion of knowledge into areas of sound design, implementation, programming, and soft skills. I come to ask for bibliography, books and articles, on the process of creating videogames, particularly about differences between indie and AAA production (I am focusing on indie). So far I've used O'Donnell's "Developer's Dilemma", a great read I suggest to all, as well as my own experiences, but I am in need of more sources. Thanks in advance!
  9. JoAndRoPo

    5x3 Slot Game Logic

    Hi Everyone! I'm in a bit of a pickle right now ☹️! I'm creating a 5x3 Slot game for android and I'm kind of stuck when it comes to the number of symbols placed in each reel😤. I tried to understand how the symbols are placed in other android slot games but it's a bit tough😫. Is there a logic behind the placement of symbols🤔? By any chance can anyone out there help me out with the logic/doc./tutorials, etc.,😬? That would be highly appreciated 🙏! Thanks in advance!
  10. Hello, im trying to learn new techniques to implement in my Unity3D projects and i have been looking for a particular answer about the way Hollow Knight's creators made to give background sprites that feeling of depth. I was thinking about just blurring them out in ps but someone suggested me increasing saturation, white degrading and changing opacity. Im unsure what is exactly the way to recreate this and i would like to know aswell if there is a tool in Unity3D that can make this automatically. Thank you so much I will leave a image showing what i mean exactly.