iFactor 0.4.5 Released

This release is geared toward fixing an issue where the "Wow, just wow" achievement could not be unlocked if a multiplayer game had previously been won. 

This version is also built with the latest version of Unity and the Photon multiplayer framework. Unfortunately this means that previous versions (0.4.4 and before) do not play with 0.4.5 and above. 

0.4.5 is already out on Steam and online. The Mac App Store, iOS, Android, and Windows App Store versions are being processed by their respective stores now.

iFactor is 51% off on Steam right now, as part of the summer sale!

Path-Finding in 3D

The first step is for the user to give a ship a move command. In this example, I told the ship to move to two waypoints. The list of waypoints are stored and a waypoint is removed when the ship arrives at each one. 

However, there are some objects in the ship's way: Obstruction 1 and Obstruction 2. 

To calculate the path, the list of input waypoints (which is really treated like a queue) are put onto a stack of proto-waypoints. (see a visualization below)

The green line is the path from the ship's current location through the waypoints. 

The green line is the path from the ship's current location through the waypoints. 

Then the algorithm enters into a loop. The first step of the loop is to test the first proto-waypoint on the stack. A sphere is cast from the ship toward the proto-waypoint, using a radius that is approximately that of the ship. In this case the sphere cast detects Obstruction 1. A point is then calculated as an intermediate waypoint to avoid the obstacle using this formula: 

The new waypoint is pushed onto the stack of proto-waypoints and the loop repeats. 

On the next iteration of the loop, the route between the ship and the first proto-waypoint is tested, just like before, except now the first proto-waypoint is the new avoidance waypoint. (see the image below)

The green line represents the currently calculated path. The red line is the direct path between the ship and the first user-input waypoint. The blue line is showing the obstacle that was detected when testing the proto-waypoint. The black line is the avoidance vector, between the avoidance waypoint and the spherecast collision point. 

The green line represents the currently calculated path. The red line is the direct path between the ship and the first user-input waypoint. The blue line is showing the obstacle that was detected when testing the proto-waypoint. The black line is the avoidance vector, between the avoidance waypoint and the spherecast collision point. 

Since there are no obstacles between the ship and the proto-waypoint, the proto-waypoint is popped off the stack and added to the real waypoint list. 

Now the loop switches perspectives from the ship to the new real waypoint, so route tests originate from there. 

The loop begins another iteration, testing the route from the avoidance waypoint to the first proto-waypoint on the stack, which is the first user-input waypoint. Another avoidance waypoint is calculated and put onto the stack. 

The loop iterates again and sees no obstacles on the route to the first proto-waypoint on the stack, popping it from the stack, adding it to the real waypoint list, and shifting perspective again. 

Now clear of the first obstacle, the loop sees no obstacles en route to the first proto-waypoint on the stack, which is the first user-input waypoint. The proto-waypoint is popped, added, and the perspective is shifted. 

The loop continues this way until there are no more proto-waypoints on the stack, or the iteration limit is reached. 

The final path. 

The final path. 

The iteration limiter ensures that very complicated paths do not create lag in the game by not calculating paths that will be traversed far in the future. 

The path is calculated when the move command is given, then every few seconds after that, in case new obstacles get in the way. Below is a video of the path being updated every 0.5 seconds. 

It is important to note that the green line is not the exact path of the ship. The ship's movement system is responsible for producing thrust in the appropriate direction to get the ship to the next waypoint. This system will account for unexpected collisions/forces such as incoming weapons fire by adjusting the ship's thrust. 

More Virtual Reality

A new version of the VR build has been released. It is using a new version of Unity and includes tons of bug fixes so it now runs very smoothly. 

Also included are some new ships to command, including a cruiser and a mobile space station. 

Next, I want to introduce a basic resource collection mechanic!

Try out the new build here. (requires the HTC Vive and controllers)

Virtual Reality

