Saturday, January 4, 2020

Continuing to read and watch Blender training information.

Blender

Getting a bit distracted by pulling in blender 2.8 build source code. I’m now a bit curious about the internals and may let myself be distracted by that now and again. Certainly planning to see if I can run a local build on JabberwockChaos upstairs has path issues that I’ll need to resolve before I can do much on that front. One of the nicer things about having more than one build-capable machines around.

Unity

Looking at a few things in the immediate future

  • Get text working. Hover text labels over stars that always face the viewer with at a minimum the name of the star.
  • Build star gate model(s) in blender and import them into unity and then place gates in the view.
  • Build a simple information viewing panel in game and support star selection where the information for the selected star shows on the panel.
  • Build a simple mechanism for saving game and loading games. Need a persistence format for game data.
  • Look into adding simple feedback sounds to the game. At least a noise when a selection is changed in the star display.

A New Year, Blender and Unity and Games

Rolling into 2020 after a busy and somewhat chaotic six months I’m looking to get back on track with VR coding in Unity.

Blender

First step (although likely still mixed with other things) will be to get up to speed with Blender 2.8. I’ve bought the previous two editions of The Complete Guide to Blender Graphics (one in paper, one in Kindle) and not found the time to run through them before a new edition was published.

With blender 2.8, the UI has allegedly been completely reworked. At this point I’m going to put off laying down cash for the version of that book that covers this version of Blender and first go through a beginners tutorial to make sure I’m decently on my way before spending a big chunk of cash.

Hoping this goes well as I’d like to be able to create more interesting items than my current simple shapes to populate my VR creations.

Cluster

My first goal in the Blender work will be to put together models for my stargates. I’ve got my star cluster in place. I’ve got some usable ship models (though these could use significant work to make them more visually interesting).

I could use some sound samples for interaction feedback. I have minor haptic feedback when a star is selected with the control wand but a ‘bump’ noise would be welcome as well. I need to dig up my little digital recorder and figure out the APIs in Unity for this stuff.

I need to add in star name labels and other related display bits. Ideally these would float above each star and face the viewer/camera regardless of their position. I’ve got public-domain name lists of star names to use so I should be able to do better than just ‘star’ above each one.

I’d like to fully implement a ‘select’ system where the last star that was ‘wanded’ shows its full system information on a hanging display monitor to one side of the main play area. This could then be extended to support setting up unit orders for movement and such.

Adding in planet generation should round out the environment management.

Then I’ll need:

  • Cluster state save games.
  • Ship entry.
  • Fleet movement orders.
  • Assignment of ships to a fleet.
  • One admiral for each fleet.
  • Exploration to reveal the system information once ships have arrived.
  • …and more…

Unity

Clearly I have much more to learn about using Unity for game development. There are probably additional tools that I should be considering as well.

No particular areas of focus within unity at the moment, but I expect that once I get back to doing some coding there, I’ll find plenty of things to dig into.

VR

I’ve got my HTC Vive set up back in the front basement (had moved it up to my home office but there really isn’t enough room there). We’ve doing a clean-up pass through the basement so there should be yet more space down there in the near future.

I’m expecting to get the motion capture cameras set up again soon as well. Not sure when as I’m going to try to stay a bit more focused on blender and unity in the immediate future.

I’m still tempted by new headsets but so far I haven’t seen anything that is sufficiently exciting to throw money at. If I picked up a second one I’d probably put one upstairs and one in the basement to facilitate development work.

The closest something has come to getting my attention was the HTC Cosmos with its inside-out tracking and new controllers. I’m still a bit tempted as the convenience of a headset without external trackers would be nice. The fact that they’re suggesting that they may add support for outside-in tracking to improve precision has kept me on the side-lines so far.

If they add support (a new face-plate has been suggested) so that this head-set can do both with the better display panel it already has then I might go for it.

3D Printing

I’m still on the side-lines with 3D printing. It is an interesting technology but I don’t have enough need and I’m swamped with things I want to get done as is. I still might consider a pre-built machine at some point (particularly if the basement work bench gets cleared enough to be usable) but it is likely low on my list.

