May 20

Bundle Stars Faction Bundle!

Here is a nice little bundle that has some good coop and local coop games!

Only £1.79!

https://www.bundlestars.com/en/bundle/factions-bundle

 

  • Guns of Icarus Online
  • The Ship: Murder Party
  • Dino D-Day
  • Pool Nation
  • Murder Miners
  • Orbital Gear
  • Eador: Masters of the Broken World
    Super Toy Cars
  • Ring Runner
  • Muffin Knight

May 12

Humble Bundle Spring Sale 

HUMBLE BUNDLES SPRING SALE HAS BEGUN

Get the sale here!

Some of the highlighted deals are:

You can also get Dungeons 2 for free! 

May 12

How To Find A Bottleneck In Games

Too often we have got a new game and found performance is lacking. Sometimes it’s easy enough to turn down some settings but other times it feels like your PC is holding you back. Here we will show you how you can determine what your bottleneck is and how you could re-mediate it.

Initial checks

First things first, make sure all your drivers are updated correctly. You can visit your motherboard manufacturers website to download chipset, audio, SATA and bios updates.

Grab your Nvidia drivers from here.

Grab your AMD drivers from here.

There’s no point looking for hardware bottlenecks that are actually driver issues.

In the case of GPUs, ensure you are gaming using your dedicated GPU and not the on board graphics.

 

What were testing and why?

The four main components we will be looking at are:

  • CPU
  • GPU
  • RAM
  • Storage device

Each of these components will affect your performance directly. You could have the best GPU and CPU out but if your running the game off a USB 2.0 drive and the game streams in textures or models then you will find lots of “pop in” happening during game and and very long loading times.

Pop In Example

Tree popping in

 

A common thing within our group is people have a great GPU and disk but only shell out for the absolute minimum CPU. What then happens is things like physics or AI which is computed mainly on the processor slows down the rest of the game. Not only that if the CPU can’t process commands quick enough to hand off data to the GPU it causes a bottleneck. Again if you don’t have enough RAM you’ll find your PC hitting your disk more often to load models/textures/sounds into RAM and using  swap space on the disk, this can cause FPS dips.

 

How to test

Now let’s find a game that you have problems with, to an extent we need to stress the PC under real world conditions to find the problem.

For me I will be using GTA V, a game that looks pretty and can scale up well using some advanced graphics options that invariably tank my frame rate. The initial test will be turning everything to as high as I can until I start to get consistently less than 60fps.

Next we need to download MSI Afterburner so we can see stats about our system during the game.

Go ahead and install Afterburner and start it up and open the settings panel and click the Monitor tab. What we need to do now is go through the list of Graph metrics, GPU Usage, CPU Usage, Power, RAM Usage etc and include them in the onscreen display using the “Show in On-Screen Display” checkbox for each metric.

Afterburner settings

Afterburner settings

 

Now we can start up the game and see how our computers handling it. You can see in the image below from GTA V that my RAM usage is pretty high and my CPU usage is hovering around 65%, this isn’t too bad with these graphics settings. With the FPS around 40FPS, it is less than our ideal 60FPS but the GPU is doing all it can and the CPU isn’t being overly taxed. You can also see the RAM isn’t hitting its max 16GB yet.

So overall here the initial bottleneck is my GPU as the system just can’t hit 60FPS. If I upgrade my GPU from a GTX 970 to something like a GTX 1080 and capped the framerate at 60FPS you may see the GPU usage dropping since it might not get maxed out, if my CPU could handle it that is.

But what does a bottleneck look like?

I have artificially impacted the components so you can see what their usage would look like if there was a bottleneck.

Disk

I have GTA V installed three 2.5inch 5400RPM 1TB drives in RAID 0, purely for games. I know about RAID 0s lack of redundancy, don’t judge. While I’m playing GTA V to slow down my drive I ran Crystal Disk Mark to benchmark my disks while I’m playing. The result is that with the increased read latency and slower read speeds, the disk can’t keep up as I’m flying around and as such some of the textures don’t load in right away, highlighted in blue below.

Whats interesting to note is that the GPU, CPU and RAM usage don’t look much different in the afterburner overlay from my initial screenshot. The easiest way to see if your disk is running slow is to check Task Manager or Resource Monitor. You would see things like High Active time, a high average response time, below shows it as 5.4ms which is fine but if you see times of 500ms or more your disk may have a problem.

