Stellaris In VR-is

Now available via Github for anyone who wants to take a look at the inner workings

 

How it works

A beautiful bodge

Manipulating the view

Resetting the view to the center of the galactic map uses a series of AutoHotkey commands to zoom out, drag the mouse to orient as top down perspective, and then open the console and use the “goto 0 0” command to center the map.

Opening panels is always handled via hotkeys, which means VR-is doesn’t actually have knowledge of which panels are open/closed, only estimations based on an expected blank start state and the history of hotkeys it itself has pressed.

 

Different panels

To achieve the effect of having multiple panels open at once, those that aren’t currently open in Stellaris have their view paused (e.g. opening the technology panel will capture and freeze the view of planetary administration so it can be referenced but no updates will be visible!)

Currently panels are updated if the player touches them with their controller

Going forward this should be expanded into a full ScreenManager class which controls each individual panel and chooses which is being updated when (perhaps based on which one is the closest the the player’s view, and so probably what they are interested in)

 

Ship/Planet selection

These are simply handled by using the hotkeys 1-9, hardcoded in Unity for mockup purposes to be the planet on 1 and the fleet on 2

 

Sending input to Stellaris

AutoHotkey moves the mouse cursor based on relative position of VRTK controllers over each panel

 

Loading Systems/Hyperlanes

The Stellaris save format can be converted to JSON via this tool, which allows VR-is to display an overlay of the map ontop of the main screen (seen in the video as pink hyperlanes)

 

Requested features

Player at the center of a holographic galactic map

Possible and pretty easy based on current features, placing the player in the center of the galactic map loaded from the save.json would allow them to interact with this holographic/resizable/rotatable map while the code transforms this input back into 2d screen space to click the mouse for fleet movement

 

Ship art based on the selected leader background

Possible I guess, just a lot of art work

 

Communication on main screen

Not sure how to detect when communication arrives, but otherwise easy to place in a panel in the scene somewhere

 

Home planet visible from windows

Possible but it would be a static view, due to only being able to have one camera!

 

Multiplayer, commanding the same empire

Possible by streaming Stellaris capture to all connected players, and sending back and input via AutoHotkey, however in this bodge solution they would quickly be overwriting/messing up each others commands as they all try to input at once

Maybe it would have to work like an old timeshare? Haha

 

Galactic community

I imagine this as putting on an AR headset overlay which would display the community voting chamber, and being able to see the actual empires in the balconies of the side they are voting for!

Unfortunately I don’t see how this could be possible currently other than trying to do image recognition on the empire flags, or just hardcoding it

 

Project navigation

Supports SteamVR currently but others would be easy to add due to VRTK

Assets/StreamingAssets contains all the AutoHotkey scripts:

  • panic.ahk – Useful in case you lock yourself in Stellaris through panel interactions (Ctrl+F1 will exit play mode in Unity)
  • resetview.ahk – Run when the player hits the “Reset View” button in VR, tries to recenter the view as top down and showing the whole galaxy

 

Required

Stellaris

Tom’s Hotkeys (Stellaris Mod – adds ability to open Tech panel on T)

OBS (May have to scale down output resolution due to resource intensity of Stellaris and OBS and Unity)

OBS-VirtualCam (Target “OBS-Camera”, no buffered frames)

AutoHotkey

Unity 2019.3.4f1

Stellaris Save to JSON

 

Related:

Portfolio Page

Heavy Gullets: Portals

The goal of the portal gateway from the main lobby was to create an awesome first impression of the game, as this is players’ entry to each level it is the first thing they will see (and then continue to see often).

(The portal effect seen when travelling between levels. Sequence lasts around a second)

By curving the direction of the particles over time I was able to create the simple but convincing effect of the tunnel bending around in various directions before reaching the destination and spitting the player out.

(The effect seen before entering a portal; A hole is cut in the wall with stenciled rendering)

The portal has a gravitational pull on any nearby players, which was then extended to affect the plantlife (notice the tuft of grass to the left of the portal) – again with the goal of making the world seem more real through interactions and feedback.

 

And here’s a view of the full interaction:

Heavy Gullets: Plantlife

One of my core focuses while creating Heavy Gullets was polish & good game feel. I wanted to make the world feel really alive by adding reactions to the player in every aspect of it. This began with particle effects, however the aspect I’m most proud of is the plant interaction. If a player or bullet moves through a plant then it rustles and bends away from the collider (all clientside). This is a really simple effect accomplished by lerping the plant’s angle in the direction of the collider’s velocity, with some added squash and stretch to the scaling, but has a has a huge impact on the feel of the game!