In truth, I suspect that a laser cutter would be more immediately interesting than a 3D printer. The big problem on that front is that a decent laser cutter is much more expensive than a decent 3D printer.

Wargames

I’ve been walking through my game collection to gather ideas and inspiration as I go. There are quite a few concepts that would be worth bringing over from board wargaming into complex computer games.

One challenge I see for turn based strategic games is that many of the board game designs have interactive resolution steps within a turn. This works well when you’re standing across the table from your opponent and the two of you can interact as things get resolved. This does not work if you’re trying to run something turn based where the participants aren’t expected to be online at the same time.

I’m looking at mechanics where the fine-grained actions are either carried out by a mechanic (commanders or similar where you have a number of choices and each commander has a profile) or where they’re abstracted into a larger mechanic. On balance, there’s no reason that a strategic commander should have any input into the ebb and flow of one battle or a local commander be involved in the decisions that a platoon leader makes.

Steampunk Universes…

Went to the steampunk festival that my friend Sam is involved with last weekend. Nice event, I couldn’t stay as long as I’d have preferred but had a though provoking conversation while I was there.

Atoms as a problem

If you’re going to scale physical objects down to very small sizes (and to make high tech steampunk happen you kind-of do) then atoms (and quantum effects if you want to go there) become a significant problem.

We have it easy

Given that we’re running into those limitations with our information processing technology and our switching mechanisms need to do no more than gate electrons from passing through, a steampunk analytical system would run into more serious problems.

Scaling for analytical engines

I would imagine a high tech steampunk analytical engine as incorporating tinier and tinier mechanical switching elements in its implementation. Ignoring for the moment square/cube issues (which may actually work in our favor) and gas related effects (vacuum is your friend) the scaling limits would start to pinch rather earlier I’d expect.

You want micron scale switches and gearing as part of your technology. You don’t want to deal with the hassle of building gears with single atom wide teeth or switches with atomic scale switching elements.

Construct a new set of physical laws to suit

I’d suggest an alternate set of physical laws where matter is indeed continuous as the ancients would have expected. You can subdivide a piece of brass into arbitrary smaller fragments and still have the properties of bulk brass.

Build a machine that allows you to manipulate smaller items and then just cascade down to arbitrarily small feature sizes. Add in jacquard loom or player piano style automation and you’re set to start producing fully mechanical analytical engines. In this sort of a universe, nano-tech might actually prove to be more practical than in the one we’ve got. No strange domain transitions as you get smaller and lots of incentive to develop micro-machining technologies.

It would be rather interesting to extrapolate this universe a bit more and think about the other implications. Certainly wouldn’t have radioactivity in the form we currently do as there would be no atoms to fragment. Chemistry would be completely different perhaps involving behaviors more akin to alloying than to chemical bonds.

Interesting set of thought experiments to play with here I’d think.

Oculus Claims to be Moving to Hand Tracking

Saw this here (Lorna shared the link).

This does sound like interesting tech (though tracking larger joints and body position seems even more interesting). I do not see how it can handle some of the core use-cases though.

Pretty much anything that requires fine manipulation (triggers, buttons, throttles and HOTAS rigs) would seem to be out of the picture. Being able to track gross hand motion seems possibly within reach. Being able to pick up a glass in VR with hand tracking and then spin it around to look at the far side seems extremely challenging.

I can see this working in the near term for things like fighting games where you punch an opponent. I can’t see it replacing controllers or similar items for fine motor interactions…hoping they’ll prove me wrong though.

Ok, interesting…vive also seems to have some early access hand tracking with the vive and vive pro mentioned here.

New Job and All of the Busy That Goes with That

I’ve just moved from KMC Systems to Draeger and the last couple of weeks have been very busy. That has resulted in very little outside activity worth posting about. At this point I’ve been in my new position for a week or so and feel a little bit more like I’ve got my feet on the ground so I’m expecting to get back to some interesting work.