Task Manager - Disk

Resource monitor can give you more information about what is actually doing the reading and writing on the disk. Things to look out for again are a high disk queue length that is high for a sustained amount of time. If it jumps up to 5-10 for a second or two don’t worry, but if it stays like that for a few minutes the disk isn’t processing read or write requests fast enough to serve the applications. You can also see if any other applications are hitting the disk and causing slow downs, like downloading a game in the background or your antivirus doing a scan can impact disk performance.

Resource Monitor Disk

RAM

In order to consume a load of RAM, I opened up Photoshop and put a gradient on a 8K image, which ate up the rest of my 16GB RAM. The result is that because there is so little space in memory for the game to load files into, it resources to putting files on disk in the pagefile, which you can see has increased as well. The FPS has dropped considerably to 16FPS, the GPU usage has also dropped, probably because its trying to grab data from the disk instead of RAM which is taking a long time. If you didn’t meet the minimum specification of RAM or it was being used by other applications, this is the sort of stats you would see for a RAM bottleneck.RAM

GPU & CPU

The GPU and CPU can affect each other and often one is the bottleneck for the other. You would see CPU utilisation as high and GPU utilisation low if you had a CPU bottleneck and you would see the opposite pattern for a GPU bottleneck.

The CPU does a lot of the AI processing, physics and requests for data to be moved to RAM from disk. If your CPU couldn’t keep up with the requests it would have high usage, meanwhile the GPU is waiting around for data to be made available for it to process.However if your GPU isn’t all that powerful or had little VRAM it would take longer to process shaders, load textures and draw them. The CPU then doesn’t need to work as hard to serve the GPU up data to process.

Turning on Dynamic Scale Resolution in GTA V renders the game at a higher resolution than my screen can display natively, which eats up GPU resources. The image below shows the high GPU usage and just about all of my 4GB of VRAM gone, but there is relatively average CPU utilisation. The FPS sits at 29FPS, the GPU is clearly the bottleneck in this situation.

GPU Scale

To hinder the CPU I ran a CPU stress test in the background, eating away at our precious cycles. The GPU can have all the power in the world, but if the CPU is to slow to process requests to move data to RAM of the GPU, it hinders performance and the FPS drops. When testing on my i5-4670k @ 4GHz running Prime95 on all cores, with 100% CPU usage, the FPS dropped down to 31FPS from our base of 40fps.

Hopefully this has been a useful tutorial on how to find and identify bottlenecks when gaming!

 

May 05

Micro Quadcopter Build

Mini quadcopters

A Micro Quadcopter!

Outside of the usual gaming content, we have a brief quadcopter build . If you haven’t had a shot at one yet, I urge you to get a small one to get used to flying and just mess around with it! To get more practice flying quadcopters before I go back to my 250 quad, I got a Eachine e010 “tiny whoop” clone kit from banggood.com. These tiny things are great for flying around the house and get some practice with the sticks.

This kit has everything you need to build a tiny quad with FPV capability. The main parts are the frame, the propellers, the flight controller with built in transmitter, motors and a camera with a transmitter. But remember you need some batteries, make sure you get a few as you only get 3-4 minutes flight time for each one. I got this set of 5 Charsoon 220mAh stick style batteries which have been working great.

 

charsoon 220

What else do you need?

You do need a few staple items for your quadcopter. It’s recommended to buy a decent controller, as you can use it with multiple aircraft. This is one of those things were you can spend a small amount of money and find your self needing to upgrade in the future or you can go all out and get something decent. I’ve got a Spectrum DX6i, which doesn’t appear to be available in retail anywhere, the next one up is the DX6e.

If your going to be doing FPV (First Person View) you will need a receiver to receive the video feed coming from your camera and either a screen or headset. There are again a range of options here, you can spend as little as £40 or go all out at £300 plus. You can get headsets, like VR headsets that have built in receivers, or ones that are just screens and require a separate receiver. From Banggood again, I grabbed a quite decent FPV headset, the Eachine EV800 for £40.

eachine EV800

 

A decent lipo charger is required for safety reasons and so you can effectively charge your batteries and get the most out of them.

 

lipo charger

 

How to put it all together?

