Considering Spring for a future project, need answers.

Considering Spring for a future project, need answers.

Various things about Spring that do not fit in any of the other forums listed below, including forum rules.

Moderator: Moderators

Ardis
Posts: 7
Joined: 12 Apr 2010, 04:22

Considering Spring for a future project, need answers.

Post by Ardis »

Hello, first time posting here, I apologize if this isn't the right part of the forum to post in. I'm looking to make a game project some time in the future, though I don't know how far in the future yet, need to do some more research/planning on it. This game idea has been something I've been working on/planning for years, but never could quite find a way to bring it about because of limitations of the project at the time. I'm considering using Spring for the engine on that project, but I need to know what its capabilities and limitations are. I am going to be taking programming classes in college in a month, so I figure I can look into open source engines.

This is going to be a space combat RTS. It started out as a Starcraft mod, but the limitations of Starcraft are starting to slow me down and even block some of the more interesting ideas I'm coming up with. A lot of the ideas I will mention in this post are ones I've seen in games I liked and wanted to either improve upon or combine with features in other games.

Below is a list of ideas/features/requirements I am looking for that will help me contribute to my choice of what engine to use for this idea. I have given examples for a lot of the things I have planned for this game. I don't expect Spring to support all of these things currently, what I am trying to find out is how difficult it would be to work these features in myself (or through a team) and which ones I will have to give up in order for it to work on Spring.

Features required, game will not work without these:
-Space combat or an easy conversion to space combat.
-Customizable UI that supports at least 9 buttons and hotkeys
-Multiple resource system support for at least two resources and harvesting. (Starcraft)
-Online and LAN support, maybe even direct IP games.
-Salvage wrecked units for resources (SpringRTS: Gundam RTS)
-Regenerating shields, armor and upgradable weapons and armor. (Starcraft)
-Energy/mana and cooldowns. (Warcraft III)
-Doesn't have a hard limit to the number of playable factions like Starcraft or Warcraft III do.
-Reasonable unit limits or none at all.
-Multiple weapons per ship. (Sins)
-Units that transport other units. (Starcraft)
-Transports passively repair carried units.
-Hotkey building groups (Warcraft III)
-Unit <==> Building transformations, both ways/mobile buildings. (Starcraft II)
-Multiple build queues on specialized buildings. (Starcraft II)
-Auto-cast abilities (Warcraft III)
-Planets and upgradable colonies (Sins)
-Galaxy map with different systems (Sins)
-Warp between planets and systems (Sins)
-Limits to specific units active. (Warcraft III)
-Two-way instant travel such as jump gates and wormholes (EVE Online)

Preferred, but not entirely necessary:
-Supports a format that can easily be converted from Blender 3D models with little to no editing between.
-Upgradable/leveling flagships (Sins)
-Information cards for each unit when highlighted. (Sins)
-Collision boxes that keep units from flying into each other, possibly damage on contact? (X-Wing)
-Ships with ramming attacks. (Refer to above.)
-Neutral structures, mercenary units for hire. (Warcraft III)
-Workers able to return incomplete loads, possibly even multiple resources. (Star Trek: Armada 2)
-Natural wormholes, black holes and other anomalies.
-Wormholes decay by having mass pass through them.
-Music that changes in combat. (Sins)
-Weapons that bypass shields. (Empire at War)
-Neutral-hostiles that have some level of AI (Sins)
-Carriers able to automatically deploy carried fighters to attack. (Starcraft... kinda)
-Animated portraits, doesn't have to be 3D. (Starcraft)
-Hardpoints on ships and squadrons with individually targettable fighters. (Empire at War)
-Diplomacy (Sins)
-Warp scrambling structures and units (EVE Online)
-Attacks are able to miss. (Empire at War)
-Modifiable supply caps, possibly as a game setting.
-Cloaking/invisibility "breaking" at a certain range. (EVE Online)
-Three layers of health: Shields, Armor and Hull. (EVE Online)
-Units show team colors. Easy to edit through textures. (Warcraft III)

Avoid at all costs:
-Overly complicated planetary/tech management, seems too micro-intensive at times. (Sins)
-Hard counters and units that are so specialized they're never used and single unit armies.
-Overly complicated resource management system.
-Shared build queue for multiple structures (Empire at War)
-Confusing right click functionality (Empire at War)
-Uniform gathering amount for all workers. (Starcraft)
-Exclusively server-side map/mod hosting and file size limits. (Starcraft II)*

*Yes, I'm calling you out on that, Blizzard. I'm not going near Battle.net with any of my ideas.
User avatar
MidKnight
Posts: 2652
Joined: 10 Sep 2008, 03:11

Re: Considering Spring for a future project, need answers.

Post by MidKnight »

W-whoa, lancer. I was just about to post that, too! :P

