Sunday, September 4, 2016

Don't make your first game your dream game

Of all the advice I've seen, read and received, "Don't make your first game your dream game" is probably the best advice.

Sunday, August 14, 2016

Sunday, 14 August 2016

Hello yes it is I, MrMisterSwift.

I've  been really busy these last few weeks. After many trials and tribulations I finally have a basic grasp of the indescribable eldritch horror that is Blender and its UI. I've found after much experimentation that the more I constrain myself in 3D modelling, the more productive I am and the less I get burnt out. That's my reasoning for making counterfeit LEGO and Space Engineers blocks:


Using these modular blocks means I don't worry about making sure every angle on my spaceship is correct to the fraction of a degree, and that my tolerances are half the width of a human hair. It also helps greatly with being consitent, not just in style but also in the scale of things. Without any further ado, creations:

They're all quite inconsitent as I struggled to figure out materials and whether to use Blender Internal or Cycles, as well as standardising on lighting, camera angles and backdrops.

Of course, it's no fun just making pretty static renders. So from one abomination to another, we end up struggling in the PvUI (Player vs User Interface) game that is Unity.

Getting meshes from Blender to Unity was painless. Getting the colours was... another story. I spent hours tweaking Cycles' Material Nodes in Blender, only for it all to be for nought since I have to redo everything in Unity. Alas. After that I had to map the camera to the player's ship, assign controls to let you move the player ship, add some crude and rudimentary cursors and labels, and last but not least, struggle to get a thruster exhaust visual.

For most Unity veterans (and probably intermediates) these are all 5 minute tasks but I'm super rusty with Unity so. The hardest part was the exhausts. I spent the better part of a week trying to get them right in Blender. Eventually I managed to get some Node Material spaghetti that works right half the time if I'm lucky. After getting things into Unity I had to start all over again. This time I just opted for a particle system like everyone else has been using for the last 10 years and used some cutesy star polygons as sprites. Doesn't look too bad.

So, in summary:
  • Importing meshes from Blender to Unity
  • UV wrapping and Baking in Blender for import into Unity
  • Low poly icospheres for celestials with some random vertex deformation
  • Starfield particle system 
  • Collision boundaries
  • Some small placeholder models in Blender
  • Cursor below player ship
  • Velocity and Facing vector cursors for player ship
  • Cursor with label below stations
  • Rudimentary lighting 
  • Ortho camera with mouse wheel zoom and follow player
  • Engine exhaust particle system
Still to do:
  • Add Moons for planet
  • Proper backdrop 
  • Foreground particle system for sense of motion
  • Asteroid entities for mining
  • Celestials rotate
  • Thruster exhausts reflect ship's momentum and applied forces
  • Wrangle the overall colour scheme into submission
Not too shabby for one weekend's tinkering around and getting back up to speed with Unity. And to think it all* started from this on Friday:

* Excluding the Blender work

Monday, July 11, 2016

Monday, 11 July 2016

Been thinking about the art style I'm going to use. I know voxels are sooo last season, but drawing something in MagicaVoxel takes a fraction of the time (and pain of using Blender), and seems perfectly fine for making placeholders. Or it would rather if I could get it to export the materials, textures, shaders and all those other fancy 3D magic with it instead of just the mesh.

Option B was to use Space Engineers. Unfortunately, besides the grey area of using their textures, there's been a bug for a few month preventing exporting of large ship grid models. Which is about 99% of the pre-existing models I wanted to export and dump in my game as placeholders. Oh well.

Would be nice if I could find something as simple as Magica, but with maybe a bit more functionality (I really miss being able to place sloped blocks) and with a more inclusive automated export function. Transparent holograms, particle based flickering lights and a cel-shaded renderer would be nice but that sounds like a lot of work...
So for now I have something looking like this:

Then there's the issue of scale. The station should probably be at least 2x as big for the ship to fit on the landing pads (on the right), but that's a small ship, what about large haulers? And that's the easy part. I intend to have several of these stations stretched out across each level. We get into the classic space scale problem. Either each station is an unidentifiable dot, a generic icon, or a grossly oversized caricature of itself.

And backgrounds. Backgrounds backgrounds. Currently I'm just using some lazy Delauney Triangulation I got from a generator (I know, I know, fad is over). I was considering putting a nice low poly triangulated planet with some rings in the background, something like Timothy Reynolds does, but I'm not sure if it would suit the theme too much. Using realistic NASA nebula imagery also doesn't fit at all. Oh well, anything is better than a solid fill I guess.


Todo list:
  • Read up on Component Based Engines, as well as Functional Reactive Programming
  • Split console UI and engine into two separate projects so I can build an .exe and .dll file separately, easing Unity integration to the DLL
  • Move ship trading (and probably station manufacturing) logic to the owner. Currently there is zero cooperation between entities of the same owner
  • Change the current state system from an enum variable to an action queue
  • Refactor messy code with events where it'll clean things up
  • Remove as much UI code from Solarsystem class as possible (got real lazy there)
  • Add parent fields to all the entity components, it seems inevitable
  • Refactor the Destination code for ships, its currently a casting nightmare
That's all I can remember for now, time to head off for work and squander all my productivity and creativity

Friday, July 8, 2016

Friday, 08 July 2016

Hello, it is me, Mr Mister Swift, and yes, I am still alive.

I've made practically zero posts in something like 10 months I think? Any how, I haven't been busy with much gamedev related. Like most creative whims and fancies it comes and goes in cycles and phases like the seasons.

For the last two or three weeks I've been feeling more motivated than usual, that productive and creative spark. This time I decided to work on the back end engine of the game I'll never make. Last time I was busy on the front end and got stuck on something as simple as keeping track of all the in game entities.

Now, I have a simple ecosystem of trading spaceship and space station factories, with the ships running up and down keeping a simple model of a production chain running. It's still incredibly rough around the corners and wobbly as hell, but it's fun just watching everything try and tick together like clockwork being held together with bubblegum.

Maybe one day I'll hook it up to the graphical interface I cobbled together in Unity:


Which still doesn't look 1/10th as good as the concept art I mocked up once upon a time:

Oh well, better tiny progress than no progress I guess!