The mini quads are really easy to build, the larger ones are a bit more complicated.
miniquad_motorsminiquad_fc

 

 

For this kit however:

  • The four motors slot into the frame.
  • They are then plugged into the flight controller.
  • I soldered the FPV camera power wires onto the flight controller.
  • Stick the FPV camera onto the flight controller with some double sided foam or use a mount.
  • Then you screw the flight controller to the frame.
  • Once you’ve tested it you can finally put your props on, it’s just good practice especially with larger copters!
  • I also replaced the circular polarised antenna on the camera with a linear antenna that is less likely to break.

After flying this little thing for a couple of weeks, dinking off the walls, myself and scaring the cat, the frame cracked. Gluing it back together with some model glue worked for a while, but in the end I bought a the new E010s frame which is lighter, and makes the whole thing feel more zippy.  I will cover it in a review later.

mini quad

Now what?

Get flying! Get experience using the controller, its a bit different to the usual Xbox or PS4 controllers us gamers are used to. Don’t be afraid to crash, but be careful at the same time. The larger quads can be pretty dangerous if handled incorrectly, thats why I would recommend starting off with a smaller one you can fly indoors and not damage yourself or anything else with.

We’ve also designed a microquad t-shirt! You can buy it here.

If you like the design and would like to see more hit us up in the comments or on our Discordquadtee

Happy flying!

May 02

Insomnia 61 – Are you going?

 

Saor Gaming will be attending the BYOC LAN at Multiplays Insomnia gaming festival, Hosted in the NEC in Birmingham, UK.

We will be joined by our friends from other clans, Mages of Mayhem and Rocket League semi-pros Fireborn Gaming.

What is Insomnia?

Insomina Edinburgh Hall

 

Its a gaming festival! A 3000 strong LAN hall (above is at Insomnia Scotland which was much smaller) where you can play games with your mates, participate in community tournaments, get food & drink delivered to your desk and meet up with your buddys from Discord & Teamspeak!

 

Insomnia Edinburgh Expo

Not only that, there are Youtuber talks, Indie Dev interviews, Expo stands where you can try the latest games and buy merchandise and cakes, so many cakes.Insomnia Edinburgh Merch

Expo Cakes!

What will we be doing?

We are a casual clan and will be competing in Insomnia CSGO and Hearthstone tournaments mainly for fun. Getting drunk is on the agenda, as well as sleeping as little as possible. You will find us messing about in things like GTA V, league of legends, Gang Beasts, Keep Talking and nobody explodes, R6 Siege and whatever else, its great!

Seriously, having 8 people in a room just to play Gang Beasts makes it worth it.

If your thinking about coming you can get tickets here insomniagamingfestival.com/

Hit us up on Discord,  Steam or in the comments if your attending this August. 

 

Feb 19

Tile Based Map Generation with SabreCSG

Now that i’m finished with my metaballs implementation I’ve started working on creating map assets and building out test levels for my game. Since I’m creating this myself I tried to find a tool or asset pack that could help me speed up the creation of the tile assets for the map.

To keep things easy and reusable I decided the level design would be a 3D tile based.

So I needed to find something that could:

  • Create tile based models
  • Do per face texturing
  • Create reusable components
  • Easy to learn
  • Free – if possible

 

A brush based tool like Valves Hammer from the Source Engine seems like an easy way to build out a map. I had seen ProBuilder and ProBuilder free, but I didn’t really want to be tied to a free package that might be missing features I need down the line and force me to purchase the full version.

I found SabreCSG, a brush based asset that is completely free, I didn’t get around to even testing ProBuilder free because Sabre seems to do the job for me.

 

Tile Models

The creation of models was pretty easy with SabreCSG, my only issue I had was with some of the weird rotations the system puts on brushes when you extrude or split them, which caused issues with my procedural generation.

Once I figured out a scale that would fit the player on one tile I started building out some prototype blocks that I will be using in my maps.

tile models

 

Map Generation

As great as tools like probuilder and SabreCSG are for building models quickly, I wanted to have some rapid prototyping of levels. The easiest way I could implement this was to create a prefab out of each of the models I created above, then use Excel to layout my map by specifying which ID should be used in each cell, along with its Y axis Euler rotation, then iterate through the CSV file and spawn the prefabs in the correct locations.

