Space Engineers Multiplayer Chat Controls

Posted by admin on July 12th, 2019 filed in Games, Science Fiction
Comments Off on Space Engineers Multiplayer Chat Controls

Space Engineers has gone from Early Access to 1.0 in late winter 2019, but they still release free updates (and sometimes paid DLCs) and let us test them on a public server sometimes, like today. For future reference, I’m jotting down my notes how to use the chat in Space Engineers Multiplayer! :-P

As in most games, you press Enter to open the chat window and Escape to close it.
Enter /g to switch to global chat (white text)
Enter /f to switch to your faction’s chat (green text)

Note that each user name is shown in a (randomly?) assigned colour, don’t mistake that for the channel colour.

Open your inventory (press I) and go to the Comms tab to see chat logs. Alas, when people post links in chat, you still can’t select and copy any text (you can only take a screenshot and retype the link yourself…).

Since I was already busy pressing random keys, I found some more useful underdocumented shortcuts: Use ctrl-1, ctrl-2 etc. to toggle between several customizable toolbars! Then press G, press the keys 1 to 9, and assign actions to each number in each toolbar.
For example, you can customize one toolbar to hold all emotes (gestures like pointing and waving make multiplayer more immersive), one to hold grinding and welding tools and common base blocks, one for mining (hand drill, collector, gravity generator), and the rest for special blocks for ship or base building, perhaps…

And a reminder which keys to try if something doesn’t work: F, K, I, LMB (left mouse click). I for inventory — you can tab to other functions from here, such as GPS. F activates opens machine’s GUIs. K opens ship/vehicle/station “K”ontrols. And if that all doesn’t work, left click items such as doors, displays, buttons.
I had one case where I tried to activate a door terminal with F, and got a message “Access Denied”. Later I noticed that only access to the terminal was denied — the door was actually unlocked (left click on the door itself opened it)! Duh. ;-)


Procedural Mesh Tutorial

Posted by admin on May 26th, 2019 filed in Development, Games
Comments Off on Procedural Mesh Tutorial

If you’re a hobbyist game developer, you surely have looked into https://store.unity.com/. The Personal edition is free if you make little or no money from selling games. You are only expected to upgrade to the $25-monthly subscription after you earn $100k-200k per year. That’s a very fair deal that gives any hobbyist a chance to become proficient in the tool without investing a lot of money up front.

Now I’m watching this extremely well done tutorial by Board To Bits Games on procedural mesh generation. Basically, instead of creating 3D objects in an editor (such as Blender), I want to write a script that generates custom objects out of triangles.

Procedural generation only makes sense for creating objects that are simple or follow math functions, of course, you typically wouldn’t use it for naturalistic/artistic content. What I like about procedural generation is that it is similar to natural language generation — there is syntax and semantics in how characters, cities, vehicles, etc. are composed in meaningful ways. :-)

Here my notes from watching the tutorial:

Unity uses C Sharp, and the basics are easy to pick up for people who know Java. Also Visual Studio gives helpful hints if you, say, capitalise a method wrong.

The C# data types needed to create custom meshes

Vector3[] vertices
Vertices define where the corner points of the shape are in 3D (but not the order in which they are connected). Numbered by index. Reusable.
int[] triangles
A list of vertex indices in the order so they form triangles. Triangle corners are read in groups of three. We define the order clockwise, that’s important because it implicitly defines the triangle’s frontside (which is used by the backface-culling optimisation).

Creating the GameObject in Unity

In Unity, create a new scene, with a camera, directional light, and GameObject.
In the Scene Hierarchy, select the GameObject (we can rename it). Then in the Inspector:

  1. Add component “mesh filter” to GameObject. Holds an instance of (built-in) Mesh class which defines the shape.
  2. Add component “mesh renderer”. Renderer uses info in the Filter to draw the surface of the mesh object on the screen.
    Open the Material property and click the Element selector to select any material (for testing).
  3. Add “new script” in C Sharp. That’s because we don’t want to fill the mesh with statically loaded data, we want to fill it procedurally = script.

Writing the script in Visual Studio

Next we open the (default generated) script in VS.

  1. In the script header, we want to ensure that our mesh script can only be added to a suitable object:
    [RequireComponent (typeof(MeshFilter))]
  2. In the class, add private variables to hold the mesh, its triangles and its vertex data.
  3. Create a void function that initialises the data — this is where the custom proc gen code goes. (For testing, you can of course use static values.)
  4. Create a void function that loads the custom mesh data into this Unity GameObject. Since we added the MeshFilter Component to this GameObject, we can do that.

Here’s the code sample with static mesh generation — it generates one triangle.

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(MeshFilter))]