I’m also no longer working with Malcolm and Sam so no more lunch-time discussions of semi-random technical issues and unity programming stuff. Hoping to set up some regular get-togethers as we move into the fall. Got to get the interesting stuff kick-started again and three brains are definitely better than one.

More VR Ideas – Simulation

Game of life

Thinking that a VR game of life implementation might be fun and relatively straightforward. Perhaps on a sphere would be even more interesting…closed universe.

Also wondering whether a three dimensional version could be jugged together.

More of a fun toy than a real game, but perhaps fun to play with.

Need to think about how to map the quantized grid from a flat version into spherical layouts. Might make sense to do something with continuous placement with volumetric cells that bump aside any too close and attract cells that are near enough to aggregate. Would be similar but a bit different.

Orbital Simulation

Playing with a setup where masses could be placed in three dimensional space and then items released and run the simulation forward.

Could be fun to play with looking at the orbital mechanics issues .

Could move forward to a game where orbital combat is run through. Place vessels with real-ish engines and weapons. Implement UI and interaction to manage motion and allow planning and execution of maneuvers .

Missile Command Inspired VR

Interesting way to play with VR UI approaches if taken moderately seriously

The player is standing on the ground with a dark sky overhead. Controllers are used to cue weapons fire.

Inbounds are shown with location, trails showing previous track and various information attached as they move…possibly current velocity and acceleration vectors attached.

Player points at desired target and cues in a weapons system on that target (or targets sensors perhaps to gain more information)

Could be a fun thing to play with.

Ideas for VR Games

On the flight out to San Diego I was kicking around some game ideas. The cluster game is already in progress and I’m leaving that one aside. Here are some of them… this is going to be a bit ‘stream of consciousness at the moment.

Human Space Invaders

The idea is that you’re standing there looking up at space invaders flying around and getting closer. You have several weapons you can fire at the attackers and they drop ordnance towards you as they fly over. There are shields above you in places that neither you nor the invaders can shoot through but all shots damage the shields if they hit them.

I was thinking of a few weapons for the player:

  • a beam weapon that you can play around like a flashlight. This would use ‘energy’ that is slow to refill and rapidly consumed when lasering. Very powerful and effective but limited availability.
  • Pulse weapon similar to the laser but much more efficient. Draws from the same energy reserve but fires blobs of energy up at the enemies.
  • Controllable weapon. Limited number per stage. After launch you can direct it with your controller and either cause it to hit an enemy or detonate it on command to throw out a spray of damage. The direction the relevant controller is held in would control the direction of flight of the round. Releasing the fire button would detonate the round.
  • Possibly a ‘boom’ round that flies directly up from where you currently are and when triggered throws out a much larger spray of damage than the missiles. Probably like a ‘smart bomb’ a limited total supply of these over all.

Hypergate Centurion-alike

Resource management game.

You are looking over a set of hypergates where your job is to send out attack craft to deal with space monsters and pirates. You get points for ships successfully transtting your gates or coming in and flying off to in-system destinations.

Items in the game:

  • Hypergates: ships and monsters enter and leave through these. When a commercial ship leaves through its designated gate you get points.\
  • Defense stations: Each station hosts a number of attack and salvage ships that you can send out to perform tasks. Stations and ships can be attacked by various things. You need to manage these resources to get your job done.
  • Plasma buoys: You have a plasma weapon that you can fire directly at targets (think ‘grid fire’ in the culture novels). Your attack power is related to how many buoys you have active and how close they are to the target location.
  • Off screen destinations: some ships (and pirates) come from or go to planets in the system that are off screen.
  • Commercial ships
  • Noncombatant military ships transiting the system. You get points for these ships getting where they’re going. They will defend themselves if attacked. They can be asked to assist with threats that don’t directly affect them but this costs points and is not guaranteed.
  • Gas and debris clouds. Obscure sensor readings. Conceal and generate monsters and pirates

More options to come…those were the first two on the list and probably the most fleshed out…also could restyle the invaders game with a less cartoony missile command approach and get something more serious and perhaps with more long term playability.