Using the Unity resources folder, I put all my prefab models in a folder called Tiles and ensured I labeled my tiles with IDs so when the resource folder was loaded into an array, all of my tiles would be in the correct position in the array.

 

prefabs

The excel file just contains the ID and the Y axis Rotation in a cell, separated by a space.

csv grid

 

The magic happens in an Editor script I wrote which reads the CSV file and spawns the prefabs. It is attached to the CSGModel gameobject so the prefabs are spawned under it and become brushes. The only thing the script doesn’t do yet is clear out any existing prefabs, so if you want to make big changes, its easy enough to delete everything under the CSGModel object and generate the map again.

To call the above functions, I made an Editor script to run them from the Editor. If you haven’t created any Editor scripts yet, you should! They’re so helpful and speed things up.

 

MapGen Editor

 

Now I can generate some test levels quickly!

Test Level

 

Feb 07

Metaballs in Unity


I’ve recently been getting into Unity to see if I could make a little basic game. My first idea has taken me down the road of procedurally generating meshes for objects in Unity . One method of doing this is creating an Isosurface using various algorithms. In my case I was trying to create Metaballs.

Metaballs are points in space, which exert a “force” which decreases the further you get away from it. Where this “force” hits 0 is where the surface is drawn.
When multiple metaballs are close to each other, the force they exert on a point will be greater than a single metaball alone. And so it appears the surface of the metaballs grow towards each other like in the demo above.

Marching cubes

An algorithm used to draw the mesh is Marching cubes. After initially looking at the example script from Unity3d community I thought I was a bit out of my depth, but I soon got it working and was creating blobby objects.

There is plenty of material online regarding how marching cubes work and how you create a isosurface from a series of points within a 3D grid. Paul Bourke’s article helped immensely.

The performance impact increases vastly as the number of metaballs increase, as it requires traversing the full 3D grid each time to see if it was in range of the metaballs radius.

Reducing grid computation

One way to increase performance was to decrease the number of points that needed to be computed to find where the metaballs surface should be. A simple implementation will iterate through the full grid.

However, we compute which of the 8 vertices of the voxel the metaball surface should intersect as per Marching Cubes. Using some fancy lookup tables we can then choose a direction to compute next based on which vertices were intersected.
Effectively this allows us to only compute the voxels which contains the surface of the metaball. Rather than all of the other voxels which are empty 90% of the time!

Surface Nets

In the past few months I tried to build in an alternative meshing method which uses Naive Surface Nets rather than the traditional meshing done by Marching Cubes. I managed to get it working, based on the work in Mikola Lysenko’s blog. This meant I could march across the same points, but generate fewer vertices and faces for the mesh, hopefully increasing performance.
I also encountered some weird bugs during my learning like the below.

 

Metaballs!

Finally I have managed to optimise my metaballs algorithm to create a decent amount of metaballs and generate a mesh at a good resolution that it doesn’t look too blocky.
There are much faster ways to do what I have done using the GPU through a compute shader. However since I am targeting android with my little game, I need to do it on CPU until our mobile GPUs catch up with desktops.

Jun 05

Offspring Fling! – Backlog #3

Offspring Fling - Complete

A fun little platfomer, with arts reminiscent of Kirby

This challenge is getting tougher, i’m getting through a lot of the shorter games and have moved onto larger RPG’s and open world games which will take a bit longer to complete.

Offspring fling is a game where you control a mother bird, who is trying to save her offspring. How does she save them?  Well she flings them across levels into a door where they vanish into who knows where.

Offspring Fling - Mother

 

Offspring’s art style is cute, simple and reminds me of the older Kirby games. The levels themselves start very basic, introducing you to the puzzle concepts the game will soon throw at you. It was a quick game to complete, but gives itself replayability by challenging you to complete the levels in super short timescales, surpassing even “gold” challenges with  “developer” speed ones.

 

Offspring Fling - Level

Flinging your kids is bad, people!

The only major annoyance I had with Offspring Fling was the controls, the DPAD and the Analogue sticks had inverted Y axis controls from each other. Sometimes when I switched between the two control methods it threw me off because instead of putting down the offspring, I would throw them right into a poisonous flower!
Until next time, check out the next game on the backlog challenge; NightSky

 

May 28

Unturned – Easier Heightmap method!

You may have seen our previous guide on how to get a heightmap for a map in Unturned, a free to play open world zombie survival game, with a built in map maker utility.