public class ProcGenMesh : MonoBehaviour
{
    Mesh mesh;
    Vector3[] vertices;
    int[] triangles;

    // ------ custom methods -------

    // 1) I procedurally generate custom shape data.
    private void GenerateMeshData()
    {
        // generate vertices here
        vertices = new Vector3[] { new Vector3(0, 0, 0), new Vector3(0, 0, 1), new Vector3(1, 0, 0) };

        // generate triangle indices here
        triangles = new int[] { 0,1,2 };

    }
    // 2) reset myself and load the generated shape data.
    private void LoadMeshData()
    {
        mesh.Clear(); // reset
        mesh.vertices = vertices;
        mesh.triangles = triangles;
    }

    // ------ built-in methods -------

    void Awake() // 1) I init myself as a mesh
    {
        mesh = GetComponent().mesh; 
    }

    void Start() // 2) I generate and load my mesh content
    {
        GenerateMeshData();
        LoadMeshData();
    }

    void Update(){} // 3) I run my main update loop, once per frame -- not used yet.

}


Space Engineers Open Day

Posted by admin on May 25th, 2019 filed in Development, Games, Science Fiction, Space
Comments Off on Space Engineers Open Day

On Saturday (May 25, 2019) the developers of Space Engineers, Keen Software House, had an open day at their office. It was well organised by nice guys who were very relaxed about answering people’s questions about Medieval Engineers and Space Engineers. (One of them was cheerfully volunteering and answering questions even though he had recently quit to move to another country, now that’s dedication.)

Regarding Space Engineers, what I am looking forward to is the economy DLC that they are working on: They mentioned it will introduce trading, and a scifi equivalent of economy-related quests. That is, we should not expect “questgiver NPCs” walking around, the tasks will be accepted through “machines”. The dev hinted that we will recognise them when we see them, but did not say how and where they appear.

The SE devs also mentioned working on a weapons and countermeasures DLC. They won’t totally revamp fighting –the game’s main focus is still creating/building– it just adds some more options. They promise every attack comes with countermeasures. We are talking hard sci-fi here, like in The Expanse, and not magic force fields and laser pewpew. In the Q&A they emphasised that the weapons DLC will be balanced because everyone gets it for free. A separate paid weapons DLC will only contain cool skins with the same functionality as the free weapons.

(Players are a bit anxious about any DLCs, especially on servers, they don’t want to risk splitting the community into haves and have-nots. Some fans brought up the question because they don’t fully trust the devs to not mess it up, although KSH recently have had a good track record, because they listened to feedback and made sure that all players can interact with the current DLC items. The situation being that on a multiplayer server, someone who owns the DLC can build a ship with a DLC item and give it to another player who does not own the DLC.)

In the Q&A they also explained why they don’t intend to introduce certain commonly requested blocks as small grids, It would encourage players to build very intricate large structures, creating lag. I interpreted it as saying that the distinction between small and large grid was part of their optimisation, hence this unfortunate limitation of artistic freedom. I myself wasn’t too concerned about that question, and don’t remember other details, sorry.

Another common question was why the max speed is so low. They explained that this value depends on the resolution of the Havoc Physics Engine’s collision detection. Faster moving objects (which is possible with mods) will start phasing through walls. That’s because the physics engine takes 30(?) samples per second to run efficiently, and for very fast objects, it often ends up checking collisions too late, that is, once right before and once right after the obstacle, and it concludes there was no obstacle, and phases through — e.g. your missile misses point-blank. (It’s common for physics engines that, yes, if you’d increase the sampling rate, physics would become more precise and faster objects would behave correctly, but complex scenes would slow down and become unplayable. Game devs always need to find the middle ground to keep it playable, which comes at a cost, such as speed or size limits.)

One dev confirmed that, yes, it is possible to set up multiplayer servers with no PCU block limits, as long as you have suitably performant hardware for it. But from personal experience they said it slows the sim speed over time. They chose the limit on the official server to be safer and to maintain a playable environment for everyone.

Also interesting: They said there was a time when they released an update per week to show that they were truly working on the early access product, and it succeeded in keeping players engaged. But developers can’t keep up such a fast pace, so for later larger improvements they switched back to a normal (less stressful) release cycle — which prompted some people to spread rumours/lies the work was abandoned… :-/

(I was curious about this topic because one hears about game developers that they struggle with burn-out due to long stretches of working overtime. Game dev is very time-sensitive because the target group is so fickle and close-fisted; sell your game now, or someone else jumps into that niche. Working overtime in game dev pays off less and is riskier than in, say, mainframe or enterprise software development, where customers eventually pay much more and are dedicated to using the software long-term.)

