Factorio - Klonan
Hello, it is me, posila, with another technical article. Sorry.

Bitmap Cache
In 0.16, we added graphics option mysteriously called "Low VRAM mode", it enables a basic implementation of texture streaming, but I didn't want to call it that way, because I feared its poor performance would give texture streaming a bad name. How it worked? Every sprite has specified some priority, and the "Video memory usage" option - despite its name - controls which priorities of sprites are included in the sprite atlases. What happens to sprites that don't go to atlas? They are loaded as individual sprites. Normally, these sprites are allocated into texture objects. The reasoning behind this is that graphics driver has chance to decide how it wants to layout these small textures in memory, instead of it being forced to work with huge atlases.



What part of a sprite atlas looks like.

When you enable "Low VRAM mode", non-atlas sprites are loaded only to RAM, and texture is allocated for them only when used during rendering. We called class that handled this BitmapCache and there was maximum limit of how many mega-bytes of texture data the bitmap cache could use at once. When this limit was reached, it failed to convert memory bitmap to video texture, and Allegro's drawing system would fallback to software rendering, which absolutely tanked FPS, but this didn't happen... most of the time.

So apart from the obvious problem of falling back to software renderer (which we don't have any more after the graphics rewrite, so the game would crash or skip a sprite if this happened), there are other performance issues. Most sprites have a unique size, so we can't reuse textures for different sprites. Instead, when a sprite needs to be converted to a texture, a new texture is allocated, and when the sprite is evicted from the cache, its texture is destroyed. Creating and destroying textures considerably slows down rendering. The way we do it also fragments memory, so all of the sudden it may fail allocate new texture because there is no large enough consecutive block of memory left. Also, since our sprites are not in an atlas, sprite batching doesn't work and we get another performance hit from issuing thousands of draw calls instead of just hundreds.

I considered it to be an experiment, and actually was kind of surprised that its performance was not as bad as I expected. Sure, it might cause FPS drop to single digits for a moment from time to time, but overall the game was playable (I have a long history of console gaming, so my standards as player might not be very high :)).

Can we make it good enough, so it wouldn't be an experimental option any more, but something that could be enabled by default? Let's see. The problem is texture allocations, so let's allocate one texture for the entire bitmap cache - it would be a sprite atlas that we would dynamically update. That would also improve sprite batching, but when I started to think how to implement it, I quickly ran into a problem dealing with the fragmentation of space. I considered doing "defragmentation" from time to time, but it started to seem like an overwhelming problem, with a very uncertain result.

Virtual texture mapping
As I mentioned in FFF-251, it is very important for our rendering performance to batch sprite draw commands. If multiple consecutive draw commands use the same texture, we can batch them into a single draw call. That's why we build large sprite atlases. Virtual texture mapping - a texture streaming technique popularized by id Software as Mega Textures, seems like a perfect fit for us. All sprites are put into a single virtual atlas, the size of which is not restricted by hardware limits. You still have to be able to store the atlas somewhere, but it doesn't have to be a consecutive chunk of memory. The idea behind it is the same as in virtual memory - memory allocations assign a virtual address that maps to some physical location that can change under the hood (RAM, page file, etc.), sprites are assigned virtual texture coordinates that are mapped to some physical location.

The virtual atlas is divided into tiles or pages (in our case 128x128 pixels), and when rendering we will figure out which tiles are needed, and upload them to a physical texture of much smaller dimensions than the virtual one. In the pixel shader, we then transform virtual texture coordinates to physical ones. To do that, we need an indirection table that says where to find the tiles from the virtual texture in the physical one. It is quite a challenge for 3D engines to figure out which virtual texture pages are needed, but since we go through the game state to determine which sprites should be rendered, we already have this information readily available.

That solves the problem of frequent allocations - we have one texture and just update it. Also, since all the sprites share the same texture coordinate space, we can batch draw calls that use them. Great!

However we could still run out of space in the physical texture. This is more likely if player zooms out a lot, as lot more different sprites can be visible at once. Well, if you zoom out, sprites are scaled down, and we don't need to render sprites in their full resolution. To exploit this, the virtual atlas has a couple levels of details (mipmaps), which are the same texture scaled down to 0.5 size, 0.25 size, etc. and we can stream-in only the mipmap levels that are needed for the current zoom level. We can use lower mipmap levels also if you are zoomed in and there are just too many sprites on the screen. We can also utilize the lower details to limit how much time is spent for streaming per frame to prevent stalls in rendering when a big update is required.

