(and yes, I am still alive)
I apologize for not putting up even a small update but I have been very busy with work for the last year and a half. I am still working on my games whenever I have the time.
As of yesterday I have submitted requests to make iFactor free on all platforms. This is for two reasons:
iFactor sold very few copies and many of those were refunded after people quickly got all the achievements.
Charging for iFactor was meant to recoup the cost of publishing to the various digital storefronts. However, it is now clear that iFactor will never sell enough to break even. At this point charging for iFactor is only pricing people out of playing the game. It is my hope that this change will enable more people to play the game.
To everyone who did purchase the game: thank you so much. Your support means a lot to me. I don’t have anything special with which to reward you for buying the game before it was free, but I am investigating options.
Progress on Fragmented Galaxy is continuing as usual. (meaning slowly) I am working on a re-write which uses the latest ECS features in Unity to ensure that the game stays performant at large scales.
Another item I’d like to mention is that I am almost done with my next mini-game called Trends. This will be free for all platforms from the beginning. For now I am planning to release on Steam for Mac, Windows, and Linux only - but iOS and Android builds are not impossible.
Also, after Trends comes out I’d like to release an update for iFactor that uses the latest version of Unity.
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!
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.
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)
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 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.
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)
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:
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.
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!
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.
There will almost certainly be a new build this weekend. I want to do some extra testing but both my blockers are now fixed.
More updates and a full change-log coming this weekend.
I'm very excited for you guys to see the progress I have made!
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!
Now that I can update you guys, here are a couple screenshots of what I have been working on!
There are a few physics issues I have to work out before releasing a new build but the bugs can be fixed over the weekend.
My employer recently rolled out a new policy regarding employee development of games outside of work.
I am going to have some juicy screenshots for you later tonight, and maybe even a new build this weekend!
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!
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.
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.
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.
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.
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.
The system for changing graphical settings individually is now in place. The graphics are work-in-progress (read: Unity default) but I wanted to show an update this weekend due to the lack of a new build.
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.
While you wait for the next build of Fragmented Galaxy, I thought I would share some of the art that inspires me to create.
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!
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.
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.
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!