Yeah, do take a look at THIS (it doesn't work with the current engine version, a guy named KingRaptor has a patched version that does, though, bug him for it). It's a good way of seeing what Spring is capable of, space-wise.

As for your feature preferences, there will be others who will post much more informative bits of text, but the (very, very) short answer is that some of these features are supported by default, the vast majority are very do-able, but you will have to put in the effort and write it up (Spring is very extensible!), and 2 or 3 of those requests aren't feasible with the current version of the engine.

So it really comes down to whether or not you're willing to put in the work. :P

Best of wishes, I look forward to playing your game one day!
User avatar
Hobo Joe
Posts: 1001
Joined: 02 Jan 2008, 21:55

Re: Considering Spring for a future project, need answers.

Post by Hobo Joe »

Basically everything you suggested is easily possible with Spring with minimal amounts of overhead work. You'll probably have to do some simple lua for a lot of it, but almost everything you suggested is already in one Spring game or another.


The part you'll have the most trouble with is the maps, without a lot of extra work (see THIS) you'll only be able to use maps defined by a heightmap, I know some work has been done in this area but I don't know the details. Also the wormhole stuff - probably possible with LUA but I've never seen anything like what you're describing so just a heads up.

Can't be a huge help though, I'm not a developer, but I do know Springs basic capabilities. Hope that helps at least a little bit. :wink:
Google_Frog
Moderator
Posts: 2464
Joined: 12 Oct 2007, 09:24

Re: Considering Spring for a future project, need answers.

Post by Google_Frog »

It's all possible and should be reasonably easy to do but there is one ambiguity:
-Space combat or an easy conversion to space combat.
What do you mean by this?
  • 3D combat with newtonian physics?
  • 3D combat with aether?
  • 2D combat with newtonian physics?
  • Normal old 2D combat with a spacey setting?
Hobo Joe wrote:The part you'll have the most trouble with is the maps, without a lot of extra work (see THIS) you'll only be able to use maps defined by a heightmap, I know some work has been done in this area but I don't know the details.
You're making no sense. What is hard about making a few empty space maps at different sizes? This is one of the easiest bits.

Basically you can do just about anything by writing gadgets and widgets to add to the UI or game rules. Many of these are simple and there are already a lot around in other games.

-Customizable UI that supports at least 9 buttons and hotkeys
see chilli, there are widgets around and you can code any kind of UI you want
-Multiple resource system support for at least two resources and harvesting. (Starcraft)
See Conflict Terra, has a gadget to do harvesting
-Online and LAN support, maybe even direct IP games.
Built Into engine
-Salvage wrecked units for resources (SpringRTS: Gundam RTS)
Built into engine
-Regenerating shields, armor and upgradable weapons and armor. (Starcraft)
Argh wrote a gadget for this, engine has Bubble shields (supcomm)
-Energy/mana and cooldowns. (Warcraft III)
Trivial to code, noone has done it yet.
-Doesn't have a hard limit to the number of playable factions like Starcraft or Warcraft III do.
Built into engine
-Reasonable unit limits or none at all.
Built into engine
-Multiple weapons per ship. (Sins)
Built into engine
-Units that transport other units. (Starcraft)
Built into engine
-Transports passively repair carried units.
Trivial to code
-Hotkey building groups (Warcraft III)
Idk what you mean exactly. There are hotkeys built into engine. Manipulating them with lua is easy. So whatever you mean it can be done.
-Unit <==> Building transformations, both ways/mobile buildings. (Starcraft II)
Morph gadget does this. Easy to change the visualisation.
-Multiple build queues on specialized buildings. (Starcraft II)
There is a gadget for a single buildqueue, expanding it to 2 should be easy.
-Auto-cast abilities (Warcraft III)
Should be pretty easy to do, just let a weapon self target.
-Planets and upgradable colonies (Sins)
Whatever this is it sounds easy
-Galaxy map with different systems (Sins)
What do you mean by this? Does the game take place on many different battlefields? You can zoom all the way out which would give you an entire map of the playing area.
-Warp between planets and systems (Sins)
Whatever it is teleporting units around is easy.
-Limits to specific units active. (Warcraft III)
I don't know what this means, do you mean pop cap? That can be done.
-Two-way instant travel such as jump gates and wormholes (EVE Online)
Teleporting is easy

Preferred, but not entirely necessary:
-Supports a format that can easily be converted from Blender 3D models with little to no editing between.
Better get a modeller to confirm this but I'm pretty sure many people use Blender here
-Upgradable/leveling flagships (Sins)
Is this wc3-style ability choices or a single path? Single path is easy whereas the choices takes a little more grunt work.
-Information cards for each unit when highlighted. (Sins)
You mean a tooltip? There are widgets that do this.
-Collision boxes that keep units from flying into each other, possibly damage on contact? (X-Wing)
Built into engine.
-Ships with ramming attacks. (Refer to above.)
Idk exactly what you want this to do (as in what is the damage based on) but it should be easy.
-Neutral structures, mercenary units for hire. (Warcraft III)
Should be easy to do. There is a Gaia team that you can give invulnerable units to.
-Workers able to return incomplete loads, possibly even multiple resources. (Star Trek: Armada 2)
Conflict Terra has harvesters, should be easy to expand to many resources.
-Natural wormholes, black holes and other anomalies.
What do these things do? Applying damage is easy, teleporting is easy, throwing things around is easy.
-Wormholes decay by having mass pass through them.
No idea what this means.
-Music that changes in combat. (Sins)
There are widgets for this.
-Weapons that bypass shields. (Empire at War)
Built into the engine (for bubble shields). Starcraft shields are easy and you can make weapons ignore them while you're coding them.
-Neutral-hostiles that have some level of AI (Sins)
You can make LuaAI to handle anything you like although I am not sure if new teams can be ingame without appearing in the lobby. At worst this means you would have to put a bot in a battle lobby. Although you can go for lobby support with this.
-Carriers able to automatically deploy carried fighters to attack. (Starcraft... kinda)
Already done as a gadget, see ZK sea carrier.
-Animated portraits, doesn't have to be 3D. (Starcraft)
You can write whatever you want into the UI.
-Hardpoints on ships and squadrons with individually targettable fighters. (Empire at War)
Doable, there are a few different ways, see THIS.
-Diplomacy (Sins)
There is an inbuilt whisper and ceasefire function. There is a UI for this that makes it a bit easier to use.
-Warp scrambling structures and units (EVE Online)
What does this means? At a first impression I assume it is to do with teleporters and abilities so it should be possible.
-Attacks are able to miss. (Empire at War)
Built into the engine with a 3D projectile simulation.
-Modifiable supply caps, possibly as a game setting.
There is a built in changeable unit cap and different supply for units should be easy to code if you need it.
-Cloaking/invisibility "breaking" at a certain range. (EVE Online)
What do you mean by this? Is the range based on range to enemy or how far into their sight range you are?
  • The range to enemy system is built in as the cloaking system, units have a radius which if an enemy enters they decloak
  • You can arbitarilly change around unit visibility with lua so any system is codable
-Three layers of health: Shields, Armor and Hull. (EVE Online)
Easy to code.
-Units show team colors. Easy to edit through textures. (Warcraft III)
Built into the engine.

Avoid at all costs:
I don't understand this bit. The engine can or cannot do all the stuff here. I will answer this question by saying that those questions don't even apply to Spring.
User avatar
SpliFF
Posts: 1224
Joined: 28 Jul 2008, 06:51

Re: Considering Spring for a future project, need answers.

Post by SpliFF »

The engine is well within the capabilities you mention. That doesn't mean it will be easy. There's functionality in that list you will need to write yourself - about 99% of it in Lua and possibly a C++ patch or two if you run into limitations. Lua is a great language but they won't teach you that at school so you'll have a learning curve ahead. Given you'll have school commitments expect a development time measured in years, not months. If you have the patience and commitment there's no reason why Spring wouldn't make a good choice.
User avatar
knorke
Posts: 7971
Joined: 22 Feb 2006, 01:02

Re: Considering Spring for a future project, need answers.

Post by knorke »

welcome to spring :)
Some of your questions like "Units show team colors" sound like you did not try to play a game yet, so I suggest you do that ;)
Games to try out:
Balanced Annihaltion - the most played game, should give you a good introduction.
Conflict Terra - harvesting, transforming of buildings mobile<->unmobile
GundamRTS - squads, interface, unit limits, teching up, graphics, music