The Virtual atlas technique is big improvement over the old "Low VRAM mode" option, but it is still not good enough. In the ideal case, I would like it to work so well, we could remove low and very-low sprite quality options, and everyone would be able to play the game on normal. What prevents that from happening is that the entire virtual atlas needs to be in RAM. Streaming from HDD has very high latency, and we are not sure yet if it will be feasible for us to do without introducing bad sprite pop-ins, etc.

If you'd like to learn how virtual texture mapping works in more detail, you can read the paper Advanced Virtual Texture Topics, or possibly even more in-depth Software Virtual Textures.

GPU rendering performance
The main motivation behind texture streaming, is to make sure the game is able to run with limited resources, without having to reduce visual quality too much. According to the Steam hardware survey, almost 60% of our players (who have dedicated GPU), have at least 4GB of VRAM and this number grows as people upgrade their computers:



We have received quite a lot of bug reports about rendering performance issues from people with decent GPUs, especially since we started adding high-resolution sprites. Our assumption was that the problems were caused by the game wanting to use more video memory than available (the game is not the only application that wants to use video memory) and the graphics driver has to spend a lot of time to optimize accesses to the textures.

During the graphics rewrite, we learned a lot about how contemporary GPUs work (and are still learning), and we were able to utilize the new APIs to measure how much time rendering takes on a GPU.

To simply draw a 1920x1080 image to a render target of the same size, it takes:
  • ~0.1ms ~0.07ms on GeForce GTX 1060.
  • ~0.15ms ~0.04 on Radeon Vega 64.
  • ~0.2ms on GeForce GTX 750Ti or Radeon R7 360.
  • ~0.75ms on GeForce GT 330M.
  • ~1ms on Intel HD Graphics 5500.
  • ~2ms on Radeon HD 6450.
This seems to scale linearly with the number of pixels written, so it would take ~0.4ms for the GTX 1060 to render the same thing in 4K.

Update: Several people wondered how come Vega 64 ended up slower than GTX 1060. I originally ran the tests with 60 FPS cap, so I re-ran the tests without the cap and got ~0.04ms on Vega, and ~0.07ms on GTX 1060. So the cards were probably operating in some kind of low-power mode, since they were idle for huge part of the frame. You should still take my measurements with big grain of salt, I didn't attempt to be scientific about it, I just wanted to illustrate huge performance difference between different GPUs people might want to use to play the game.

That's pretty fast, but our sprites have a lot of semi-transparent pixels. We also utilize transparency in other ways - from drawing ghosts and applying color masks, to drawing visualizations like logistic area or turret ranges. This results in large amount of overdraw - pixels being written to multiple times. We knew overdraw was something to avoid, but we didn't have any good data on how much it happens in Factorio, until we added the Overdraw visualisation:



The game scene being rendered.


Overdraw visualisation (cyan = 1 draw, green = 2, red >= 10).


Overdraw visualisation when we discard transparent pixels.

Interestingly, discarding completely transparent pixels didn't seem to make any performance difference on modern GPUs, including the Intel HD. Drawing sprites with a lot of completely transparent pixels is faster than an opaque sprite without having to explicitly discard transparent pixels with shaders. However, it did make difference on Radeon HD 6450 and GeForce GT 330M, so perhaps modern GPUs throw away pixels that wouldn't have any effect on the result automatically?

Anyway, a GTX 1060 renders a game scene like this in 1080p in 1ms. That's fast, but it means in 4K it would take 4ms, 10ms on integrated GPUs, and more that a single frame worth of time (16.66ms) on old, non-gaming GPUs. No wonder, scenes heavy on smoke or trees can tank FPS, especially in 4K. Maybe we should do something about that...

As always, let us know what you think on our forum.
Galactic Lander - ZeroByter
Hi!

Today's update fixed two bugs, both involving co-op gameplay.

Missiles Synchronzation
When I first started working on co-op for Galactic Lander, I made sure every action in the game was synchronized between clients, missiles also worked back then.

Apparently, something I changed since then has broken missiles again, and I have now fixed the issue.

Landing Pad Capturing Progress
While playing the game, a friend of mine and I discovered that in no-gravity co-op mode, it's impossible to complete a level since you have to stick your ship upside onto the landing pad, but this for some reason did not work in co-op.

