If you ever want to move from sc2 editor to other engines, there's my advice: learn data while you still is a mapmaker. The set of categories and connections between them that we have in data section of the editor looks pretty useful for describing any kind of interaction between objects in any game. Not like I ever thought copying its architecture, it's just no matter what game I create, platformer, space shooter or strategy, I just create a modular lego-alike way of describing the game characters and their abilities, and every time I end up with data-alike structure. It's just a fundamental object oriented way of describing that kind of functionality.
In my RTS engine I have units, actors, weapons, abilities, effects, validators, behaviors, missiles, beams, impact/launch visuals. Effects, for example, have types like search, damage, apply behavior, persistent, set. Effect chains tracking target, source and caster till it's done. So, I can build all fancy stuff I can in sc2 editor. The number of properties every entry has is much smaller than the sc2 prototypes have, but I don't need most of them, I only added the ones I usually use while mapmaking.
I only spent 5 weeks to create this engine, and one more week in the beginning to think the things through.
There is a video of how it looks.
I don't have much models so far, but you can see there's already a battle between monsters. Fps of the video isn't high, cause my old desktop sucks at recording videos, but the engine itself is pretty optimized, and runs smoothly on my phone.
So, now I can keep making RTS games as I used to in sc2, the way I used to, but now I have a potential audience of a billion mobile users. Though, multiplayer may take some special efforts to implement, so I'll start with a single player game.
As for the multiplayer, you pretty much have to copy SC2. The way SC2 does it is pretty much the only real way to do RTS netcode, and every RTS ever has done it the same way.. DotA 2 custom games have already crashed straight into that problem and games already are suffering for it. If you do client server, as DotA 2 has, you are effectively capping how many units can be used. DotA 2 lags super hard (multi second latency) once you start ordering more than a few (100+) units to move.
As for potential users: You certainly can try to do RTS, but the controls of any mobile pretty much dictate that the pacing must be VERY slow.
nice one zolden, i switched to unity lately. hope i can show off somethin in 5 weeks too :D. i am heading more into the city building (settlers, anno) direction.
How do you connect the data? Instance variables or interfaces? I'd like to see the code of a unit.
Links are simply ints. Ints have names through enum type. So, to give a weapon to a unit, I just do orc.weapon = weaponTypes.orcWeapon. Same for weapon effects, orcWeapon.effect = effectTypes.orcDamage. All connections made this way. It's easy to implement, easy to use.
When weapon shoots, effect number is being passed, and static class, that handles effects does the code for the effect. For example, damage simply calculates damage and passes it to target.damage. Search uses physics2D api to get the array of units in the area, sorts it based on sorting criteria and applies the effect based on max target count of the search effect.
Unit's code is too big, but in terms of data it has some interface, like damage(), addBehavior(), and also has timers for weapons and abils cooldowns, behaviors are structs, that contain behavior's life timers, periodic effects, etc.
I can say, that there was nothing complex at all, everything is very simple, because of the way the whole system divided to the modules. That's the power of data. The only thing I had to think was pathfinding. I didn't use any traditional algorithms, just 2d physics + a state machine script, to walk around obstacles. And looks like the fight goes as smooth as sc2 ones go, even if there's a big crowd, they walk smart withoug annoying the player of not being able to find the path to the closest target.
I'm thinking about moving on to unity or UE4 after finishing my sc2 project.
Depends on your project, for the start you may want to try something simple, than sc2 project. Depends on the project, though, some have arcanoid or tetris as sc2 projects. Coding architecture matters alot, it's easy to turn the project to a mess. I created a simple 2d space shoot'em up kind of game to learn, and it was both hard and useful to figure out most pitfalls and ways to handle them.
As for potential users: You certainly can try to do RTS, but the controls of any mobile pretty much dictate that the pacing must be VERY slow.
This is true. Sad, mobiles don't have controllers widely spread, it would make some arcades be controlled so much better. I once played the good old Contra on my phone, and the controls were aweful. For RTS it's even harder to come up with something convenient. I remember the suffering when I tried Dune2 on Sega after playing it alot on PC.
But in this particular case it will be a TD game with "build a tower once a wave" kind of responsibility for the player. So realtime battles will happen automatically. Maybe player will have a spell to cast once, like aoe slow behavior apply or something like that. It's easy to do with touch screen.
i switched to unity lately. hope i can show off somethin in 5 weeks too :D. i am heading more into the city building (settlers, anno) direction.
My first shmup game took months, so just keep learning, it doesn't matter at start, how fast you go, you'll be fine after a year of intense unity using. And the genre you're heading into is pretty popular these days, easy to monetize. If you wnat a nice example, try DomiNations game. It is created by Big Huge Games - the best RTS studio (yes, I think they beat Blizzard), and their solutions for controls and interface may lead you the right way.
In regards to mobile, I think you would just need to make something similar to rts, but not quite the same. I think it could greatly benefit from squad type units like in the star wars empire at war games. Perhaps even instead of microing individual units/squads, you could give all military units a general order to attack north/south/east/west/come home/etc.
RTS are indeed difficult because you have to deliberately design the units around the engine and its limitations. Also the netcoding is really what define an RTS.
Hi, it really nice to hear that! Congrats on the Unity RTS.
I kind of went the opposite route: I have an idea of a multiplayer video game and I started with Unity. However, there is a big amount of work to do with unity before even thinking of game design. It seems to have taken you only 6 weeks or so, that's impressive!
My strategy is to first develop the game using the sc2 engine, try to improve the game design in there and gather players around it. It makes a nice proof of concept before even implementing the whole RTS in Unity or Unreal Engine. I think overall it will save me time. Anyway, I'm interest in general in building RTS games with unity. Did you think of sharing/selling your Unity RTS code base?
Ok, all these months I've been working on the game utilizing the engine, and things are really getting together lately, so there's a video of the gameplay. The game is not ready yeat, but the level part is prettu much playable.
My strategy is to first develop the game using the sc2 engine, try to improve the game design in there and gather players around it. It makes a nice proof of concept before even implementing the whole RTS in Unity or Unreal Engine.
Yes, great plan! Sc2 editor is a high level development environment, and helps to implement game ideas pretty fast. And players in battle net can provide lots of precious feedback. In my case it is actually the same scenario. I created the game in SC2, it proved to be fun, now I'm making it for mobiles to widen the audience. It doesn't mean I will keep creating things in sc2 editor, I found ways to work really fast with unity. But still sc2 editor is a great tool to improve game design skills.
Anyway, I'm interest in general in building RTS games with unity. Did you think of sharing/selling your Unity RTS code base?
Yes, it's possible. This engine's developer interface is actually very, very close to the Data stuff of SC2. There are units, weapons, effects of all kinds, behaviors, validators - just all we used to use in the editor, and the connections between those things are similar to the editor. And the engine itself is pretty optimized, and doesn't generate any performance issues even for mobiles.
Yes, models are not mine, some are from asset store, some from TaylorMouse or my modeller.
The amount of time to implement this RTS engine itself is about 2 months. This two months period was the only additional step I had to make if we compare to the development in sc2 editor. The rest of time, about 6 months, was spent on "data" work to implement units and their abils in the engine, same as we do in sc2. Also UI, some additional things like map generation, eco, mines, upgrades, waves, kill rewards...
If you ever want to move from sc2 editor to other engines, there's my advice: learn data while you still is a mapmaker. The set of categories and connections between them that we have in data section of the editor looks pretty useful for describing any kind of interaction between objects in any game. Not like I ever thought copying its architecture, it's just no matter what game I create, platformer, space shooter or strategy, I just create a modular lego-alike way of describing the game characters and their abilities, and every time I end up with data-alike structure. It's just a fundamental object oriented way of describing that kind of functionality.
In my RTS engine I have units, actors, weapons, abilities, effects, validators, behaviors, missiles, beams, impact/launch visuals. Effects, for example, have types like search, damage, apply behavior, persistent, set. Effect chains tracking target, source and caster till it's done. So, I can build all fancy stuff I can in sc2 editor. The number of properties every entry has is much smaller than the sc2 prototypes have, but I don't need most of them, I only added the ones I usually use while mapmaking.
I only spent 5 weeks to create this engine, and one more week in the beginning to think the things through.
There is a video of how it looks.
I don't have much models so far, but you can see there's already a battle between monsters. Fps of the video isn't high, cause my old desktop sucks at recording videos, but the engine itself is pretty optimized, and runs smoothly on my phone.
So, now I can keep making RTS games as I used to in sc2, the way I used to, but now I have a potential audience of a billion mobile users. Though, multiplayer may take some special efforts to implement, so I'll start with a single player game.
Good work. Interseting to see that done.
As for the multiplayer, you pretty much have to copy SC2. The way SC2 does it is pretty much the only real way to do RTS netcode, and every RTS ever has done it the same way.. DotA 2 custom games have already crashed straight into that problem and games already are suffering for it. If you do client server, as DotA 2 has, you are effectively capping how many units can be used. DotA 2 lags super hard (multi second latency) once you start ordering more than a few (100+) units to move.
As for potential users: You certainly can try to do RTS, but the controls of any mobile pretty much dictate that the pacing must be VERY slow.
nice one zolden, i switched to unity lately. hope i can show off somethin in 5 weeks too :D. i am heading more into the city building (settlers, anno) direction.
How do you connect the data? Instance variables or interfaces? I'd like to see the code of a unit.
I'm thinking about moving on to unity or UE4 after finishing my sc2 project.
Links are simply ints. Ints have names through enum type. So, to give a weapon to a unit, I just do orc.weapon = weaponTypes.orcWeapon. Same for weapon effects, orcWeapon.effect = effectTypes.orcDamage. All connections made this way. It's easy to implement, easy to use.
When weapon shoots, effect number is being passed, and static class, that handles effects does the code for the effect. For example, damage simply calculates damage and passes it to target.damage. Search uses physics2D api to get the array of units in the area, sorts it based on sorting criteria and applies the effect based on max target count of the search effect.
Unit's code is too big, but in terms of data it has some interface, like damage(), addBehavior(), and also has timers for weapons and abils cooldowns, behaviors are structs, that contain behavior's life timers, periodic effects, etc.
I can say, that there was nothing complex at all, everything is very simple, because of the way the whole system divided to the modules. That's the power of data. The only thing I had to think was pathfinding. I didn't use any traditional algorithms, just 2d physics + a state machine script, to walk around obstacles. And looks like the fight goes as smooth as sc2 ones go, even if there's a big crowd, they walk smart withoug annoying the player of not being able to find the path to the closest target.
Depends on your project, for the start you may want to try something simple, than sc2 project. Depends on the project, though, some have arcanoid or tetris as sc2 projects. Coding architecture matters alot, it's easy to turn the project to a mess. I created a simple 2d space shoot'em up kind of game to learn, and it was both hard and useful to figure out most pitfalls and ways to handle them.
Yea. And the more I work on this game, the more I see how good the solutions sc2 has in all possible rts components are.
This is true. Sad, mobiles don't have controllers widely spread, it would make some arcades be controlled so much better. I once played the good old Contra on my phone, and the controls were aweful. For RTS it's even harder to come up with something convenient. I remember the suffering when I tried Dune2 on Sega after playing it alot on PC.
But in this particular case it will be a TD game with "build a tower once a wave" kind of responsibility for the player. So realtime battles will happen automatically. Maybe player will have a spell to cast once, like aoe slow behavior apply or something like that. It's easy to do with touch screen.
My first shmup game took months, so just keep learning, it doesn't matter at start, how fast you go, you'll be fine after a year of intense unity using. And the genre you're heading into is pretty popular these days, easy to monetize. If you wnat a nice example, try DomiNations game. It is created by Big Huge Games - the best RTS studio (yes, I think they beat Blizzard), and their solutions for controls and interface may lead you the right way.
In regards to mobile, I think you would just need to make something similar to rts, but not quite the same. I think it could greatly benefit from squad type units like in the star wars empire at war games. Perhaps even instead of microing individual units/squads, you could give all military units a general order to attack north/south/east/west/come home/etc.
RTS are indeed difficult because you have to deliberately design the units around the engine and its limitations. Also the netcoding is really what define an RTS.
Hi, it really nice to hear that! Congrats on the Unity RTS.
I kind of went the opposite route: I have an idea of a multiplayer video game and I started with Unity. However, there is a big amount of work to do with unity before even thinking of game design. It seems to have taken you only 6 weeks or so, that's impressive!
My strategy is to first develop the game using the sc2 engine, try to improve the game design in there and gather players around it. It makes a nice proof of concept before even implementing the whole RTS in Unity or Unreal Engine. I think overall it will save me time. Anyway, I'm interest in general in building RTS games with unity. Did you think of sharing/selling your Unity RTS code base?
Ok, all these months I've been working on the game utilizing the engine, and things are really getting together lately, so there's a video of the gameplay. The game is not ready yeat, but the level part is prettu much playable.
Yes, great plan! Sc2 editor is a high level development environment, and helps to implement game ideas pretty fast. And players in battle net can provide lots of precious feedback. In my case it is actually the same scenario. I created the game in SC2, it proved to be fun, now I'm making it for mobiles to widen the audience. It doesn't mean I will keep creating things in sc2 editor, I found ways to work really fast with unity. But still sc2 editor is a great tool to improve game design skills.
Yes, it's possible. This engine's developer interface is actually very, very close to the Data stuff of SC2. There are units, weapons, effects of all kinds, behaviors, validators - just all we used to use in the editor, and the connections between those things are similar to the editor. And the engine itself is pretty optimized, and doesn't generate any performance issues even for mobiles.
And another showcase video of the abils of the units.
i hope you didn't make that 3d models by youreself too :D If thats the case, holy shit, thats a tremendous amount of work. How long did it take?
@abvdzh: Go
Yes, models are not mine, some are from asset store, some from TaylorMouse or my modeller.
The amount of time to implement this RTS engine itself is about 2 months. This two months period was the only additional step I had to make if we compare to the development in sc2 editor. The rest of time, about 6 months, was spent on "data" work to implement units and their abils in the engine, same as we do in sc2. Also UI, some additional things like map generation, eco, mines, upgrades, waves, kill rewards...
you must be somewhat skilled in c#, which i have no clue about Xd.
I am working on the main castle model for the game. Here you can see the wip=)
no no no
retopo and bake done!