Today I released my first VR version of Fragmented Galaxy. (download it here) Right now it requires the motion controls that only the HTC Vive has. The controls may be a bit unconventional because of the new input devices so here is a small primer: 

Navigation

You can grab any location in the world and translate it. Do this by holding down the grip button on any controller and moving that controller around. 

You can also scale the world (zoom in/out) in order to move around quickly, view things more strategically, or see more details. Do this by holding the grip buttons on both the controllers and moving the controllers. 

This takes some practice and really requires that you experience it in VR to understand. Think of it like Ender moving his veiw around in the Ender's Game movie

Ship Control

To bring up the selection reticle, press the trigger of the green controller slightly (the controllers are color-coded in-game). Move the selection reticle over a ship and press the trigger fully to select a ship. Clicking the trigger over other ships will add those ships to your selection. Click and hold the trigger until you feel a pulse to only select the ships in the reticle. 

To start plotting a course for your ships, lightly press the trigger on the red controller. A line will be drawn from the ships to the red controller. (other reference lines will also be shown) Click the trigger to set a waypoint. If you just want the ships to move to that location, let go of the trigger. Otherwise, move the red controller and click the trigger again to add more waypoints. Let go of the trigger to tell the ships to go to all the waypoints. 

Navigation using the controller grip buttons works while plotting a course, just keep the trigger lightly pressed while navigating. 

Other commands can be found on the green controller's touch pad. Right now the only useful one is the stop command which cancels all selected ships' commands. To show the menu, lightly touch the touch pad. Move your thumb to highlight an option and press on the touchpad to select that menu item. 

 

There are also other controls but I will let you discover them on your own. This VR version isn't quite up-to-date with version 1.4.0 but it is a solid start. 


Also, I will be at RTX again this year. See you in Austin, TX in a few short hours! 

1.4.0 Released

I am pleased to announce the release of Fragmented Galaxy version 1.4.0. To see all changes, go to the Version History. Download at the Fragmented Galaxy page. 

I added a floating origin system to display distant objects and a new ship model. 

This version also includes an upgrade to the newest version of Unity (5.2) and the assets I use with Unity. 

There are a few known issues that I couldn't fix before I released but they aren't game breaking: 

  • Lines with one point far off-camera aren't always drawn correctly. 
  • While focused on a moving object, far and distant objects appear to 'jitter' in the sky. 
  • Performance is bad when the camera moves. Necessary until a better floating-origin system is devised. 

The State of the Build

So, no new build this week. There are two issues I want to resolve before letting you guys play with it, both pertaining to integrating the floating-origin system. 

The floating origin system allows me to render very large scenes, the size of a planetary system. The camera sits in the middle and the world moves around the camera. The objects in the world are split into three categories: near, far, and distant. The near-world is normal, with physics enabled and objects of a regular size. The near-world is a cube only only 20km on each edge due to 32-bit floating-point number accuracy issues. The far-world is also 20km on each edge but all the objects are 10,000 times smaller, move 10,000 times more slowly when the camera moves, and is rendered before the near-world to give the illusion that it is farther away. These objects are visible but do not interact with the physics of the world. The same goes for the distant-world but by another factor of 10,000. 

The first issue is that all of the line drawing is done in world space, not in floating origin space. The same goes for move-to-position commands given to ships. This needs to be tied to the near-world otherwise all lines and commands will appear to be relative to the camera, moving around when the view moves. I don't think this will be terribly difficult to fix. 

The second issue is that of the Unity physics system. As it tuns out, PhysX doesn't like having all of the physics bodies in a scene moved every frame because then it has to recalculate everything every frame. That is collisions, velocity, everything. This causes a large performance hit but more than that, the ships jitter all over the place because their velocities are constantly being erased. To solve this I can update the position of the physics bodies less frequently or during the physics update cycle. The first solution would allow the camera to move a certain distance then snap it back to the origin. Every time a snap happens, PhysX will freak out but at least it will be less often. Updating during the physics cycle is problematic because physics changes are made visible before the camera movement code makes any movement so the world would move one frame after the command to do so was given, thus incurring input lag. 