In co-op, every player ship except your own gets it's physics disabled, and therefore also it's collisions are disabled (how can you touch something without physics?), and so the landing pad wasn't registering the contact between it and the other player's ship.

I fixed this by correctly synchronizing when each landing pad started or stopped getting captured.

Galactic Missions
The first galactic mission, although still a surprise secret, will start in the next few upcoming weeks! Follow us on Instagram to see when we will post a teaser of the galactic mission!


Thanks for reading, and as always, have fun!
Frontier Pilot Simulator - RAZAR

Hi Pilots,
A new portion of the internal working flow information arrived.

Storyline
We add more quest to the current development build. Like: find the passenger, Build a new colony, build a base and many others. We are close to complete the main story


Mod
We received a lot of suggestions, ideas on how to make the game more fun. That why we decided to create a new mode and storyline with the amazing quest. A lot of your suggestions will be implemented. (We hope it will surprise you)

Effects
Also, we are working on a new effect for current ships.


New Team member
We found a great game designer he will delight you with new features, quests and etc.

-----------------------------------
P.S. As usual, recommend our game to your friends leave reviews in steam and enjoy the game.

We are on:
Facebook - https://www.facebook.com/frontierpilot.net/
Discord - https://discord.gg/9Gez4ED
Twitter - https://twitter.com/frontierpilotsm
Instagram - https://www.instagram.com/frontierpilotsimulator/
Safe - GraphXGames
GraphXGames introducing own Developer & Publisher Homepage by URL: https://store.steampowered.com/publisher/GraphXGames/
Where you can follow GraphXGames to be notified of next game releases.
Oct 12, 2018
Landinar: Into the Void - P4p3Rc1iP
We have another round of improvements, fixes and some new additions!

This update shouldn't break your previous savegame, but in any case you can still access the previous build through the Steam Beta's "old_build" branch.

Changelog:

- Added stats to the player inventory screen.
- Added a rating of the player ship. (Shown in the inventory and the ship builder, currently doesn't influence anything yet)
- Added audio to lasers.
- Added Kathelijne and Arjen to credits.

- Updated cruise missile audio.
- Updated laser shooting effects.
- Rebalanced ammo count of defence turrets.
- Minor updates to various stations.
- Removed Mardo soundtrack from other stations.
- Update news in main menu is now retrieved from our web server instead of hard coded.

- Fixed shipyard in tulkas.
- Fixed cockpit lvl 8 to 10 exit position.
- Fixed reactor core not claiming correctly.
- Fixed Waypoints in not working in ankhet.
- Varius save game fixes.
- Removed error spam in Baldur.
Klotzen! Panzer Battles - Skalpei
Today we have a few heavy-lifters for you. Both models were developed at the end of the war, and both haven't seen the actual combat. We are talking about the Panzer VIII Maus and IS-3 models.

Check the description of each heavy tank below, and don't forget to tell us which model is the heaviest and why :)


Panzer VIII Maus

Panzer VIII Maus is a German super-heavy tank and also the heaviest tank ever built. Only two prototypes were built, and one of them had no turret. These two models underwent trials in late 1944.

Tank’s main armament is the 128 mm KwK 44 L/55 gun, based on the 12.8 cm Pak 44 anti-tank field artillery piece also used in the Jagdtiger tank destroyer. It also has the 75 mm KwK 44 L/36.5 gun as secondary armament and the MG 34 machine gun. Maus was too heavy to cross bridges, so an alternative system was developed where the tank would ford rivers instead. Due to its size, it could ford relatively deep streams. For even deeper streams, it was to submerge and drive across the river bottom. The solution required tanks to be paired up. One tank would supply electrical power to the crossing vehicle via a cable until it reached the other side, and the crew would receive air through a large snorkel. Due to its size, Maus was extremely slow and intended to punch holes through enemy defenses whilst taking almost no damage. However, the tank was developed too late and never saw actual combat.

IS-3

IS-3 is a Soviet late-war heavy tank. The chassis was left virtually unchanged from the IS-2 model, but the hull sides were largely inclined and well-sloped. The turret was changed. It was hemispherical, bowl-shaped, larger than the width of the tank itself and presented a pronounced tumblehome form. This shape, later simplified, ended as the trademark of all Soviet Cold War tanks. The armament was 122 mm D-25T gun with a muzzle brake. The rate of fire was 2-3 shots per minute, still largely inferior to German and western tanks in general. There was a single DT secondary machine-gun next to the gun in a fixed cast encasing. Overall, IS-3 had great armor, a good cannon, and good maneuverability. The first IS-3 tanks rolled out of the factory in May 1945. They didn’t take part in fighting but were paraded proudly on the 7th of September 1945 during a military parade in Berlin.



In The Long Run The Game - Zerstorengames


We are working on an attacking ai that you can enable if you want some combat and enemies so we have also added some base part for the defence of the bases.

1) We have added 4 type of turrets that can damage the player: Laser, flamer, bullet and missile turret.