Cluster – RESTful APIs

As part of building the front-end to the shared web side aspect of the cluster game, I’m starting to lay out the RESTful interface to the database at the back-end of the server side.

I’m looking at several main categories using query parameters to filter results on aggregate areas.

  • players
    Returns a list of player names and ids. Details of a specific player can be retrieved (and changed) by accessing the player by player id as a sub-resource. Permissions do apply here…a normal player can only view or edit the details for their own information. An administrator can view and change information for any player.
    • id (immutable after creation)
    • name – Unique, human readable user name
    • email
    • is email public
    • password (settable only)
    • active
    • date joined
    • date last activity
  • games
    Returns a list of games in the database. With query parameters this can return games containing only a selected player or players, games that are in progress and perhaps other subsets of all stored games. Details of a specific game may be retrieved by game id. For normal players, only the details that their player identity has access to may be retrieved. For developers all details are visible and subject to modification.
    • id
    • player ids
    • turns
      One entry for each turn in the game so far. All open if the game is completed otherwise only information visible to this user is present.
      • turn number
      • units list
        • unit id
        • unit type
          ship type, planetary resource type, population
        • location type
          space or system or planet
        • location
        • player id
      • technology list
        • players
          • player id
          • technology id
          • level
          • investment
      • moves list
        • players
    • current turn
    • moves submitted
      (may be part of the turns container)
    • active
    • created
    • completed
    • final scores if completed
    • stars
  • options
    Options that relate to new games being started. Global lists (start information, admiral information and such). Generally these will only impact newly created games. Selected items may affect all games.
  • audit
    Audit log recording changes made using administrative privileges.

Cluster Game Moves

Overview

  • Turn based multi-player
  • Internet based shared state
  • Once all player moves for a turn are complete, the turn is executed
  • Strategic level
  • Non-interactive combat resolution a the end of the turn

Units

  • Scout ships
    Small, unarmed vessels with unlimited range used to gather information.
  • Colony transports
    Large vessels that only exist to transport a group of colonists to a new star. Once the colonists debark, the transport ceases to exist as its parts are used to support the new colony.
  • Escort
    Small interstellar armed vessel
  • Assault ship
    Medium sized interstellar armed vessel
  • Capital ship
    Largest interstellar armed vessel
  • Defense platform
    Small defense system dedicated to the defense of a single planet. Combat equivalent to an escort.
  • System defense boat
    Medium sized system defense vessel. Equivalent to an assault ship in combat. May be used in defense of any planet in a single system.
  • Factory
    Production facility on a given planet. Increases output of one unit of population based on the level of factory technology that has been developed.
  • Robotic Industry
    Production facility that operates without an accompanying population unit.

Basic Turn Mechanics

  • Spend on building ships
  • Spend on building facilities
  • Transfer population to colony transports
  • Form ships into fleets and break ships out of fleets (if at a star)
  • Spend on technology buys

Movement Mechanics

  • Scout ships can move independently and over unlimited distance
  • Unarmed ships that are not escorted may be destroyed on entry into a new system
  • Without hyperwave technology, fleets always continue to their destination system
  • Fleets never encounter each other in open space
  • Fleets move at the current guidance velocity for their side
  • Fleets are destroyed if they move beyond guidance range of all of their side’s beacons
  • Ships that aren’t scouts can only move as part of a fleet
  • Every fleet must have an admiral assigned to it
  • One ship with an admiral can be a fleet
  • When a fleet enters its destination system it ceases movement

Combat Mechanics

  • If fleets from different players are at the same star then combat will occur
  • Combat ends when a system contains only ships from one side in a system
  • Planets with defense platforms may be reduced by attacking and destroying those platforms or interned.
  • Production on planets that aren’t interned becomes available to the controlling player after some delay
  • The owning player may perform planetary bombardment to reduce planetary population. This eliminates one unit of population capacity for every unit of population removed. Likely only relevant if you expect the enemy to reclaim the system soon.