This guide will show you an easy, quick way to get a realistic looking map.

 

Tools Required

Your going to need a couple of programs to get this working.

 

Getting the map data

  1. Go onto Terrain.party
  2. Drag the blue marker to the area you wish to get a heightmap for.
  3. In this example we have chosen The Mull of Kintyre and the Isle of Arran. You can use the controls on the right of the website to make the area of selection larger.Mull
  4. Click the export button on the right and name your download.
    save
  5. Now extract the zip file you downloaded from the site. There will be several files in the directory. You will want to use the (Merged) version.

Congratulations you have your heightmap data!

Adding the heightmap to unturned.

In this section we will generate our map with our heightmap image.

From the last section we have our heightmap file, this image may be too large for the map size we want, we need to resize it to fit the Unturned map sizes.

The image we saved from terrain.party was 1081 x 1081 pixels.
We either need to resize it to one of the below sizes, which would squash it/stretch it.
Or only use a section of the heightmap image.

This below table shows the resolution you need for each map size.

 

HeightMap Resolution Map Size
513×513 Large
257×257 Medium
129×129 Small

I will resize / crop the heightmap to fit a Large map.

  1. In Photoshop / GIMP / Paint.net create a new image 513×513 (or your desired map size resolution)
  2. Add in your heightmap image. In photoshop, I opened the image then selected the entire image (ctrl+A) and then pasted it as a new layer into into the 513×513 project. this is so we can keep the full resolution of our original image.Uncropped
  3. You can now either stretch or shrink the image to fit the specified resolution. Or you can keep it the same resolution and crop it to fit the 513×513 image size. In this example I stretched it to fit the resolution.island
  4. Flip the image horizontally as Unturned flips it for some reason. Then save the image as heightmap.png
  5. Open up Unturned in Steam.
  6. Go to the WorkShop > Editor
  7. Create a map of the size fitting your heightmaps resolution. In my case, Large.map
  8. After clicking Add, minimize Unturned.
  9. Open up the Unturned folder in your Steam/Steamapps/common folder
  10. Open the maps folder
  11. Open the Folder with the name of the map you just created, in my case MullofKintyre
  12. Open the terrain folder
  13. Delete the Heights.dat file if it exists.
  14. Copy your Heightmap.png file into the terrain folder.
  15. Go back to Unturned. Click on your map and click edit.
  16. The map will be black, so hit terrain > materials > then in the bottom right Bake Global.

 

Enjoy your map!

mullofkintyre

May 28

Unturned – Creating a heightmap from real world locations

Unturned is an free to play open world zombie survival game, with a built in map maker utility.

Right now the game has no ability to automatically import real world location data into its maps.

This guide will show you how to use real world heightmap data to create a realistic looking map.

 

Tools Required

Your going to need a couple of programs to get this working.

 

Getting the map data

  1. Download Google Earth
  2. Open Google Earth and find a nice place that you wish to use to create your map.
    In my example I have chosen the Faroe Islands in Scotland
  3. From the top toolbar, select a placemarker and place it on the area you want to use.
    The properties panel for it will open up and give you the longitude and latitude of the location, For me it is Latitude: 61°54’26.74″N Longitude: 6°49’11.20″WGoogle Earth - Faroe Islands
  4. Now go to http://dds.cr.usgs.gov/srtm/version2_1/SRTM3 or http://viewfinderpanoramas.org/dem3.html, but we will focus on the former. These sites contain global heightmap data.
  5. Select the region your location is in. In my example it would be EurasiaSRTM3
  6. The site will give you a list of files for each North/South, East/West coordinate.SRTM3 - 2
  7. Now since in my example the coordinates were Latitude: 61°54‘26.74″N Longitude: 6°49‘11.20″W,  round them up, you get N62 W7
  8. On the site with the heightmap data, search for your coordinates. For me it will be N62E007.hgt.zip. Now unfortunately it wasn’t on the first website, but I found the heightmap for the Faroe Islands on http://viewfinderpanoramas.org/dem3.html
  9. Download the zip file and extract it somewhere easy to get to, my downloads, desktop etc.  You should have a .hgt file ready for use!HGT Files

Congratulations you have your heightmap data!

Making the heightmap data usable

 

