Translations for our friends around the world.

Author Topic: Military Operations  (Read 4444 times)

0 Members and 1 Guest are viewing this topic.

Offline Asid

  • HAVOC
  • *
  • Posts: 15907
Re: Military Operations
« Reply #45 on: August 05, 2018, 12:57:03 AM »
[DEV] Fast mesh instancing in a streaming scenario
2018-08-02 BY Serge



Introduction

To focus on the render-data preparation specifically, I assume the reader is familiar with the following concepts:
•   Instanced mesh rendering
•   Compute shaders
•   AOI (Area Of Interest)
•   Quad-tree tile-based space partitioning

For an introduction I recommend this BLOG entry.

I will use OpenGL to demonstrate details because we use it ourselves and because it is the platform independent alternative. The technique however can be adapted for any modern graphics API that supports compute shaders.

The problem



You’re building a game-world that is big, so big in a fact that not all of it can be loaded into memory at once. You also don’t want to introduce portals or level loading. You want the player to have a uninterrupted experience.

How can I do fast mesh instancing in a streaming scenario?

For true continuous streaming, a typical scenario would be something like this:
•   The world is partitioned into tiles (Quad-tree)
•   When the Camera moves, tile-data is read from disk and pre-processed in the back-ground.
•   We need to render meshes for each tile.
•   There can be more than 1000 tiles in the AOI, more than 100 different meshes and up to 10000 instances per mesh on one tile.

Is it possible to improve from 1000000000 draw calls to one draw call?

The solution

The solution is to do the work on the GPU. This is the type of processing a GPU is particularly good at.

The diagrams below show memory layout.

Each colour represents a different type of instance data, stored non-interleaved. For example, position, texture-array layer-index or mesh scale-factor etc.

Within each instance-data-type (colour) range, a sub-range (grey) will be used for storing data for instances of a particular mesh. In this example there are 4 different meshes that can be instanced. Within the sub-range, there is room to store instance-data for “budget” amount of instances. After loop-stage step 4, we know exactly where to store instance data of each type (pos, tex-index, scale, etc.) for a particular mesh-type. In this example, the scene contains no mesh-type 2 instances but many mesh-type 3 instances.


Read on

I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 15907
Re: Military Operations
« Reply #46 on: August 10, 2018, 01:42:56 PM »
Mulit-player poll on the website
10 AUGUST   - TREESONG



We noticed several questions and some of discussions regarding multi-player on the MilOps forums. We don't plan to include multi-player for the initial release of the game.

We do see how multi-player would fit with MilOps however, and would like to include it at some point. This sounds like a perfect poll-topic.

Head over to the website and let us know where you stand regarding multiplayer.


I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 15907
Re: Military Operations
« Reply #47 on: August 14, 2018, 11:24:43 AM »
We have a little surprise for you!
Military Operations: Benchmark - Treesong



A MilOps update featuring play-testing was released today!


The play-test let's you try out the draw-order UI yourself.

This introductory video explains how to draw orders on the terrain.

Three basic unit orders


Uploaded on Aug 12, 2018
This video introduces the three basic unit orders that can be used in the MilOps: Benchmark 20.4 game-play experiment.


Since the play-test is small and we had to disappoint some users before, we made sure the play-test can be used on machines with 2GB video-ram!

So try it out, or head over to the store-page to install MilOps: Benchmark!

Feel free to discuss what you do and don't like about the play-test.  We appreciate your feedback.


I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 15907
Re: Military Operations
« Reply #48 on: August 14, 2018, 11:35:02 AM »
First Gameplay test.
Supports 2GB video-cards


The last MilOps version gave an impression of the scale of the game. It also helped us ironing-out driver support issues. In this latest version we introduce gameplay:

•   Try to capture as many objectives as possible before time runs out
•   Control your units by drawing orders on the terrain
•   Inspect unit state in the detail-dialogue
•   See how your occupied territory increases
•   Watch your progress on the Status-screen

The main goal of this game-play experiment is to try-out basic unit-ordering by drawing on the terrain.

I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 15907
Re: Military Operations
« Reply #49 on: September 21, 2018, 01:07:47 AM »
Summer break is over
20 SEPTEMBER   - TREESONG




Now that the DevCom, GamesCom and a small summer break are over, we are back on development full time.
That means we will also pick up our regular development reports and BLOG posts.

Stay tuned!

I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 15907
Re: Military Operations
« Reply #50 on: September 29, 2018, 01:59:43 AM »
Development update
September 28, 2018



Handling hybrid GPU systems
We've noticed a substantial number of users have a system with both integrated graphics (Intel HD Graphics) and a separate graphics card (NVidia/AMD).
For MilOps to run, it is important to make the separate graphics card active.
Many users don't know how to do this or aren't aware their systems contains two GPUs.

Many games suffer from the same issue and we've added info on our support page that explains how change this manually. However, it appears we will have to make this selection automatic. This sounds easier than it is. We are working on a robust solution at the moment.

Game development progress
Meanwhile we are also working on more interesting features like formations.
The new system very graciously handles formations throughout the entire hierarchy while also allowing units and individual troops to adapt to their direct surroundings. We hope to have some shots or video soon.