Dare to be Digital: Post Mortem

Team Dziethew had a fantastic weekend showcasing our experimental game ‘The Gods Are Wanting’

(My team mate Dziek talking about our experiences)

Though our original plans to add large amounts of content to the game each night fell through (we spent our nights drinking networking instead), the public reaction to the game was still amazing to see.  People seemed to enjoy the pure fun and weird world of the game, which seemed to make up for the complete lack of polish (we only finished our first build two hours after the event opened).

 

We were so busy running the stall it wasn’t until the final day that I got the chance to quickly run around and play things.  I had a lot of fun with all the stuff I managed to play, but my favourites were definitely:

Gravity Pong by Amy Parent, a great twist to a classic game.

• Super Block Party by Sofa Squadron, really fun party game with plenty of polish.

Hedra by Kirsty Keatch, a lovely one touch infinite scroller.

KUBOT by Marios Michalakos, sweet minimalist puzzler for iOS.

• The Extraordinary Life and Times of Nigel Farage, Gentleman by Half Lamp Productions, fantastic satire piece with SIX unique minigames – so much effort & polish.

 

On the final night, as is traditional at the end of Dare, there was a Ceilidh held with good music, dancing, & a free bar.  A great end to a great event!

 

Thanks Dare!

Dare to be Digital: Indie Fest

It’s the first day of Dare today and 2 hours into the event we finally have a working game, come play!

So after prototyping various different games with Dziek we changed our idea again a few days ago, and spent the last night creating this game.

A four player build-your-own-monster-and-fight-them game focused on adding special limbs to your god to give them power.

Planetary Annihilation Modding 8 – Networked Play

Currently working on networking the standalone application element of the mod

pamod11

(Art belongs to UberEnt & Planetary Annihilation)

Using the Lidgren C# UDP networking library, which has been really easy to work with so far.

Currently players can connect to games and take turns performing actions, which are validated by the server & then sent to all connected clients.

pamod12

(The turn notification UI is just placeholder at the moment)

Planetary Annihilation Modding 6 – Galaxy Generation

With my Honours project done, I am happy to finally get back to this.  Working on some procedural galaxy generation.

pamod7

(Art belongs to UberEnt & Planetary Annihilation)

This should allow for some more interesting layouts, as before I was just hard-coding the systems and the routes between them.

 

The generation works by;

• Randomly positioning a number of systems within a bounding box, while collision testing to ensure there is no overlay between themselves

• Connecting all systems within a short range of each other

• Grouping together all the systems which are linked

• Finding the shortest paths to link these isolated groups of systems together

 

It seems to work well enough for my purposes at the moment, but I could make it more interesting by adding some more random paths later on.

The systems also have a procedural name which just combines two strings from arrays of names and suffixes.

Planetary Annihilation Modding 2 – Progress!

Progress with the actual modification part, now when players build something they will construct their unique version instead of the default.  This may not seem like much but it forms the foundation of the concept, as it allows each player to have separate statistics and units.

Planetary Annihilation Mod 2

(notice that the tower’s name has been appended with a 0, as I was the first player)

Also thanks to wondible for the Instant Sandbox test environment mod

Planetary Annihilation Modding

I recently started playing Planetary Annihilation: Titans (PA) multiplayer with some mates & have been really enjoying it.

Planetary Annihilation Mod

 

As with any enjoyable PC game I quickly started looking into the modding scene, to improve our experience with preexisting mods and look into creating mods for the game personally.  I discovered that PA actually has a notable mod community (though fairly small in number), which was strongly encouraged by Uber Entertainment (being listed initially in their Kickstarter as “Advanced Modding features”).

 

I’ve decided to try and make my own multiplayer version of the game’s Galactic War campaign mode.  In this singleplayer mode the player moves through a galaxy map playing AI skirmishes and unlocking new technologies (e.g. new units or buffs) for each victory.  My current concept is an external galaxy map featuring the functionality of the campaign and allowing for new technologies to be unlocked, which I have created a small prototype of in the C# game framework Otter (as pictured above).  This external application will edit the base .JSON files describing each unit and export them into the game.

 

The major problem I foresee at the moment is that most of the unit .JSON files are not unique per player (excluding the unique commander units), which would cause any technology unlocked to be shared among all players.  My current low-tech solution to this is to make a copy of each unit per player and then alter their build menu UI to reflect this.

 

You can follow the project here:
johnjoemcbob/PA_MultiplayerGalacticWar