Neither option is particularly appealing. I'm still experimenting with ways to make the side effects less noticeable and when I have something more playable I'll release it to you fine folks! 

Thanks! 

Fragmented Galaxy Development Hiatus

Unfortunately, due to constraints put on my by my employer, I can no longer contribute to Fragmented Galaxy while I am employed by my employer. 

I will still post on this blog from time to time with my musings on various subjects but there will be no further versions of Fragmented Galaxy until I can work something out with my employer. 

I am still dedicated to making game come true in the future so keep watching this place for when I can continue development. 

Thanks for your support! 

System Requirements

The system requirements for Fragmented Galaxy, as it exists today, have been posted to the Fragmented Galaxy page. Here they are: 

  • OS: Windows 7+, Mac OS X 10.6+, Ubuntu 10.10+
  • Disk: 150 MB
  • Graphics: DirectX 11 (PC), OpenGL 3 (Mac/Linux)
  • CPU: SSE2+
  • RAM: 2GB

These are the most basic requirements to get the game to launch. I can't provide any recommended specifications but any system from the last few years should suffice, with various levels of play-ability. 

1.3.0 Released

I am pleased to announce the release of Fragmented Galaxy version 1.3.0. To see all changes go to the Version History. Download at the Fragmented Galaxy page. 

The largest change is that ships may now be organized into fleets using the UI on the right side of the screen. 

Existing users: turn down your bloom setting! I changed the color space that is used when rendering so all the lights are re-calibrated. This means that the old default value for bloom is excessive. 

Bitbucket Migration

Well, hello again. 

I just finished moving my code and assets to Bitbucket, an excellent project tracker and remote repository from Atlassian. I am particularly fond of Atlassian products and was previously using Stash to track my changes. Unfortunately I was using Dropbox for my cloud backups and my available size is about to shrink there. I was already eyeing Bitbucket due to the integrated issue tracker and wiki but the Dropbox issue forced me. 

Fear not that I have been neglecting the next release of Fragmented Galaxy. Fleets are well on their way! I already have much of the organizational functionality I wanted for the first iteration so I might just push out a build before coordinated movement makes it in. I will be moving the To Do page to the new issue tracker on Bitbucket soon, probably at the next public build. 

That segue's nicely into my next topic. I made the issue tracker public so anyone can report issues that I don't find in my testing. Check it out here. Report any issues you find. It will help me create a better game over time. 

Fleets

I home you are all having fun with the latest build! 

Fleets are coming along nicely. On my internal build fleet creation and generating a list of the fleets in existence is working very nicely. I am going to add the ability to rename and disband fleets this week. Then work can start on coordinating the fleet's movements with flight control. 

This first version of flight control will inform the ships where to place themselves in relation to a reference point or object. It will also inform the ships of the maximum acceleration they are allowed to apply so the fleet doesn't spread out due to differences in propulsion. 

Promises, Schedules

Hello again.

I just finished a bit of polish on the latest internal build of Fragmented Galaxy and I want to get it out to everyone as soon as possible. However, not all the features I had hoped for are included. I want rapid releases but I think I bit off more than I could chew with my latest To-Do list. To review, I had 3 major items that I wanted to include: 

  • Overhaul the mouse-UI interaction system. 
  • Add more detail to the cargo ship texture. 
  • Add fleet-coordinated movement. 

That is making for too long between releases. So, for that reason, I am postponing fleets until a future version and WILL have a new build available for download this weekend. It won't look like much but believe me when I say a bunch has changed under the hood. 

Happy Holidays!

Like most people in the US, I had a day off today for Christmas. How did I use it? Fragmented Galaxy, of course! 

Today I finished upgrading to the newest version of Unity, the new individual-settings system, and ripped out the old UI detection system. I am going to start on the new UI detection system shortly but I thought I'd take break and wish you all happy holidays. 