I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 15907
Re: Military Operations
« Reply #51 on: October 03, 2018, 12:01:22 AM »
MilOps Benchmark patch 20.4.1 released
Military Operations: Benchmark - Treesong



This week we have a patch update for MilOps Benchmark

No new content or functionality, just a stability and bug fix.

The main updates are:
•   On systems with multiple GPUs, the separate graphics-card should now be automatically activated for MilOps.
•   An issue concerning a path check when doing a clean install is now resolved.
•   The kernel-cache (GPU specific code) is now more robust and can be cleared in the options menu

Anyone with a supported system who experienced issues running MilOps, should try this version to see if they are resolved.


I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 15907
Re: Military Operations
« Reply #52 on: October 20, 2018, 02:32:19 PM »
Unit formations video


We've been working on improved unit and troop formations
as well as movement. To give you an early peek at current progress we put a video on YouTube demonstrating the new behaviour.




The slides of our DevCom 2018 talk
from last August can now be downloaded here. It is intended for developers, so beware.




I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 15907
Re: Military Operations
« Reply #53 on: November 25, 2018, 01:09:35 AM »
[DEV] The best API for an ECS on the GPU
2018-11-20 BY Serge



Our talk at DevCom 2018 was about running your game entirely on the GPU. To achieve this we implemented an Entity Component System (ECS) on the GPU.

This blog entry will sum up why we selected the OpenCL API for implementation.

Question: Which API to use for making the GPU the main processor and implementing and Entity Component system running on the GPU. We need as much freedom and generic access to the GPU as possible.

Requirements
•   Fast (close to the hardware)
•   Full disclosure of the GPU
•   Freedom (minimal restriction on architecture design)
•   Platform independent (OS & hardware)
•   Support on consumer systems (Desktop in particular)
•   Interoperability with Rendering

Candidates
•   Compute shaders
•   Cuda
•   OpenCL
 
Analysis

Compute shaders

Pros
•   Common solution
•   Stable support

Cons
•   Heavily impaired by graphics centric assumptions
•   No pointer arithmetic
•   Reduced precision (not an option for a persistent simulation)
•   Additional (memory alignment/addressing and other) restrictions due to graphics central assumptions of the mother API
•   Convoluted API (OpenGL)
•   Shares state with rendering (driver)
•   Conflicts (performance) with driver assumptions which may differ between vendors (or driver versions!)
•   It makes no sense to use a 2 seater sportscar to move your furniture. Even though it looks nice and you already have experience driving one.
 
Cuda

Pros
•   Fast (Close to the hardware)
•   Stable and reliable (NVidia has been taking GPGPU serious for years)
•   Mature tooling and libraries

Cons
•   Hardware locked. (Only on NVidia hardware)
 
OpenCL

Pros
•   Fast (Close to the hardware)
•   Clean API
•   Hardware and OS independent with support for many platforms

Cons
•   Not very mainstream on consumer platforms (although drivers are supported through display driver installs)
 
Conclusion
We need an API that disregards the “G” in GPU.
Just generic, low level access to a very fast processor: OpenCL

Notes
•   Why it is important to select the right API for the job?
If your use-cases differ too much from the mainstream API intend/use, you will inevetably encounter problems. Especially with assumptions driver builders make.
So use A graphics API for grapics and a compute API for computing, and you will be close enough the those assumptions.
•   Vulkan vs OpenCL interop
There has been some mention of this here and there, but no serious efforts have been made. For sure nothing that warrants a consumer product integration will be available any time soon.
•   Compute shaders with Vulkan
Vulkan may be lower level than OpenGL, it is still a graphics API. Compute-shaders are still a side-dish to the graphics main-course.
•   Interop Cuda vs OpenGL
Yes it exists. We didn’t investigate it in depth because the vendor-lock already dismissed Cuda for us.


I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 15907
Re: Military Operations
« Reply #54 on: November 25, 2018, 01:11:51 AM »
Development update
23 NOVEMBER   - GRECCO



Research
During our never ending search for reliable information about practices in WW2, we came across this gem; A German Tactical Doctrine manual https://fas.org/irp/doddir/navy/german.pdf  A treasure-trove of information about how things actually were done. This one was translated to English.

Patch coming up
We are about to release a new patch (v20.4.2). It will address a rare case of the game failing to shut down when encountering a problem during launch.

Blog entry
Last week we added a new BLOG entry http://militaryoperationshq.com/dev-selecting-api-implementing-ecs-gpu/  Again, more targeted at developers than users. It explains why we choose OpenCL for running the simulation on the GPU.

I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 15907
Re: Military Operations
« Reply #55 on: November 28, 2018, 02:24:29 PM »
Patch 20.4.2 released
Military Operations: Benchmark - Treesong



Application will not close
We noticed a small number of people experienced an issue with the MilOps: Benchmark where the application wouldn't close when something went wrong during start-up (mostly due to old hardware/drivers).

This latest patch should resolve this problem.
That's all for now!

I stand against Racism, Bigotry and Bullying