Oh, and one developer had set up a Vive VR headset with a small Space Engineer demo. Just a closed room with lights and some large grid blocks to explore, including a static robot-like figure “welding” a block in the centre. Walking was done via teleportation, that worked quite intuitively, only sometimes, I had to turn 180 degrees after arriving at the object to which I had teleported.
Apart from picking up some small items I didn’t see any interactions, such as welding or grinding or placing blocks, flying or driving, which is what you do most often in SE. Either I missed it or it was not part of the demo. (It’s very common that the difficult part of VR support is to make the most common interactions user-friendly, the 3D part itself is „easy“ in comparison. I never tried a Vive before, maybe it was first gen, but man I gotta say, I could see each pixel individually, what’s up with that? :-P Must be the screendoor effect that everyone is talking about? We don’t use screendoors here IRL and the metaphor is lost on me.)

Regarding the open day’s second topic, Medieval Engineers:

I’ve never played this game, it’s like Space Engineers but in a pre-technology setting. It seems to have some interesting mechanics, including (literally) mechanics. :-) Meaning there are interactive pulleys and wheeled carts and joints so you can build fortresses, draw bridges, catapults, and mechanical ploughs (yes, there is farming and weaving, too). Just as Space Engineers, it has highly developed destruction physics (in other words, a fortress tower can collapse spectacularly).

The money that Medieval Engineers made them seems to be running out, and the developers assigned to it now also take on work for space engineers (which still makes money). I didn’t really pay attention to this part, but there were fans present who got answers about the ME roadmap.

The only thing I recall was: Medieval Engineers will not get horses. :-) Yes, they agree, horses make sense in a medieval setting. But “adding a horse” means the devs need to add animations and behaviour for all combinations of interactions (one or more horses pulling carts or levers, or horses being pulled by various things, walking/running/riding horses with four legs on uneven surfaces, horses colliding with obstacles and being wounded, or killed or slaughtered…). A lot of work, and how much does it add to gameplay? They feel their horse will be compared to and measured by the AAA-level horses in Red Dead Redemption, and they don’t have enough employees to fight that fight. As the developer put it, only AAA studios can afford to pay employees to study the movement of blades of grass and write a thesis on that. (I jokingly suggested them to become the first to invent mechanical horses and become the best in that domain, but the dev countered that mechanical horses would be historically incorrect. Well. Yeah. But…) ;-D


Machine Learning Resources (3)

Posted by admin on March 30th, 2019 filed in Development, Linguistics
Comments Off on Machine Learning Resources (3)

Yay, new machine learning lectures! This time natural language processing from the Stanford University School of Engineering, 2019 get the schedule and notes here..

They cover NLP basics, artificial neural networks, Word2vec, and the latest on deep learning, such as NumPy and PyTorch (instead of Tensor Flow as previously).

The goal is, if your employer asks you, “Can you build us a named entity recogniser?” you can answer “Sure!”. :-)


SciHack – a Techy Minecraft ModPack

Posted by admin on December 1st, 2018 filed in Games, Hacks, Science Fiction
Comments Off on SciHack – a Techy Minecraft ModPack

Yay, I finally published my own Minecraft Modpack on the Twitch Launcher:
SciHack – for people who like to science the hack out of it.

I combined several mods that I had wanted to try out for while, themed around the topic of science. I take a bit of artistic freedom in pretending that alchemy (i.e. potions) is chemistry, that enchanted books on anvils are material engineering, and that Psi is applied physics, that the Mesa biome is practically Mars, and so on. :-)

In short: Imagine you are the scientist from “the Martian”, but there are, like, angry zombie colonists on the same planet…? I made sure to include greenhouses, laser guns, jetpacks, space ships, RFTools Dimensions, and calculators. Since we need something to test weapons on, I armed the mobs with rifles and sprinkled the world with robot dinosaurs, robot spiders, robot creepers, helicopters, aircraft carriers, and much more fun stuff to explore.

Thanks to the mod creators who make mod packs possible!

Update April 2019: I added the alpha release of a quest book, please post comments if something doesn’t work.


Minimalism and Getting Things Done

Posted by admin on October 14th, 2018 filed in Development, Games
Comments Off on Minimalism and Getting Things Done

If you have more ideas than you can implement, you are suffering from DaVinci Syndrome. It’s the opposite of Getting Things Done Syndrome.

I just jot down the ideas “for future reference”, which helps if I had the idea in the middle of the night and would rather go back to sleep. ;-) When I wake up, I find scribbled sheets of paper next to my bed with RPG stat balancing tables, illegibly labeled graphs, nonsensical character skill trees, halfbaked game mechanics, drawings of funny quests and background stories, all written in an arbitrary mix of English and my native language.