worm holes / teleporting:
See here for a map that has teleports:
http://springrts.com/phpbb/viewtopic.php?f=43&t=24611
On this map there are only two teleports (in the tunnels) but it is easy to add more. Teleports are rectangle areas.

harvesting:
try the game "Conflict Terra", click here for preview:
http://easyeasymoney.ytmnd.com/
workers can return incomplete payloads but only carry one type of resource. (as of now)

other anomalies:
uhm do meteors count? see Conflict Terra then.
or "chicken defense" for BA, CA or NOTA: randomly appearing monsters.

As others said, most of the stuff is not hard to do though it requires some scripting. A Lua script might look like this:
http://code.google.com/p/conflictterra/ ... mining.lua
If this is your first experience with programming, I would say Spring is not the best learning ground. imo Lua is not that hard for beginners (compared to ie C with all its {}[{}[{}) but you scavenge must all Spring-specific informations from the wiki that is not-so-complete. Also you can not simply type your code, you must know about things like UnitDefs and whatnot, know some console commands and important keys. So you should spend some weeks at least just playing Spring games to get used to all that. No use if you try to script some most epic feature but do not know where to place a downloaded map.
blabla If you know some programming then Spring is probally the most lolzy playground ever but for "my first hello world" it is not so cool.
Masure
Posts: 581
Joined: 30 Jan 2007, 15:23

Re: Considering Spring for a future project, need answers.

Post by Masure »

Shame that nobody first told you about Final Frontier or Eternal Struggle. Those are the spacest mod in Spring IMHO.

FF
http://www.ta-spring.com/mods/final_fro ... ovies.html

ES
Image

http://springrts.com/phpbb/viewtopic.php?f=14&t=8596

It doesn't work in the current version but that's not a reason to avoid taking a look.
User avatar
FLOZi
MC: Legacy & Spring 1944 Developer
Posts: 6240
Joined: 29 Apr 2005, 01:14

Re: Considering Spring for a future project, need answers.

Post by FLOZi »

i won't go into huge details as its mainly been covered, but I think this:
-Planets and upgradable colonies (Sins)
-Galaxy map with different systems (Sins)
-Warp between planets and systems (Sins)
Might be hard / not doable currently if you are meaning to essentially have multiple maps which can be moved between back and forth.
User avatar
scifi
Posts: 848
Joined: 10 May 2009, 12:27

Re: Considering Spring for a future project, need answers.

Post by scifi »

it works i fixed them :wink: at least FF, ES didnt bothered to many changes to make....... since last version :(



Spring is a nice engine to work with, there are plenty of comunity people you can ask stuff, but i suggest taking a look at Lua base coding if you havent done it yet :wink:

good luck for the project
Ardis
Posts: 7
Joined: 12 Apr 2010, 04:22

Re: Considering Spring for a future project, need answers.

Post by Ardis »

The Avoid at all costs thing were concepts/features I wanted to avoid having in my game because they're things that I believe would ruin any game. And I guess I was a bit ambiguous on some of them. Those are basically reasons why I can't use certain game engines for my idea. I didn't really need to post that part, but I figured I would just in case anyone was wondering why I didn't use any of the games I mentioned.

By space combat, I meant very similar to how things worked in games like Star Wars: Empire at War and Sins of a Solar empire where you only controlled units on a 2D playing field, because having ships go North, South, East, West, up and down in a 3D field would get very complicated/annoying.

As for systems, what I had in mind for that was one where you would have all your structures built around individual planets or pockets of space that have other objects of interest in them with "warp lanes" connecting the pockets of space and planets, much like Sins of a Solar Empire. You would have several solar systems for games to take place in.

And when I say limit to specific units, I already had population caps in mind and wanted to see if that could be set as a game setting, not a hard limit for the game itself to have. But what I mean for that line was you could only build one flagship per game. Flagships are going to be kind of like hero units in Warcraft III with the exception that you can only build one per game and if it gets destroyed, you can't build a new one. An interesting feature I had in mind for this system was that you could rebuild your destroyed flagship, but other players could salvage them for resources at the same time.

The idea of cloaking breaking was that if you fly one of your units too close to a non-friendly ship while cloaked, the cloaking device would either:
1) No longer prevent that nearby unit from seeing you.
2) Cause the cloaking device to merely shut down.

I have experience in Starcraft modding and the Iscript it uses for animations and that's about it. Basically I want to take a lot of time to think about what engine to move on to because I know I have a lot to learn if I'm going to move up to a 3D engine, so I want to make sure I choose one I can work with.

EDIT: I'll check out the games you mentioned in a bit. I just thought I'd check this thread before I drove off to college. Thanks for the responses.
User avatar
SinbadEV
Posts: 6475
Joined: 02 May 2005, 03:56

Re: Considering Spring for a future project, need answers.

Post by SinbadEV »

I'm a little concerned about:
Ardis wrote: -Planets and upgradable colonies (Sins)
-Galaxy map with different systems (Sins)
-Warp between planets and systems (Sins)

As for systems, what I had in mind for that was one where you would have all your structures built around individual planets or pockets of space that have other objects of interest in them with "warp lanes" connecting the pockets of space and planets, much like Sins of a Solar Empire. You would have several solar systems for games to take place in.
Spring works by single "battlefield" instances, but it sounds like you are talking about multiple "battlefields" (aka planets that you will zoom into to participate in battles for control)... while this could be "faked" somewhat by having a very big map with multiple maps separated by transparent terrain... or by cheating really hard and actually reshaping and re-texturing the entire height map or whatever... I don't think you are going to be able to achieve this.

However if the planets basically amount to permanent structures with complex UI this is very doable (aka; if your looking for something like real-time GalCiv2, that would not be a problem)

Otherwise, yeah, spring would be able to do most of the stuff you ask for with just Lua scripting... so I'd suggest you look into that and try to decide if it's something you think you can become comfortable working with.

edit: I guess... because your "map" isn't going to have terrain anyway (just a flat invisible plane on which stuff happens... BTW you really need to look into T.H.I.S.) removing moving between solar systems could be done by removing all the units on the field and putting down different ones could work... I think that some of the early Lua based save/load schemes would help in this case (basically you would be "saving" the state of a solar system and then remove all units and then "load" the state of a different solar system... as this is just a list of create/destroy unit commands it shouldn't be too hard.


~~~
Also, unit limits/ flagships etc are all doable... in fact the "Commander" units in *A based space games (like TAFF) already implement flagships... also, Gundam is a good example of complex resource/unit limit stuff...
Google_Frog
Moderator
Posts: 2464
Joined: 12 Oct 2007, 09:24

Re: Considering Spring for a future project, need answers.

Post by Google_Frog »

Ardis wrote: -Planets and upgradable colonies (Sins)
-Galaxy map with different systems (Sins)
-Warp between planets and systems (Sins)
He said Sins style multiple solar systems so I think it is fine. Don't all those systems exist on the same map?

With no terrain to worry about his units can be scaled down quite small to make the maps very large. This should be big enough.
User avatar
zwzsg
Kernel Panic Co-Developer
Posts: 7049
Joined: 16 Nov 2004, 13:08

Re: Considering Spring for a future project, need answers.

Post by zwzsg »

Spring only has individual battle. The engine does not do overaching campaign map like in some other RTS. That doesn't mean your project will have to do without, just that you'll have to code it yourself. The CA people did something similar, with their planetwars project, which prove it's possible.

The Spring engine handles a unitdef tag to limit the number of certain unit to 1 (or any other number actually). If in addition you want to forbid rebuilding, then it's a matter of tiny Lua gadget.





I tried to type an answer to all your questions, but most of them are: not by default, but you can script it in. Well, to be fair there's some which are handled by the engine as well.

Whenever I say code it yourself, I don't mean to modify the C++ source of the engine, but to write in the Lua language what we call around here "gadget" and "widget".

If you want to mod Spring you'll have to learn to use the Lua scripting language. But don't worry, it's a rather easy language. On the bright side, Lua is also the scripting language used by tons of commercial game, so it won't be a wasted skill.

Many of the gadget you need have already been implemented by other modder, which mean you won't have to code from scratch but merely to borrow and monkey up a bit. But understanding a bit those Lua script is still necessary, if only to make them work, adapt to your own mod, and modify to fit better your vision.

Also, some of your interrogation indicat eyou come from RTS engine that are very rigid, and Spring is much much more flexible than you seem to assume, which make some of your questions sound irrelevant.




-Space combat or an easy conversion to space combat.
Depends what you calll space combat. Spring won't support combat in full spatial 3D with no up and down, it will still take place on a mostly 2D planes. But at least Spring planes behavior is more "flying" and less "hovering" like in blizzard's RTS.
-Customizable UI that supports at least 9 buttons and hotkeys
Yeah, easy.
-Multiple resource system support for at least two resources and harvesting. (Starcraft)
Two resources are hard coded. You can any other extra resource with some Lua scripting. Harvesting is more difficult, but at least two people have implemented harvesting in Spring so far so it's doable.
-Online and LAN support, maybe even direct IP games.
Spring is mostly meant to be played online. It can be played on LAN, but not as easily as other games (you have to run your little instance of spring server on the LAN or something). There is no support for Direct IP. However, all the method to find and join games are external applications, Spring in itself just use a startscript, telling it the map, the mod, the players, what IP to connect, etc... So theorically you could write your own frontend for direct IP games.
-Salvage wrecked units for resources (SpringRTS: Gundam RTS)
Spring hardcoded mechanics are those of Total Annihilation, where salving wrecked units for resources is integral to gameplay. But your exemple is badly chosen, there's no salvaging of units for resources in SpringRTS: Gundam RTS.
-Regenerating shields, armor and upgradable weapons and armor. (Starcraft)
You've got shields hardcoded, not sure what you mean by armor but yes, I guess Spring has that. There's engine support for armor class, for toggling an "armored mode" damage modifier, and via Lua you could also change the armor/weapon interacting however you want. There's no engine support for upgradable weapons and armor, but plenty of people are implemented their own upgrade system, so I'm sure you'll find some to borrow that'll suit your needs.
-Energy/mana and cooldowns. (Warcraft III)
There's isn't engine support for individual energy/mana bar, but it's implementable in Lua.
-Doesn't have a hard limit to the number of playable factions like Starcraft or Warcraft III do.
There isn't.
-Reasonable unit limits or none at all
Ya, the unit limit is like 500-5000, in practice it depends how much your CPU can handle before it becomes slideshow.
-Multiple weapons per ship. (Sins)
Spring has like 16 weapons per units. It's also possible with animation to make the same weapon appear being fired from different turrets.
-Units that transport other units. (Starcraft)
Yes.
-Transports passively repair carried units.
Haven't seen that in any spring game, but that'd be a very short Lua script.
-Hotkey building groups (Warcraft III)
Dunno what you mean but yes we have that, at worst, whatever group hotkey mechanic you want you can do with a widget.
-Unit <==> Building transformations, both ways/mobile buildings. (Starcraft II)
Demands a little script, but yeah, plenty of Spring mods have that.
-Multiple build queues on specialized buildings. (Starcraft II)
There's only one build queue per unit in Spring.
-Auto-cast abilities (Warcraft III)
There isn't really a spell system in Spring. Though plenty of mod have scripted their own special abilities, so auto-cast or not is just scripter's choice.
-Planets and upgradable colonies (Sins)
Wut? No. You could have a look at CA's planetwar metagame though.
-Galaxy map with different systems (Sins)
Wut? No. You could have a look at CA's planetwar metagams though.
-Warp between planets and systems (Sins)
Wut? No. You could have a look at CA's planetwar metagame though.
-Limits to specific units active. (Warcraft III)
What's that? A Lua gadget can limit whatever however you want though.
-Two-way instant travel such as jump gates and wormholes (EVE Online)
Hmm yes, teleport are easy to script.
-Supports a format that can easily be converted from Blender 3D models with little to no editing between.
Afaik there's still a little editing to do, but yeah, half the Spring modeller use Blender.
-Upgradable/leveling flagships (Sins)
Not really but can be gadgetized.
-Information cards for each unit when highlighted. (Sins)
Just copy the info widget from CA or GRTS.
-Collision boxes that keep units from flying into each other, possibly damage on contact? (X-Wing)
At some point in times didnt' Spring had planes getting damage from collision? Otherwise yes Spring plane try to aviod each others.
-Ships with ramming attacks. (Refer to above.)
Not really. Again you could try to script that.
-Neutral structures, mercenary units for hire. (Warcraft III)
Neutral structure is easy, but to hire mercenary you'll have to code the whole hiring interface.
-Workers able to return incomplete loads, possibly even multiple resources. (Star Trek: Armada 2)
Considering harvesting and worker is not handled by engine but has to be coded in a gadget, you just have to code what you want.
-Natural wormholes, black holes and other anomalies.
What? CA had funky antigrav weapons, but otherwise if you want wormholes blackholes and all that, you'll have to code what you want.
-Wormholes decay by having mass pass through them.
Same.
-Music that changes in combat. (Sins)
Smoth made a widget for that.
-Weapons that bypass shields. (Empire at War)
There's binary mask to select which weapon is affected by which shield.
-Neutral-hostiles that have some level of AI (Sins)
Hmm, yes. But again, it's not a matter of placing a unit on a map, then ticking "has AI" in a box. It'll be more about coding that AI yourself. (Or borrowing from another Spring mod that has something similar.)
-Carriers able to automatically deploy carried fighters to attack. (Starcraft... kinda)
CA had that afaik.
-Animated portraits, doesn't have to be 3D. (Starcraft)
Not really supported by Spring, I guess if you really wanted you could add pictures in the tooltip, I don't know about video support though.
-Hardpoints on ships and squadrons with individually targettable fighters. (Empire at War)
Squadron would be made of individual fighters anyway (with some additional logic to force selection/work together). Spring doesn't support hardpoint, some people have tried to implement that with varied method and varied success.
-Diplomacy (Sins)
No. (But again, feel free to script that)
-Warp scrambling structures and units (EVE Online)
Like a radar jammer? Yes.
-Attacks are able to miss. (Empire at War)
Yes. One of the strong point of Spring is that shot are simulated, so they can miss, they can hit another target that happened to cross at the wrong moment, etc..
-Modifiable supply caps, possibly as a game setting.
There isn't supply caps in Spring. But maybe S44 and GRTS have scripted something like that.
-Cloaking/invisibility "breaking" at a certain range. (EVE Online)
Yes, handled by engine.
-Three layers of health: Shields, Armor and Hull. (EVE Online)
No, you have one layer of health. Plus the shields. Of course you could write your own gadget to simulate armor and hull... what's the difference between hull and armor anyway?
-Units show team colors. Easy to edit through textures. (Warcraft III)
Yeah.
-Overly complicated planetary/tech management, seems too micro-intensive at times. (Sins)
There will be none by default in Spring
-Hard counters and units that are so specialized they're never used and single unit armies.
Well, that's just up to the modder choice. Don't want hard counter, then don't have them. However, the way Spring works, simulating pos/speed/acceleration/turn rate/etc... you don't need hard counter to make a compelling game.
-Overly complicated resource management system.
What you want is already more complicated than what Spring has.
-Shared build queue for multiple structures (Empire at War)
No, but mobile constructor can assist each other and assist factories.
-Confusing right click functionality (Empire at War)
Spring use the "right click" interface common to most RTS.
-Uniform gathering amount for all workers. (Starcraft)
Gathering is to be implemented by modder anyway.
-Exclusively server-side map/mod hosting and file size limits. (Starcraft II)*
The ZK team is pushing to move in that direction. But you can still ignore their tool and serve map/mod however you want.
User avatar
Pxtl
Posts: 6112
Joined: 23 Oct 2004, 01:43

Re: Considering Spring for a future project, need answers.

Post by Pxtl »

Define "planets".

Is a planet a transferrable unit with a bunch of hardpoints that buildings can be spawned on?

Totally doable.

Is a planet a landscape floating in space?

No way... well, you could put a disc of Spring landscape into space, but it would be hyper-fugly.

edit: on the subject of multiple weapons, iirc the only weapon you have direct control over as the player is the primary weapon - secondary weapons aren't used to determine attack range, for example. If you want secondary seperately-controlled weapons, you'll need to start duct-taping units together.
Google_Frog
Moderator
Posts: 2464
Joined: 12 Oct 2007, 09:24

Re: Considering Spring for a future project, need answers.

Post by Google_Frog »

Now to make a wall of quotes to disagree with zwzsg's.
-Multiple build queues on specialized buildings. (Starcraft II)
There's only one build queue per unit in Spring.
But you can always code you own build queue! Didn't you see THIS? The battleships had their own buildqueue lua which could very easilly be modified for parallel building.
-Planets and upgradable colonies (Sins)
Wut? No. You could have a look at CA's planetwar metagame though.
It depends what the plants are colonies are. If you want Sins planets this is very easy to implement. As in you has a single structure (a planet) which can have localised upgrades applied to it.
-Warp between planets and systems (Sins)
Wut? No. You could have a look at CA's planetwar metagame though.
Again depends what a planet is. If the planets are on the same 'map' it is fine.
-Hardpoints on ships and squadrons with individually targettable fighters. (Empire at War)
Squadron would be made of individual fighters anyway (with some additional logic to force selection/work together). Spring doesn't support hardpoint, some people have tried to implement that with varied method and varied success.
Hardpoints on units are viable to an extent. Check out the massive ship in THIS. I wouldn't recommend hardpoints on absolutely everything but they should be fine for large things.
-Diplomacy (Sins)
No. (But again, feel free to script that)
Yes. Spring has inbuilt private chat and ceasefires. It just requires a UI to be coded for it. There is one in CA.
-Three layers of health: Shields, Armor and Hull. (EVE Online)
No, you have one layer of health. Plus the shields. Of course you could write your own gadget to simulate armor and hull... what's the difference between hull and armor anyway?
This answer is a bit misleading. Gadgets to deal with any kind of segmented health (protoss shields, armour, hull etc..) are quite simple.

Anyway I think we've confused you but you are the one who asked a lot of questions.

TLDR: Can I do all this Suff in Spring? Yes.(although if you would clarify the scale of game you're thinking of it would help, as in does the entire game occur on one 'map'?)
User avatar
smoth
Posts: 22309
Joined: 13 Jan 2005, 00:46

Re: Considering Spring for a future project, need answers.

Post by smoth »

Hey OP, I am really busy right now so I cannot help you much right now but I want to highlight that your post is excellent and the reason you are getting bombarded is because such a good post deserves relevant responses. Please do not feel intimidated by this massive bombardment it is because you have made such a sound post requesting details and most of us are excited about such an eager and organized fellow!

Now back to my animation dungeon.
Ardis
Posts: 7
Joined: 12 Apr 2010, 04:22

Re: Considering Spring for a future project, need answers.

Post by Ardis »

I went into planning this game idea already aware that no game engine would have all of the features I wanted included at the start and knew it would take work to put those features in, that's why I was looking at Spring in the first place, it's a lot more flexible than any other RTS game engine. Basically, I'm trying to figure out how much work it would take to implement those features and which ones I would have to give up.

I should clarify a few things I had on mind for this idea. The list was very ambiguous because I was trying to fit it on one page and have nothing on it take more than one line of text.

Units will have three layers of health and attacks will have to through these layers in this order with the exception of special weapons that can bypass certain layers:

Shields: Only one faction will have these on all units, some specific units on other factions will have these. Shields will regenerate over time. They have little damage reduction, but can be upgraded for more regeneration and damage reduction.

Armor: This is the external plating protecting the internal structure of the ship. Armor layers will have a higher damage reduction than shields, but do not regenerate (apart from certain tech and upgrades being considered). Armor costs resources to repair, but is very cheap compared to the cost of the unit.

Hull: This is basically the internal structure of the ship. This has little to no damage reduction and costs a significant portion of the units' cost to repair.

As for planets, I want them to be more like capturable resource nodes more or less. You colonize it by a specialized unit, I may even try to work this into some of the flagships. A colonized world will basically be a separate unit. Upon destruction, the colony will revert back into an unowned planet. I was going with what Sins of a Solar Empire did, but I'm going to simplify it.

As for warp scrambling, since I'm getting the distinct impression that not a lot of people here have played EVE Online. Warp scrambling basically prevents another ship from entering warp or I might make it so it's harder for them to warp, meaning if they send an attack fleet into your system, then they won't be able to retreat as easily.

As for multiple weapons, what I meant was that some ships would have a main gun, some would have turrets for large ships and structures, missile bays, and some would have anti-fighter turrets. I wanted the game to be able to know which weapons to use on which targets. After all, you don't want to use an orbital bombardment gun on a little fighter.

And a lot of the larger ships would have hardpoints, turrets, engines, etc. Basically large weapons (turret clusters, big guns, etc.) will be targettable, but stripping a unit of all its hardpoints won't render it unusable, it would just be immobilized and lose most of its firepower and maybe some of its special abilities.

Don't worry, this "bombardment" of responses is far from intimidating to me. This is actually encouraging to me.
User avatar
Pxtl
Posts: 6112
Joined: 23 Oct 2004, 01:43

Re: Considering Spring for a future project, need answers.

Post by Pxtl »

Warp Lanes in general will be tricky because of how that interfaces with the pathfinder. You see, the pathfinder is only aware of land units... land units don't really drift about in a convincing manner that is appropriate for spacecraft (THIS units are gunships, aren't they?), and air units travel as-the-crow-flies. Also, there is no concept of "teleport" for the pathfinder, assuming transit through warp-lanes is instant.

As such, having units intelligently follow the warp-lanes will be tricky, since you will not be able to rely on the engine's existing pathfinding functionality. That said, pathfinding in your proposed topology is simple enough you may be able to D.I.Y, calculating the best path and then handing the movement to the unit as a series of waypoints.

But it also means that once you figure out how to implement this, your anti-warp interdiction system will come pretty much for free.
User avatar
zwzsg
Kernel Panic Co-Developer
Posts: 7049
Joined: 16 Nov 2004, 13:08

Re: Considering Spring for a future project, need answers.

Post by zwzsg »

Maybe an exemple will help you see better what we mean.

Let's take the request "I want shields!"

So you'd look up the wiki, check other mods, etc.., and find out that shields can be added to unit, they are defined like weapons, but with the special tags. That is, you have in /weapons/ folder a file whatever.tdf that contains: http://pastebin.com/HFbC9nee

And then in the file /units/my_shielded_unit.fbi, that contains the UnitDef of a unit, you have the line: Weapon2=shieldforstuff;

And then the engine take those tags, and use them to parametrise shields that reflect shots, that consume energy, can be drained, well basically your usual sci-fi shields.

That is way when the desired feature is hardcoded into engine already.

But then let's suppose you go: "Nah! That is not the kind of shield I want! I want shields like the iron curtain of red alert! Except it shouldn't make unit totally invicible cause that's imba! Also would be be totally cool if units attacking a shield were getting damaged! Is it possible?"

And then the answer would be: Yes, but you'll have to code it yourself. No, to get a better idea of what this "coding yourself" entails, let's have a look at said code: http://pastebin.com/KnQZ9nKm

This would be saved under /gadgets/whatever.lua and would handle lots of things:
- Add a special ability to the building called "firewall"
- Have that special ability use a timer to "charge" up, includin having the proper button in the interface
- Handle the action for that special ability, which is to mark as "protected" allied units in the targetted zone.
- Handle making the unit stay "protected" only for so long
- Make "protected" unit only take half the damage
- Make any attacker of "protected" unit receive half the damage
- Draw a flashy green effect on "protected" unit

This is an actual gadget taken from an actual Spring game (Kernel Panic), so it's not as simple and readable as demo exemple, but at least you get an idea what to really expect. It direly lacks comment, so I'll details and simplify the important bits:

Code: Select all

function gadget:UnitDamaged(unitID, unitDefID, teamID, damage, para, weapon, attackerID, attackerUnitDefID, attackerTeamID)
	if protected[u] then
		Spring.SetUnitHealth(u, Spring.GetUnitHealth(u) + damage*.5)
	end
end
UnitDamaged is a callin, which mean that every time a unit receive damage, the engine call the instance of UnitDamaged it finds in every gadget. Even if you're not a coder, this bit should now be readable: If the unit is protected, then add 50% of damage to the health. But as you can see, you could have written a totally different formula, to get a totally different behavior.


The part in function gadget:DrawWorld() deals with the graphic representation of the shield. It's OpenGL command, so this part is fairly difficult. But basically, you have the power to draw any graphical effect you want. Here we used gl.Unit(u,true) to draw the unit (with a different color, offset, etc...). But you could have well have drawn the effect vertex by vertex. Or maybe you could have used the simple instructions, and be done with less lines. What I'm trying to say, is that you have whatever the level of control you want, from easy but crude instruction, to detailed but hard to write ones. A beginner's implementation might look like:

Code: Select all

function gadget:DrawWorld()
	for u,_ in spairs(SYNCED.protected) do
		local x,y,z = Spring.GetUnitPosition(u)
		gl.DrawGroundQuad(x-32,z-32,x+32,z+32)
	end
end

The part "CommandFallback" is what marks as protected the unit around the zone you clicked with the firewall command. It could be simplified in:

Code: Select all

function gadget:CommandFallback(unitID, unitDefID, unitTeam, cmdID, cmdParams, cmdOptions)
	if cmdID == CMD_FIREWALL then
		for _,u in ipairs(Spring.GetUnitsInCylinder(cmdParams[1], cmdParams[3], 300)) do
			protected[u] = true
		end
		return true, true
	end
	return false, false
end
Which should now be more understandable: Whenever a command is given, the engine calls this function in every gadget. In our gadget first we check it's the command we're concerned about, then we get all units in 300 radius cylinder around the position the command was given in, and use a table to mark down the units that were there.



So hopefully, that'll give you a better idea of what to expect when modding Spring.

But again, if you're allergic to code, then you just use the hard coded behavior. It's all a trade-off between laziness and getting exactly what you want. In my exemple, either you're content with the hard coded shield behavior, and use the tag to configure them ( http://pastebin.com/HFbC9nee ), either you want to implement your own totally original shield system behavior, and then you code it ( http://pastebin.com/KnQZ9nKm ).
Post Reply

Return to “General Discussion”