The point of having enemy ships/fighters/bases in Space Time Shipyard is to provide an immersive game universe. I want to have an AI that will be challenging for the player. As I've never programmed AI for 3D space sims before I'm in a predicament. I've decided to put out another game first, Engage!, that will be a space sim which focuses on 2d ship combat. In that game the player commands a fleet but only controls their flagship directly. The player can give orders to other friendly ships but has no control over how friendly AI behaves. The enemy AI will attempt to blow the player's fleet out of the stars.
For Space Time Shipyard I don't want AI that just flies directly at the player. I want the AI to analyze the situation and respond accordingly. I want the player to experience enemy fighters and ships trying to flank the player's forces and do maneuvers in 3D space. That's a herculean effort without any prior experience in programming a flying AI. So I'm going to put out a 2D space real time tactical game first that will allow me to develop the AI for a 2D environment and then I can bring that over to this game for the 3D environment.
If I didn't put out another game for this I would need to do some sort of project where I could learn to do this and it would put Space Time Shipyard on hold anyway. I figure if I'm going to do this I might as well make another project I can make money from and turn around and put what I've learned and earned into Space Time Shipyard.
News on Development
Currently I'm still working to get balance between components. I'm creating the components used in game the same way players will; by typing text in a file the game reads on launch. This game is super easy to mod. I've already programmed the code which takes in all the info from text files and stores it correctly in the game's database.
I've decided I don't want players to be able to control everything about every component. For example, There are three main resources in this game; Metal, Crystal, and Fuel/Hydrocarbon.
An example for an entry in the text file for an engine component is as follows: "3,0,AXL 100, 5, 10, 10"
3 is the component type, engines.
0 means this is the first engine in the engine component list. '3,1' would mean it is the second engine shown in the engine component list.
AXL 100 is the name of the engine
5 is how much space the engine takes up
10 is the power required by the fighter or ship to operate the engine
and the second 10 is the amount of metal resources needed to construct the engine.
Based on the power required and the metal required for this engine the game will do calculations and determine the amount of crystal and fuel needed to construct the engine and show that to the user in the UI when looking at a list of engine components. The game will also do calculations and determine the thrust of the engine based on the information provided by the user and the calculations performed to fill out the data. So the user can enter most of the information about components but not all. the game will do calculations and fill out the rest of the data for each component. This example is specific to how engine components are created in the game. Of course the name doesn't affect any other data and allows the player to identify the component by name in the game. Once I get this system flushed out i will make it so the txt file expects a named png file at the end of each line which it will load into the game and this png image will be the image of the component shown in the game.
Currently I'm typing in components and testing the calculations ran when they are loaded into the game and doing more tests to make sure there is balance and that everything works as desired.
That's my update for work on Space Time Shipyard. Thanks for taking the time to read :)
I've finished creating the code in C#.net that will handle modifying all the data in the game. This space sim is going to be super easy for kids and adults to modify to their liking. No mod managers will be needed. For example players will be able to create their own ship components or edit existing ones by adding or changing lines of text in game files. The game will automatically create a backup of the original data files on install so it will be a simple matter to revert back to vanilla game play.
I previously posted in an announcement the game data files will be persistent once a game is started. Meaning once a game is started the data for that instance of the game can't be edited. I've done away with some of that. As players will be able to add their own components with various properties I decided I don't want to store all of them in RAM all the time while the game is running. The npc/AI entities in the game will have access to the same data. So if a player wants to edit the data mid game/cheat then the AI WILL know about it and use the modified components as well. The AI will use a scoring method to choose what components to add to ships and bases it creates. So when the AI sees a component modified by the player that is a weapon which does a lot of damage but costs pennies the AI will destroy the player with their own cheat.
I want to, in about a month, get these changes and a playable space sim uploaded to STEAM. The current build on STEAM is just old modding tools.
I've also temporarily removed the 3d modeler from the game for creating custom ship hulls. So when the next update lands on STEAM players will not be able to design their own ship hulls. The game will come with different hulls for different sizes to choose from and players will be able to add components. I've been having issues with getting the 3d files and textures created by the game to reintegrate into the game properly during runtime. I've been spending more time on trying to fix that than on making the space sim so I've ripped that part out and will get back to it after I get a playable game on STEAM.
Reworking Project
Yes, I'm still working on this game. Today I decided to rework a lot of the code. I've learned a lot over the past several months and this project can be improved and made so much better with a major refactoring of the code; that and I updated to Unity 2021 recently which broke a lot of things.
Keymapping - Custom Ship Controls In Game
Players will be able to configure their own ship controls in Space Time Shipyard using the keyboard, mouse, and joystick.
Getting Back To Work
I did look at moving this project to the Unreal Engine. It's impressive however, that engine has zero API documentation! From looking at the Unreal Engine community the support for that engine is horrible and the development team hasn't cared enough to even come out with basic documentation for their engine's API.
I was able to locate a backup of Space Time Shipyard and am moving forward with that. I'm using an older version of Unity.
Upon learning the new acquisition of Unity, ironSource, I'm no longer interested in using the latest version of the Unity engine with their new malware buddy included.
The Unity game engine is great except for when it isn't.
I've been using the Unity game engine to create Space Time Shipyard. I've also created other projects over the years using Unity. I started using Unity in general just before Unity 5 came out. Space Time Shipyard was started with Unity version 5. I Upgraded to Unity 2018 with no issues. Then after a while I upgraded to Unity 2020 and it still worked just fine. Unity is a great engine for developing professional applications and games except for when it isn't.
For this title I created a lot of functionality from scratch. I created code that does things Unity doesn't do. Since those classes are separate from the Unity API they've always worked. I also extended the Unity API on my end. I decided to update to the latest stable Unity engine because It has been known to improve frame rates across the board. Since I'm creating a space sim with the idea of having lots of unknown player content on the screen at once I'm all for more fps. However, upgrading to a newer version of Unity, even if it's been around for several months, is a gamble.
After I updated to a newer engine version this project no longer worked, as intended. There are no compile errors but for some reason the newer better version of Unity doesn't play nice with my code. The classes and code were unchanged by the update but when they are supposed to run they don't. My custom classes use C# syntax that has been around for years. Interestingly the changes I made to the Unity API still work with the newer engine version.
So I then tried to use the previous Unity engine I've been using. That messed it up even more, trying to downgrade the project. It's officially broken now. I would need to find a new way of coding this game to move forward using the Unity engine. This is so frustrating. Math is math. Because Unity uses C# as its scripting language it stands to reason C# should be working with Unity just fine no matter what version; and custom code shouldn't just stop working because a developer upgrades to a newer engine version. I've always been suspicious as to why Unity constantly comes out with newer versions of their engine faster than any other company hosting a game engine.
I've also noticed over the years of using Unity, (I started in 2014), the earlier versions could be used to create more complex applications and games while the newer versions of Unity make it difficult to make complex games but easier to make prettier games.
My Unity yearly subscription is up later this month and I'm not renewing it. I'm looking for a different avenue to make this title with. This game is not dead it's just going to take longer.
A fellow developer said he uses Unity to make simple arcade games and mobile games but uses Unreal Engine to make games he's serious about.
News on Development June 28, 2022
Yes Space Time Shipyard is still in development. I am not happy with the current state of the game and that's why I haven't released a game update on STEAM with the latest build I'm working on.
One major issue I'm working with currently is the cloaking system I implemented in the game. Ideally it's supposed to get the textures and materials of the ship model through code and change them. This would mean every ship equipped with a cloaking device when cloaked would have its own unique cloaking animation consistent with its custom design and color. As players can design their own ship hulls in game, or import ship models they've created in other programs/3d modeling software into the game, I don't want to limit or put controls on the amount of textures and/or materials which can be used. However, in some cases when the ships uncloak and go back to its normal visual state the texture and materials are back to what they were previously but they are mapped to different parts of the ship/3d model. It's the equivalent of swapping the textures from the face of a 3d person model with the textures of the pants. It shouldn't be doing that but it does sometimes. That's one of the issues I'm having. I may have to redo the entire cloaking system.
There are other issues I'm working on as well. I apologize for taking so long to get this title out. But it will be released.
April 2022 News
Yes, I am still working on this title :) These past few weeks I came up with a component system that will easily allow players to add their own. The goal was to make it totally modifiable by players while also not being a RAM hog because of that. The component system is done as is the code for adding components to a design in game. I've also come up with a rough draft for the UI which makes searching through all the available components and installing them in specific places of the ship work. I wanted to have the next major update for this game out this month but it will take a few more months.
About Armor: I've decided there will be two types of armor. Of course ships/fighters/anything you want to build to run around in space can have shields also. One armor type is meant for defense against energy weapon damage and the other type is meant for kinetic attacks. Having a ship with armor meant to stop ballistics/missiles face off against energy weapons is a bad idea. As is having a ship with armor meant to stop energy weapons going up against ballistics. Can you have both types of armor on the same ship/unit? Nope. You can only outfit ships/units with one armor type but you can always make a new design of the ship/unit and give it the other armor type. Armor taking damage from a weapon it was not designed to protect against will result in the armor taking more damage than the weapon actually inflicts, only on the armor not on ship components or the hull.
And before any of you think you'll easily fix that by just modding in another armor type armor is not considered a component in the game logic. It's not installed on the same screen where the components are installed. Yes I am mean and nasty. And yes you could mod in an engine component that will cost pennies, use up hardly any material resources, and go very very fast. But whatever you mod in the AI has access to also. Remember that. The AI will ignore the comportment description and look at the values/numbers of the component and what category those numbers affect. And after you run the program/game the code will read in any modded files before you have the option to start a new game. Changing those same files after saving the game and then loading it back up will have no effect. Each save game will carry the original values loaded in when you started that game. If you start a new game that different start will have the adjusted modded values.
Still got a lot of coding to do :)
Roadmap
So far Space Time Shipyard, on STEAM, includes two modding tools used to create game content BUT not the game. The documentation for those tools is available to view on the game's page by clicking on the quick reference documentation link. Other content has been added to the build I'm working on but the STEAM version hasn't been updated, yet. The next update on STEAM will include space sim gameplay. I also plan to ask STEAM to increase the price at that time.
I am actively developing this game and want to release actual game content within the next 3-6 months. That's my goal. It will still be in early access for some time after that release. Space Time Shipyard was originally released in 2017 in early access and then some horrible stuff happened in my personal life which kept me from working on it consistently for a while. That episode of my life is thankfully behind me and I've been moving forward for the last seven months.
What has been done that's not included in the STEAM version?
This morning I finished coding nebulas for the game. There are four effects nebula can have. They can block sensors, drain shields, damage hulls, and harm crew. Nebula won't be limited to just one effect though. They can have a varying degree of all four effects or only a few out of the four. The player will be able to tell what effects each nebula has based on its color.
I can now state there will be cloaking devices in the game; and yes the visuals for that will work with custom hull designs. I have more work to do to get the effects for cloaking and decloaking game ready. Space Time Shipyard will also allow the player to import 3d models in .obj format created with commercial modelers. However, low poly models are best.
What's planned?
This will be a game of capital ships, bases, fighters, satellites, etc. There will be commodities/products in the game to make, trade, and fight for. These will be moddable also. The Cartographer currently allows the player to create their own star systems with resources on planets and asteroids. These same resources will be used in building commodities in the game. The game also currently allows the player to create a star system from a simple html file so the player does not have to use the Cartographer to create star systems for the game. There is also a limit on the amount of resources a player can set on planets and asteroids. If the number is above this limit the game will automatically adjust it when importing the star system data.
I also want to make the ship components mod friendly and allow the player the ability to add their own.
In summary I'm making the game logic and the tools I will use to make the game. Those same tools will be available for the player to create an entirely different space sim, if they so choose. I'm not going to crap out and just make the tools and put together a bland space sim and then say 'make your own universe with the tools I created'. That would be lame. It will be low poly. It's not going to look like a AAA title. However, I want the game to be fun and repayable. There will be a unique sci-fi story with distinct races with their own backgrounds. Even though there will be a story the player won't be locked into a linear campaign. The main purpose of Space Time Shipyard is to be a space sim sandbox.
When Space Time Shipyard reaches version 1.0 what will it look like?
Think X-Wing (the old dos game) + Star Trek Bridge Commander (old windows game) + business manager.
Will it be multiplayer?
Version 1.0 will not be multiplayer. It will be single player only.
Will multiplayer be added later?
Don't count on it. It is possible, HOWEVER, if I were to make Space Time Shipyard multiplayer I would most likely do that through DLC. The way I want to make this game will involve so many different moving parts. Mainly because of getting player modded content to play nice with the game logic and all the other player modded content throughout the game.