Unturned requires a heightmap image, not raw data, this section will show you how to get the heightmap image you need for your awesome map!

 

  1. Create a folder on your desktop or somewhere for you to work.
  2. Download and install MicroDEM for opening the raw heightmap data.
  3. Open MicroDEM from your start menu. When it starts it will ask you to open a project, click close.
  4. It will then ask to update several things, click yes to everything as it comes up.MicroDEM update
  5. Once the program is updated, at the top right, click the second icon from the left, then browse to your HGT file from earlier and open it.DEM Open Browse
  6. If you have multiple heightmap files and want to merge them together, go to File > Open > Open and Merge DEMs, then select the multiple hgt files.
  7. You should now have a nice heightmap image!Faroe Map
  8. If you want to confirm you got the right area, right click the image and go to Export > Quick Map to Google Earth. It will overlay your heightmap image on Google Earth, so you can confirm you got the right area!Overlay
  9. Back in MicroDEM. We need to make sure the depth is correct for the heightmap.
  10. Right click your image, select Display Parameter then Elevation
  11. What we do here is set the range of colours so we get nice smooth transitions and set our sea level correctly. Select Gray Scale (monochrome)elevation
  12. The “Missing” colour block, which is black, is our sea level colour, Black = Deep, White = High.
    If your map shouldn’t have any sea in it, and there is some black parts on your heightmap, this is missing data. You should change your Missing colour block to a grey closer to the shade around the missing area, so you don’t have sudden oceans or rivers where there should be none.
  13. Click t he z Range button
  14. The “z Range” defines the range of heights that will map to our grayscale, 0-255 values.
    The Max and Min values are the range of heights picked up from the heightmap data. So in my example since 2593 is the highest elevation, that is the max for the z range. These areas will be bright white. Min is the lowest elevation in the heightmap, as such they will be black.
    Any “missing” data will be black as well as I have said previously.You can change these values to make a height map overall more flat, or steep. Simply raise or lower the Max value. Raising it say, to 4000, will put the range from 853 to 4000, meaning our actual highest elevation in the heightmap of 2593, will be just about halfway on the z range, so it will be a grey colour rather than white. Effectively flattening the map. Lowing the Max value will have the opposite effect.In my example I left the values default.
  15. Click OK to close the z Range and Elevation Window. Your image should now be a nice grayscaled heightmap.
  16. Click File > Save image > name your file > Save Type as PNG > Click Save.Heightmap
  17. You can now Close MicroDEM.

Adding the heightmap to unturned.

In this section we will generate our map with our heightmap image.

From the last section we have our heightmap.png file, this image may be too large for the map size we want, we need to resize it to fit the Unturned map sizes.

The image we saved from MicroDEM was 389 x 830 pixels.
We either need to resize it to one of the below sizes, which would squash it/stretch it.
Or only use a section of the heightmap image.

This below table shows the resolution you need for each map size.

 

HeightMap Resolution Map Size
513×513 Large
257×257 Medium
129×129 Small

I will resize / crop the heightmap to fit a Medium map.

  1. In Photoshop / GIMP / Paint.net create a new image 513×513 (or your desired map size resolution)
  2. Add in your heightmap image. In photoshop, I opened the image then selected the entire image (ctrl+A) and then pasted it as a new layer into into the 513×513 project. this is so we can keep the full resolution of our original image.Non cropped
  3. You can now either stretch or shrink the image to fit the specified resolution. Or you can keep it the same resolution and crop it to fit the 513×513 image size. In this example I stretched it to fit the resolution.stretched
  4. Flip the image horizontally as Unturned flips it for some reason. Then save the image as heightmap.png
  5. Open up Unturned in Steam.
  6. Go to the WorkShop > Editor
  7. Create a map of the size fitting your heightmaps resolution. In my case, Large.
  8. After clicking Add, minimize Unturned.
  9. Open up the Unturned folder in your Steam/Steamapps/common folder
  10. Open the maps folder
  11. Open the Folder with the name of the map you just created, in my case Faroe Islands
  12. Open the terrain folder
  13. Delete the Heights.dat file if it exists.
  14. Copy your Heightmap.png file into the terrain folder.
  15. Go back to Unturnned. Click on your map and click edit.
  16. The map will be black, so hit terrain > materials > then in the bottom right Bake Global.map

Older posts «