2) We have added a laser wall to protect your bases

3) Changed the damage system to be more clear and also the death of the character by adding a selector to choose where to resurrect.

4) Changed the camera collision that was not working well with landscape.

5) Reimplemented the possibility to rotate exterior base parts and monorail stations after they have been placed via the interaction menu

6) Fixed the "ore collector" that is a part to automatically collect ores from rovers if you park the rover nearby this unit

7) Added the possibility to visualize many visibile stars position in the starting map (the planetarium). This is made by using ESA - Hipparcos catalogue of stars database and by generating a star of the right color class as it would be in the real sky.



The limit is that it doesn't reproduce the gas clouds among the stars so we are looking for a solution otherwise we need to keep a skysphere image of the milky way in the background. Therefore we only added this to the starting map, for now...

This is something that we would like to add also to the game maps to made possible orienting using stars position but it's still to be tested.

8) minor fixes




Download size 244 mb
Colony Survival - Pipliznl


We were pretty happy with the continents as shown in the previous blog, but we had also spotted some room for improvement. There was one major problem: a lot of biomes looked pretty similar. It wasn't immediately clear when you had arrived in a different biome.

A good thing was the combination of different trees. In certain areas, there is a mix of pine trees and deciduous trees, and we love how that looks. We suddenly realized we could use this as a solution to our problem of biome distinctiveness! Trees with different colors can make a biome look better, ánd it helps to visually separate the biome from others. Here's a video to show the new look of the biomes:

https://youtu.be/LMaFZ8I2Xg8
What do you think of the changes? Let us know!

We finished the important changes to the world generation this week. We decided to test it by starting a new colony without cheats. It was highly frustrating. Look at this area:



It looks relatively flat, right? I thought it was a great spot to start a colony. But when seen from above, a problem becomes obvious:



There's barely any flat space to start a 10x10 wheat field! I discussed with Zun whether it was easy to add more truly flat spaces, and he answered "no". He quickly came up with a different solution to the problem: allow players to create fields on areas that aren't flat! In real life, there's plenty of farmland that isn't 100% flat. It takes some tweaking, but it should definitely be possible to let players start non-flat fields in Colony Survival. We hope to be able to show it next week!

Q&A

Last week's blog generated quite a lot of questions, and here we'll answer some!

#Discussions_QuoteBlock_Author
But the card is very small right?

You flew from the south to the north in 1 minute?
That is very small. The map should be 10x that big.
Multiple people complained that the world looked small in the video. I nearly made a video of me walking from the far north to the deep south, but I quit that after I noticed how many gigabytes of footage that would require!

It looked small in the video, because we were using cheats to fly rapidly ánd we were fast-forwarding the video. We can assure you that the world ís big if you're traversing it by foot. If you're still unsatisfied with the size, it can easily be increased in the settings!

#Discussions_QuoteBlock_Author
Looks great, when can we expect to see some sort of alpha/beta to test this stuff?
Modders already have access to the latest dev branch of 0.7.0. We're now focusing on essential features (happiness, unique content per biome, trading between colonies) and will start a beta when those are done. We'll release a form where everybody can apply when the moment is there!

#Discussions_QuoteBlock_Author
i know you probably wont read this but what are you doing for the longevity and replayabilty for the game? it seems once you complete all the sciences that there is not much reason to continue playing and there doesnt seem to be much replay ability since it will always end up the same way?
We did read it :D Many players already spent 20-40 hours on the game, mainly unlocking all the science and building a big colony. 0.7.0 will add lots of extra content, exploration, multiple colonies, new science, and features like happiness and XP/VAT. It should occupy players for a long time! :)