Despite the fact that I have a folder of ideas, I never finished developing a game.

Nothing against brainstorming to get a feeling for the big picture. But “having lots of ideas” is not a good skill by itself. If the ideas don’t fit together, nothing ever gets done. A good game dev skill is the ability to find the minimal set of ideas that make up one (simple) game. And expand from there. Trust me, the “simple game” will grow complicated by itself. Agile Developers call that completing the minimum viable product (MVP), I like that term.

“Adding ideas” is the death blow when starting a new project. It’s super easy to do, and it’ll pull you right down into a never-ending feature creep. When my todo lists start sounding like I’m breeding an egg-laying wool-milk-pig, I need to kick myself in the butt and stop that. I added an extra chapter to the bottom of my notes to collect “future/nice to have” ideas. This is where I cut and pasted everything that is not vital to the MVP. And then, I had a second and third round, and set aside some more. The goal is to trick my brain into thinking these todo items are not lost, we’ll just do them… “later”. :p

A good method is to join a 24h dev jam or a hackathon. It forces you to think in terms off “what do I have to show to the others after 24h?” Here are great examples of minimalist games that the developers can be proud of — and expand on.

  • A minimalistic low-fi No Man’s Sky :-) — Supports generating a star system with random planets, one player with one starship, landing on and lifting off from a planet, walking on the planet, and picking up an item on the planet.
  • Procedurally generated vehicles — Watch the random vehicle succeed or fail to travel across the bumpy landscape to the goal. Click “up” on good cars and “down” on bad cars to improve the overall outcome, and teach your session to produce good cars. (My best car design had three wheels, the third one on top, when it tipped over, it simply used the third wheel and kept going.)

My current attempt at getting things (i.e. 3D games) done involves a new cunning plan: I’ll make a text-only interactive console game first. It’ll procedurally generate the game world and print log files with which I can confirm it does what I want. And then I worry about the 3D rendering (the part where I always get stuck) later. Brilliant, eh? Now, how do I verify that the game data in the log has been generated correctly, hmmm… Let me just quickly write a 3D viewer for it! … … O_O Oh no! Not again!


Free Ad-Sponsored Antique Sci-Fi (LOL)

Posted by admin on November 4th, 2017 filed in Science Fiction
Comments Off on Free Ad-Sponsored Antique Sci-Fi (LOL)

These high-quality scans of Galaxy Magazine on Archive.org contain English classic science fiction stories from the fifties. The covers and several illustrations inside the magazine are also visible. If the stories are a bit old fashioned for your taste, the illustrations can still be inspiring. Or amusing. :D

Added bonus: Next to the stories, you get to see old-fashioned advertisements for mechanical computers named Geniac and get invited to join the “Rosicrucians, San Jose”. :-o


Machine Learning Resources (2)

Posted by admin on May 21st, 2017 filed in Development, Linguistics
Comments Off on Machine Learning Resources (2)

Here’s the Youtube channel with recordings of presentations from the Machine Learning Conference Prague 2017 and 2016.

Natural Language processing, machine translations, personal assistants and chatbots, recognizing malware or detecting hardware errors, predicting effects in biochemistry, financial forecasts, cheating at gambling, …

Some presenters have opposing or very similar ideas (and probably didn’t know of each other), quite interesting. :-)


Feynman and Sagan

Posted by admin on April 29th, 2017 filed in Space
Comments Off on Feynman and Sagan

Sometimes it’s nice to have a stream to watch while doing something boring that does not occupy one’s whole attention. Yes, I am lookig at you, ironing board.

Enjoy!


Learn From Sauerbraten

Posted by admin on February 12th, 2017 filed in Development, Games, Open Source
Comments Off on Learn From Sauerbraten

Sauerbraten.org is an Open-Source free multiplayer first-person shooter, and also a game engien and map editor. If you like games like Doom / Quake / Unreal Tournament / Marathon, Sauerbraten is very similar.

Note that it’s not a quick game creation kit, and you cannot take their multi-media files (they are not open source). You can look at the source code and learn from it, or you can mod the existing game and create a map and interactions.

If you ever wake up one morning and find yourself thinking, “Gee, I’m gonna write my own MMORPG!”, look at this project’s page. THIS is the minimum amount of features that you would have to create on your own.

Music, sounds, textures, models, animations, tools, networking and syncing, event handling, settings and preference handling, executable files for various operating systems, user-friendly error and exception handling, map loading and model import, physics, particles, HUD, GUI. And I probably forgot some items here. :D