I thought I'd update you guys on the progress with the game. I've finished the technology overhaul. All the basics are in place now. I also reworked the research screen, so it's functional again.
I also tested racial technologies, and they worked flawlessly.
I'm going to work on ship design and fleet list screens next, then I will focus on space combat.
Tuesday, August 30, 2011
Thursday, August 25, 2011
New Race, System Ships, and Progress!
A customer has ordered a race for the game. They're the "Space (Pirate) Hamsters" or "Space Hamsters" officially. They're pirates, salvagers, brutes, and all that. They excel in ground combat and making babies, but they're not too smart. Their ships are cobbled together from old or salvaged parts. This is what they look like (Kudos to the artist for awesome work on it):
Please welcome the Space Hamsters to the galaxy of Beyond Beyaan!
Now onto System Ships. They were simpler to implement than I'd thought they would be, and I had to tweak the UI around a bit to make it all work logically. Each star system will store a list of system fleets. If you build a system ship, it will be added to existing fleet that's under your empire. Notice the term "Patrolling" in the screenshot? This indicate that this fleet is system fleet, and can't go anywhere. Also the ship sliders for amount of ships to send are greyed out so you can't send it anywhere. They don't have the engines for interstellar travel. Now for the screenshot! (There will be a new fleet icon for system ships so you can easily see it compared to normal fleet and transport fleet)
The last thing that I'll mention is that the basics of technology is now implemented. The code for loading technologies are re-done, as well as code that updates the research progress. The new system now allows you to research each technology once, so I'll have to create a completely new UI system to work with that. One other thing that I've implemented is racial technologies. Each race now have its own technologies.xml file, and they are loaded as well as the generic technologies that all races will have. However, I don't really like the idea of racial technologies, so the vanilla version probably won't have any. But it's there for modding purposes. There's a few more items that i need to add before I can re-do the ship design screen, but this was a major milestone that I've managed to accomplish :)
As usual, comments are welcome!
Please welcome the Space Hamsters to the galaxy of Beyond Beyaan!
Now onto System Ships. They were simpler to implement than I'd thought they would be, and I had to tweak the UI around a bit to make it all work logically. Each star system will store a list of system fleets. If you build a system ship, it will be added to existing fleet that's under your empire. Notice the term "Patrolling" in the screenshot? This indicate that this fleet is system fleet, and can't go anywhere. Also the ship sliders for amount of ships to send are greyed out so you can't send it anywhere. They don't have the engines for interstellar travel. Now for the screenshot! (There will be a new fleet icon for system ships so you can easily see it compared to normal fleet and transport fleet)
The last thing that I'll mention is that the basics of technology is now implemented. The code for loading technologies are re-done, as well as code that updates the research progress. The new system now allows you to research each technology once, so I'll have to create a completely new UI system to work with that. One other thing that I've implemented is racial technologies. Each race now have its own technologies.xml file, and they are loaded as well as the generic technologies that all races will have. However, I don't really like the idea of racial technologies, so the vanilla version probably won't have any. But it's there for modding purposes. There's a few more items that i need to add before I can re-do the ship design screen, but this was a major milestone that I've managed to accomplish :)
As usual, comments are welcome!
Saturday, August 20, 2011
Technology System, System Ships, and Misc
Spencer and I had a good discussion about technologies and how they will be implemented in the game. My goal is to make it moddable, so we discussed methods of accomplishing that. I believe that we've come up with a good system.
All technologies will be using a generic "TechnologyItem" class. It can store a script, a pixel shader (or two if it's a weapon), and data for the technology. There will be several main functions that will be called from this class, namely:
OnFire()
Travel()
OnHit()
OnMove()
OnFire is called when a ship fires its weapon. It will go through different technologies (Weapon itself, Mount, then Computer) and have modifications applied to it through scripts. While traveling in space, it will call "Travel()" that updates the weapon (maybe modify its trajectory if it's a missile for example). When it hits a ship, it will go through that ship's list of technology scripts, and have the final modified damage applied to the ship's armor. This includes Engine, because there may be an item that causes weapons to miss 1/3 of the time for example.
This will allow the game to be modded heavily. For example, if you add a script that generates new particles that split off from the main bullet while traveling and can hit other ships, you can add it under "travel" function of the technology script.
Another thing that we also discussed and decided is that each technology will be researched once. But you can have modifications added to the main technology (for example, extended range or minizaturation) to improve it. Each technology have a specific level that it will appear in. There will be "brackets" that when you've researched some stuff from it, you unlock the next "bracket" of technologies in that field.
I've removed the old technology system, and implemented half of what I planned so far. I think this should be done within a week or so. After this is done, then we can work on space combat.
Also, one more thing that we discussed is space monsters and neutral ships. We figured that in order to have them act in certain ways that we want (they don't travel to other systems, only stay in their systems) we'll have to add "System Ship"
functionality. The System Ships are those that lack interstellar engines, so they can't travel to other systems. This opens up an interesting gameplay feature. You can design system ships and build them for defending your systems. They will have more room for weapons compared to their star ship counterparts, due to lack of interstellar engines.
Now, back to programming! :D
All technologies will be using a generic "TechnologyItem" class. It can store a script, a pixel shader (or two if it's a weapon), and data for the technology. There will be several main functions that will be called from this class, namely:
OnFire()
Travel()
OnHit()
OnMove()
OnFire is called when a ship fires its weapon. It will go through different technologies (Weapon itself, Mount, then Computer) and have modifications applied to it through scripts. While traveling in space, it will call "Travel()" that updates the weapon (maybe modify its trajectory if it's a missile for example). When it hits a ship, it will go through that ship's list of technology scripts, and have the final modified damage applied to the ship's armor. This includes Engine, because there may be an item that causes weapons to miss 1/3 of the time for example.
This will allow the game to be modded heavily. For example, if you add a script that generates new particles that split off from the main bullet while traveling and can hit other ships, you can add it under "travel" function of the technology script.
Another thing that we also discussed and decided is that each technology will be researched once. But you can have modifications added to the main technology (for example, extended range or minizaturation) to improve it. Each technology have a specific level that it will appear in. There will be "brackets" that when you've researched some stuff from it, you unlock the next "bracket" of technologies in that field.
I've removed the old technology system, and implemented half of what I planned so far. I think this should be done within a week or so. After this is done, then we can work on space combat.
Also, one more thing that we discussed is space monsters and neutral ships. We figured that in order to have them act in certain ways that we want (they don't travel to other systems, only stay in their systems) we'll have to add "System Ship"
functionality. The System Ships are those that lack interstellar engines, so they can't travel to other systems. This opens up an interesting gameplay feature. You can design system ships and build them for defending your systems. They will have more room for weapons compared to their star ship counterparts, due to lack of interstellar engines.
Now, back to programming! :D
Monday, August 15, 2011
Galaxy Scripts implemented!
Spencer and I spent a lot of time working on this the past weekend, and I'm proud to say that it's successful! No more hard-coded galaxy generation code, it now runs off of scripts! So players can create their own galaxy shapes and plug it in the game if they so desire, or download other people's scripts.
How it works is that there are two required functions in the script. "GetVariables" and "Generate". GetVariables grabs a list of variables that the script will need for the game, along with which UI element to use (upDown, checkbox, slider, etc). The game then dynamically creates the UI for those variables. When the player've filled out the values (the script also provides default values), he can click on "Generate Galaxy". This calls the "Generate" function in the script, passing in the variables and their values. The script then return a list of points with which the game converts into galaxy data.
This is what the two functions look like:
When you select this script from the drop-down, it compiles and grabs the list of variables, then fills out the UI as shown here:
Yes, that's right, there's no player setup stuff. I've separated the Player and Galaxy setups into their own screens. And yes, that's a spiral galaxy! I've been trying to figure out how to create something like that, but gave up. Spencer pointed me to Spiral Formulaes (I didn't know the technical term used in generating galaxies in other games), and after some research, I was able to pull it off!
I'm still working on polishing and finishing this setup screen, but I think this is exciting for modders out there! AI will be similar to how this works, and the scripts will be in C#, so you can create your custom gameplay (galaxy shapes, races, AI, etc)!
How it works is that there are two required functions in the script. "GetVariables" and "Generate". GetVariables grabs a list of variables that the script will need for the game, along with which UI element to use (upDown, checkbox, slider, etc). The game then dynamically creates the UI for those variables. When the player've filled out the values (the script also provides default values), he can click on "Generate Galaxy". This calls the "Generate" function in the script, passing in the variables and their values. The script then return a list of points with which the game converts into galaxy data.
This is what the two functions look like:
When you select this script from the drop-down, it compiles and grabs the list of variables, then fills out the UI as shown here:
Yes, that's right, there's no player setup stuff. I've separated the Player and Galaxy setups into their own screens. And yes, that's a spiral galaxy! I've been trying to figure out how to create something like that, but gave up. Spencer pointed me to Spiral Formulaes (I didn't know the technical term used in generating galaxies in other games), and after some research, I was able to pull it off!
I'm still working on polishing and finishing this setup screen, but I think this is exciting for modders out there! AI will be similar to how this works, and the scripts will be in C#, so you can create your custom gameplay (galaxy shapes, races, AI, etc)!
Thursday, August 11, 2011
Ground Combat Implemented!
Yay, the first combat is in the game! This is just the basics of ground combat, not everything is implemented yet. However everything required for conquering planets are implemented.
The missing features are:
Ability to capture units in combat - If you win the battle, those captured units become a part of your population. This is a good way of obtaining that research race that you want to fill your research planets with.
Ability to capture technologies in combat - If you've captured some units, there's some chance that you may capture some of their technologies. If no units are captured, you won't be able to capture anything.
Technology bonuses - Better technologies give you an edge in battles. Right now, all races are equal in ground combat.
Before you look at the ground combat screenshot, please pardon my crappy background art. You can see that humans has invaded a planet owned by a race of Zero People, and that humans are losing the battle. Here's the screenshot!
The missing features are:
Ability to capture units in combat - If you win the battle, those captured units become a part of your population. This is a good way of obtaining that research race that you want to fill your research planets with.
Ability to capture technologies in combat - If you've captured some units, there's some chance that you may capture some of their technologies. If no units are captured, you won't be able to capture anything.
Technology bonuses - Better technologies give you an edge in battles. Right now, all races are equal in ground combat.
Before you look at the ground combat screenshot, please pardon my crappy background art. You can see that humans has invaded a planet owned by a race of Zero People, and that humans are losing the battle. Here's the screenshot!
Friday, August 5, 2011
Colonization and Nebula Update
Since migration was removed when multi-racial population was added, I've added transports as a way to move your people around. They can be used to either colonize a planet, add population to an already-owned planet, or invade an foreign occupied planet. Right now, only the first two are implemented. The UI for creating transports are already shown in previous post. This is the UI for landing transports. It's just a rough draft, it will be improved later and include information about your transports, the planet info when selected, and better art. But for now, it's functional. Here it is:
Notice something different in that picture? Particularly the fact that nebula isn't blue? Spencer was able to rework the nebula generation code, as well as add multi-colored nebulas. It looks a lot better! Here's a sample galaxy showing the new nebula:
Let us know what you think of the new nebula in the comments!
Notice something different in that picture? Particularly the fact that nebula isn't blue? Spencer was able to rework the nebula generation code, as well as add multi-colored nebulas. It looks a lot better! Here's a sample galaxy showing the new nebula:
Let us know what you think of the new nebula in the comments!
Subscribe to:
Posts (Atom)