A new release might be arriving this weekend, so stay posted. 

Thanks all! 

Art That Inspires Fragmented Galaxy

While you wait for the next build of Fragmented Galaxy, I thought I would share some of the art that inspires me to create. 

Still

A wonderful place to see myriad visions of the future, near and far, are at concept ships. Sometimes these perspectives are wacky and other-worldly but that just goes to show that science fiction really has no bounds. I hope to explore a bit myself with Fragmented Galaxy. 

BURYAT's concept art portrays sleek yet simple ships. To me they look like the ships that a version of humanity that has mastered space-flight might create. Visit his blog for more than is displayed on the linked page. 

Simon Stålenhag has a number of excellent series depicting the world if technology had developed differently into the 70's and 80's. His work includes technology with a simple, if weathered look. I highly recommend looking at his galleries! 

Music

I usually listen to music while I develop. My Programming playlist on Spotify include all the jams that power me through my late night sessions writing code or tweaking textures. I generally like epic movie and game soundtracks but the odd single does sneak in from time to time. 

Video

Recently I watched a short film that has been making its rounds on "the social medias" and I though I would share it here as well. Wanderers is a short film by Erik Wernquist that tugs at your heartstrings and makes you think about where humanity's place in the stars is. 

A simple and luxurious version of humanity in space is Star Trek. (movies and TV series) There are plenty of space battles and politics but the Federation is really what makes it one of my inspirations. It is jockeying for position with the major powers around it and managing its expanse rather successfully. It is a masterpiece of 4X game mid-game action. The shows' views on technology make you think about what is possible for us to achieve. 

Babylon 5 (sorry for the terrible link, there isn't an official website for the show) depicted relations between various nations (read: alien species) with deals being struck, assassinations, and wars. The intrigue is exhilarating! One refreshing novelty is that the ships were shown with more realistic movements than other shows set in space. 

Games

The top of my games list is Homeworld 2. The control scheme was unique to the type of game-play it presented and the story was intriguing. I only wish I had more insight into the technology or some back-story because it seems like that universe would led itself to more fleshing-out. A re-mastered edition is in development now. 

My favorite view of the rough-and tumble frontier and intricate politics comes from the first Mass Effect, mostly before the Reapers are introduced. (sorry Reapers) I loved the way the council bickered and the relationships between the major and minor powers. The story was so deep and there was so much to discover. The rich history of the galaxy and especially humanity's first steps into the the galactic social order, were so immersing that I lost myself in the game for many hours reading back-story. 

My favorite turn-based strategy game series is Civilization. Seeing the empire you craft with your own hands over the millennia is so satisfying that I often go back for more. Since every game is different it has immense replayability and it embodies many of the properties I want the larger game-play for Fragmented Galaxy. 

Sim City 4 lets you manage resources in a similar manner to Civilization in a real-time environment and on a smaller scale. 

Kerbal Space Program is the last entry on my giant list. I play a bunch of the sandbox mode. The ability to launch fairly realistic rockets and pilot spacecraft in a world where orbital dynamics exist is amazing. Words can't explain it, just go and try it for yourself! 

Where Did the Weekend Go?

There will be no new release this week as I have to be in at work on Sunday. (oh, wait, is that today?)

I can report that many of the smaller things I wanted to get gone for the next release are done but fixing clicking on UI elements through each-other is going to take more effort than expected. In fact, I'm going to re-write the entire system so it is more maintainable and easier to use. As usual, you can see my plans on the To-Do page. 

New Ship, New Release!

Get over to the Fragmented Galaxy page and download the latest release! 

This is built from Unity 5 which includes many improvements including physics performance increases and physically based rendering. Also, a new movement system has been added to make ships move more smartly. Visit the Version History for a full list of changes. See the To-Do page for what is coming in the future. 

Screenshots and a video are below if you can't download right now.