Why do you keep playing a game?

We didn't have much to show in Friday Blog 66 and 67, so I filled them with semi-philosophical ramblings. I expected people to be happy when Blog 68 returned to actual progress updates, but there were actually many people who missed the rambling! I'm glad some of you enjoy it, and here's some more rambling about the things that I've been pondering about.

I've been gaming for roughly 20 years, and I've always thought and talked a lot about them. But now as a full-time gamedev, I'm even more in some kind of "analytical mode" when playing games. In the past month, I bought two AAA games, Far Cry 5 and Forza Horizon 4. While playing, I tried to carefully consider why I wanted to keep playing or why I felt 'done'. It forced me to think about the essential nature of meaningful gameplay, and about meaning itself. And when we're talking about that, we quickly end up with Jordan Peterson:

https://youtu.be/_7poPzW1u-U
In the video, he talks about the yin and yang symbol. One half stands for "order" and "the known", while the other half stands for "chaos" and "the unknown".



It seems obvious why you'd want "order" and "the known" in your life. You don't want to live in a chaotic mess that you cannot deal with.

But it's not as simple as it seems. The white side of the symbol, yang, is characterized as many things. Not only order and the known, but also "masculinity", "day" and "authoritarianism". It is not characterized as good. The black side, yin, is also characterized as the night, femininity and decadence, but not as bad.

Apparently, both sides have a purpose. And it's obvious when you think about it. We might strive towards more order, but we also love the unknown, 'chaos' and surprises. We don't want to do the exact same thing every day. We want to learn new things, do things we've never done before, discover places that we've never visited!

Our lives feel meaningless when we're in a constant chaos that we cannot get a grip on. But our lives also feel meaningless when we have the exact same repetitious rythm, day in, day out.

Jordan Peterson advises "you should construe yourself as the process that mediates between chaos and order". That's when your life becomes meaningful. In one part of your life, you should build order and knowledge, but simultaneously, there ought to be a "frontier" where you're confronting the unknown and learning and doing new things.

I think the principle above absolutely holds true in gaming.
If you're being shot at from all sides, and constantly die random and unpreventable deaths, it's pure chaos. You'll quickly tire of the game.
If you can predict exactly what is going to happen, and you're just going through the same motions over and over again, it's pure order. You'll also stop playing.

A game is fun as long as it can simultaneously give you a feeling of increasing order and knowledge and the idea that chaos and "the unknown" are still present.

These demands are pretty contradictory. As order increases, chaos decreases. Once you've unlocked all technology, beaten the last boss, explored all levels, chaos is 'gone'.

Of course, you can always add new levels and expansions. But I think the best games that people spend the most hours in don't rely on that. Games like The Sims and Rollercoaster Tycoon have complex systems that continuously generate new challenges, and it's not obvious when you've "completed" them. Both games contain many relatively simple and obvious systems, but when you combine those systems, the result of their interactions is often unique and engaging.

We want to do something similar with Colony Survival. We don't have a big team and we don't have fantastic artistic skills. We can't make an epic photorealistic cinematic experience that lasts three or five hours. But we can try to make deep and complex systems that keep challenging and surprising players in the long run. There are already plenty of players with more than 80 hours of playtime, and there's even a sizeable group who've played CS for over 200 hours. We hope to grow those groups in the future :D

Bedankt voor het lezen!

Reddit // Twitter // YouTube // Website // Discord
Total War: WARHAMMER II - CA Ella


Legend has it that the sea witch Cylostra Direfin was once the favourite court singer of the Bretonnian king.

Sent on a voyage across the ocean to sing for the Phoenix King, they were hit by a fierce storm. The madame’s notes turned to screams of fury as the ship sank, and all onboard drowned.

Decades later, a Bretonnian galleon of rotten wood and tattered sails can be seen navigating the seas even in the most savage of storms. It is The Lamprey, the ship of the vengeful spirit Madame Cylostra and her crew, the Drowned.

Learn more about Cylostra Direfin here: https://academy.totalwar.com/vampire-coast/
Oct 12, 2018
Awesome Pea - annpigeon
Good news, everyone!

Here comes the second patch!



+ now you can disable tube- and crt-effect in settings menu
+ controller movement improved - now you can use both left stick and d-pad in game and map menu ^_^
+ balance improvements on cave-levels
+ another one pea pixel was redrawn
...