...but I have some concerns I want addressed first.
After learning of autodesk giving free 3-year licenses of it's most popular products to students (including 3dsmax!) I have decided to do a custom-content heavy map for starcraft 2. I want to make a "the thing" map (obviously it won't be called that, I'll have to change the name, and some of the themes).
I want it to have fairly decent graphics, so I'll be making tiles for the interior to be constructed out of similar to how Amnesia: The Dark Descent works. (video here ).
Question #1: How speedily can Starcraft II draw things in a first person viewpoint? For instance, If I'm staring straight at a wall, is it smart enough to not render the hundreds of things on the other side of the wall. If not, is there a way I can cheat this system to make it work better for this particular need?
Question #2: I want it to have fairly decent graphics, BUT being an RTS game, I'm sure it isn't optimized for different LoDs of models (Level of Detail). Is there a way to get this functionality into the game? For instance, an object far away will render with a much less-detailed mesh than an object up close. I'm thinking I'll probably create 4 different LoDs for each object. I'm thinking I can get this to work through triggers if there's a way to show/hide objects for ONLY a certain player (and ideally, not having any net traffic for this as it's purely graphics related, not gameplay related). I'm wondering though if there's a better solution possible with the data editor...
Question #3: Luckily, this game won't hinge too much on the need for super responsive controls (which I KNOW Starcraft II is not well suited for). BUT! At the same time, I'm wondering how far can I push this? Accurate aiming. Does Starcraft II have the capabilities required to do hit tests on a model (ie from the center of another player's screen, is the bullet hitting the model, or just missing it and hitting the wall behind it?) It's not THAT big of a deal if I have to just use a sphere to act as the collision detector, I'd just love to have it be more accurate with hit detection.
Question #4: Is there a file size limit for Starcraft II maps? I'm not sure how crazy I'll go with details, but I want to know ahead of time if I need to be strategic about where the effort goes.
Thank you all for your patience, and I look forward to your answers.
Think it renders everything. However, removing doodads not in your LoS could reduce the lag. Also, create fog. And lots of it. It's not like CoD where something in the distance is rendered in low poly until you get to it.
See 1. However, there are ways of hiding doodads for each player.
I think SC2 already supports 'accurate aiming' (To a degree). Theres no way to test whether Player X got a headshot etc, but I think it already has good collision detection for the built-in missiles.
10MB per map I think is the file limit right now, with a maximum of around 54 in total, with a maximum of 10 maps/ mods uploaded to bnet. Pretty crappy limits unfortunately :(
Edit: Apparently the max limit for everything is 54mb, not 20 ^^
If it comes down to that then he should make sure it's perfect and won't require much updates. If it is constantly updating then nobody will want to play. But if it's one update every month or so then it won't be that bad.
@Vexal
I know it's not rendering what's not visible, but what I was getting at was if it checks objects behind the wall for rendering. Not sure of the exact terminology, but since SC2 isn't specifically designed for a non-topdown view, I can't see why they would try to optimize this.
It sounds like I'm going to have to create my own LoD system for SC2... this could be difficult.
It's not just for doodads either, I'd need to be able to display lower poly versions of UNITS as well. I'm thinking I'll have to have the system work to where there's no real interaction between units except through triggers affecting an invisible unit that the art follows around.
Time to get into specifics: How can I have... for example... player 1 see a high poly model because it's close, but player 2, being further way, sees a different, must lower detailed model? I assume I'll have to use separate units to achieve this.... or OH OH Is there a way to do this with actor events in the data editor??? Like I'm thinking it'll function like an upgraded unit (ie zergling vs zergling with wings... same unit, different model), and I can just use actor messages to toggle between detail levels. Does this sound feasible?
For the aiming, I may just scrap that and take the emphasis off of combat, and more on the player interactions with each other. There will still be combat, but it'll be where accuracy doesn't matter much like melee weapons or flamethrowers or shotguns.
LazyCoder, I hope you actually know what you are doing. Making levels aren't as fast as snappe as they make it look in the video, obviously what they failed to mention was all the models they used had to be made, textured and some animated, and I seriously SERIOUSLY doubt they could script an inventory, movement, timer ect. in 8 minutes, if so, I bet it was while the earth stood still.
Time to get into specifics: How can I have... for example... player 1 see a high poly model because it's close, but player 2, being further way, sees a different, must lower detailed model? I assume I'll have to use separate units to achieve this.... or OH OH Is there a way to do this with actor events in the data editor??? Like I'm thinking it'll function like an upgraded unit (ie zergling vs zergling with wings... same unit, different model), and I can just use actor messages to toggle between detail levels. Does this sound feasible?
No it doesn't.
First of all not many Sc2 models have low-poly versions of themselves included, with the exception of some special effects.
Secondly I don't think (I don't know for sure though) that you can simply change the quality on-the-fly via actor messages.
Imo let Sc2 take care of this. You just make sure that all units which are not on-screen are hidden. Even if units don't get rendered they'll still require CPU power to be managed.
And I'm also not so sure if Sc2 hides polygons behind polygons. So hiding units in other rooms probably is a good idea.
Or you could just test it lol.
LazyCoder, I hope you actually know what you are doing. Making levels aren't as fast as snappe as they make it look in the video, obviously what they failed to mention was all the models they used had to be made, textured and some animated, and I seriously SERIOUSLY doubt they could script an inventory, movement, timer ect. in 8 minutes, if so, I bet it was while the earth stood still.
Oh no I was simply using that video to show how the art assets sort of link together like that, as opposed to traditional level editing where you pretty much model out the whole level. I completely understand that this is quite an undertaking, and I am well prepared to make all the art assets and everything for this map. :)
No it doesn't.
First of all not many Sc2 models have low-poly versions of themselves included, with the exception of some special effects.
Secondly I don't think (I don't know for sure though) that you can simply change the quality on-the-fly via actor messages.
Imo let Sc2 take care of this. You just make sure that all units which are not on-screen are hidden. Even if units don't get rendered they'll still require CPU power to be managed.
And I'm also not so sure if Sc2 hides polygons behind polygons. So hiding units in other rooms probably is a good idea.
Or you could just test it lol.
But what do you mean let starcraft 2 handle this? It can only handle so much, and I don't want this thing to run slowly. Remember, the change in quality is only changing the model, just like the upgraded zergling is a different model to the regular zergling.
I'll definitely be testing this out when I get some free time... school is a real time-sucker...
EDIT: Only problem with me testing it out is... frankly my computer is a BEAST! Just because it runs fine on my computer... well that's not saying much...
Graphics cards automatically clip polygons that are not projected onto the viewing plane (polygons that are outside the field of view).
However, in order for the polygon to be removed from rendering in the first place, it still has to be sent to the video card so the card can determine whether to remove it from the final rendering stage. This takes some processing power.
As far as I know, every modern graphics engine uses some form of a data structure (for example this: http://en.wikipedia.org/wiki/Binary_space_partitioning) to determine which polygons are visible by the camera. Doing so prevents hidden polygons from ever being sent to the graphics card in the first place.
This is why looking at intense battles causes framerate stutter, but when you look away, the lag clears up.
I put down a wall doodad and a nice cliff to hide a huge rave party of over 1000 units (bcs and acid banelings :3) and saw how the FPS changes:
Entire army visible on-screen: 11 FPS
Entire army hidden by doodad: 11 FPS
Entire army hidden by a wall: 11 FPS
Entire army in the fog-of-war: 60 FPS
Entire army off-screen: 100 FPS
As I expected. As long as a unit is in the possible field of view (and not in fog-of-war) it'll be displayed.
You don't necessarily need such features in a top-down RTS game, I guess. So they didn't include it in the first place.
You just make sure to hide all units in different areas and let Sc2 handle everything visible.
Sc2 is pretty efficient in showing large numbers of units. I doubt you can boost efficiency a lot via triggers/data.
I think you're putting too much thought into it.
Sure it'll probably lag in huge areas, but Sc2 just isn't a FPS engine at all. It's not made for these tasks.
Also - upgrades are synchronous for all players. If you change the lings model then it'll change for all other players too (I think). And there still aren't any low-res models of units available.
Ah, I suppose I spoke too soon, then. However, I agree with the above poster. Just put fog of war in rooms you're not currently in. FPS don't generally have thousands of units on the screen at once (which the sc2 engine can fairly easily handle) so I would not worry.
Your first priority should be the controls. Lag is inivetible. You have to design your game from the ground up to have gameplay that is not hurt by lag.
With my map, there may be only 6 or 7 units at a time, albeit highly detailed units at that! :D
What I'm thinking about doing is just having 4 different units working for each character (1 for each LOD) and just showing/hiding them for each player as needed.
With my map, there may be only 6 or 7 units at a time, albeit highly detailed units at that! :D
What I'm thinking about doing is just having 4 different units working for each character (1 for each LOD) and just showing/hiding them for each player as needed.
Try normally first. Even if it's detailed units, 6-7 shouldn't be much of a chore for the system.
If it's multiplayer then just make sure you have fog-of-war where you can't see.
If it's singleplayer then hide the units entirely where you can't see.
But I honestly wouldn't fiddle with using different actors for the same unit before you determined that the "normal" way doesn't work.
Make me proud of your name, be a lazy coder!
...but I have some concerns I want addressed first.
After learning of autodesk giving free 3-year licenses of it's most popular products to students (including 3dsmax!) I have decided to do a custom-content heavy map for starcraft 2. I want to make a "the thing" map (obviously it won't be called that, I'll have to change the name, and some of the themes).
I want it to have fairly decent graphics, so I'll be making tiles for the interior to be constructed out of similar to how Amnesia: The Dark Descent works. (video here ).
Question #1: How speedily can Starcraft II draw things in a first person viewpoint? For instance, If I'm staring straight at a wall, is it smart enough to not render the hundreds of things on the other side of the wall. If not, is there a way I can cheat this system to make it work better for this particular need?
Question #2: I want it to have fairly decent graphics, BUT being an RTS game, I'm sure it isn't optimized for different LoDs of models (Level of Detail). Is there a way to get this functionality into the game? For instance, an object far away will render with a much less-detailed mesh than an object up close. I'm thinking I'll probably create 4 different LoDs for each object. I'm thinking I can get this to work through triggers if there's a way to show/hide objects for ONLY a certain player (and ideally, not having any net traffic for this as it's purely graphics related, not gameplay related). I'm wondering though if there's a better solution possible with the data editor...
Question #3: Luckily, this game won't hinge too much on the need for super responsive controls (which I KNOW Starcraft II is not well suited for). BUT! At the same time, I'm wondering how far can I push this? Accurate aiming. Does Starcraft II have the capabilities required to do hit tests on a model (ie from the center of another player's screen, is the bullet hitting the model, or just missing it and hitting the wall behind it?) It's not THAT big of a deal if I have to just use a sphere to act as the collision detector, I'd just love to have it be more accurate with hit detection.
Question #4: Is there a file size limit for Starcraft II maps? I'm not sure how crazy I'll go with details, but I want to know ahead of time if I need to be strategic about where the effort goes.
Thank you all for your patience, and I look forward to your answers.
Edit: Apparently the max limit for everything is 54mb, not 20 ^^
@wOlfLisK: Go
Modern graphics engines absolutely do not render polygons not on screen, nor polygons behind other polygons.
@LazyCoder: Go
You can use mods to work around the file size limit, but I'm not sure it can be uploaded to battle.net if its that big. (2? minute upload limit)
@Usernameisntworkingright: Go
If it comes down to that then he should make sure it's perfect and won't require much updates. If it is constantly updating then nobody will want to play. But if it's one update every month or so then it won't be that bad.
@Vexal I know it's not rendering what's not visible, but what I was getting at was if it checks objects behind the wall for rendering. Not sure of the exact terminology, but since SC2 isn't specifically designed for a non-topdown view, I can't see why they would try to optimize this.
It sounds like I'm going to have to create my own LoD system for SC2... this could be difficult.
It's not just for doodads either, I'd need to be able to display lower poly versions of UNITS as well. I'm thinking I'll have to have the system work to where there's no real interaction between units except through triggers affecting an invisible unit that the art follows around.
Time to get into specifics: How can I have... for example... player 1 see a high poly model because it's close, but player 2, being further way, sees a different, must lower detailed model? I assume I'll have to use separate units to achieve this.... or OH OH Is there a way to do this with actor events in the data editor??? Like I'm thinking it'll function like an upgraded unit (ie zergling vs zergling with wings... same unit, different model), and I can just use actor messages to toggle between detail levels. Does this sound feasible?
For the aiming, I may just scrap that and take the emphasis off of combat, and more on the player interactions with each other. There will still be combat, but it'll be where accuracy doesn't matter much like melee weapons or flamethrowers or shotguns.
Whew this is going to be a bit of work!
LazyCoder, I hope you actually know what you are doing. Making levels aren't as fast as snappe as they make it look in the video, obviously what they failed to mention was all the models they used had to be made, textured and some animated, and I seriously SERIOUSLY doubt they could script an inventory, movement, timer ect. in 8 minutes, if so, I bet it was while the earth stood still.
Maybe 10 :3
No it doesn't.
First of all not many Sc2 models have low-poly versions of themselves included, with the exception of some special effects.
Secondly I don't think (I don't know for sure though) that you can simply change the quality on-the-fly via actor messages.
Imo let Sc2 take care of this. You just make sure that all units which are not on-screen are hidden. Even if units don't get rendered they'll still require CPU power to be managed.
And I'm also not so sure if Sc2 hides polygons behind polygons. So hiding units in other rooms probably is a good idea.
Or you could just test it lol.
Oh no I was simply using that video to show how the art assets sort of link together like that, as opposed to traditional level editing where you pretty much model out the whole level. I completely understand that this is quite an undertaking, and I am well prepared to make all the art assets and everything for this map. :)
But what do you mean let starcraft 2 handle this? It can only handle so much, and I don't want this thing to run slowly. Remember, the change in quality is only changing the model, just like the upgraded zergling is a different model to the regular zergling.
I'll definitely be testing this out when I get some free time... school is a real time-sucker...
EDIT: Only problem with me testing it out is... frankly my computer is a BEAST! Just because it runs fine on my computer... well that's not saying much...
Graphics cards automatically clip polygons that are not projected onto the viewing plane (polygons that are outside the field of view).
However, in order for the polygon to be removed from rendering in the first place, it still has to be sent to the video card so the card can determine whether to remove it from the final rendering stage. This takes some processing power.
As far as I know, every modern graphics engine uses some form of a data structure (for example this: http://en.wikipedia.org/wiki/Binary_space_partitioning) to determine which polygons are visible by the camera. Doing so prevents hidden polygons from ever being sent to the graphics card in the first place.
This is why looking at intense battles causes framerate stutter, but when you look away, the lag clears up.
So I just ran a test.
I put down a wall doodad and a nice cliff to hide a huge rave party of over 1000 units (bcs and acid banelings :3) and saw how the FPS changes:
Entire army visible on-screen: 11 FPS
Entire army hidden by doodad: 11 FPS
Entire army hidden by a wall: 11 FPS
Entire army in the fog-of-war: 60 FPS
Entire army off-screen: 100 FPS
As I expected. As long as a unit is in the possible field of view (and not in fog-of-war) it'll be displayed.
You don't necessarily need such features in a top-down RTS game, I guess. So they didn't include it in the first place.
@LazyCoder: Go
You just make sure to hide all units in different areas and let Sc2 handle everything visible.
Sc2 is pretty efficient in showing large numbers of units. I doubt you can boost efficiency a lot via triggers/data.
I think you're putting too much thought into it.
Sure it'll probably lag in huge areas, but Sc2 just isn't a FPS engine at all. It's not made for these tasks.
Also - upgrades are synchronous for all players. If you change the lings model then it'll change for all other players too (I think). And there still aren't any low-res models of units available.
Ah, I suppose I spoke too soon, then. However, I agree with the above poster. Just put fog of war in rooms you're not currently in. FPS don't generally have thousands of units on the screen at once (which the sc2 engine can fairly easily handle) so I would not worry.
Your first priority should be the controls. Lag is inivetible. You have to design your game from the ground up to have gameplay that is not hurt by lag.
With my map, there may be only 6 or 7 units at a time, albeit highly detailed units at that! :D
What I'm thinking about doing is just having 4 different units working for each character (1 for each LOD) and just showing/hiding them for each player as needed.
I suggest you make your game with out any assests.... so you know it will work in the first place.
Once you have it working move on to assests.
If you want a good idea of what can be possible search "project vector" they have a lot of demo videos of thier project that is amazing
Try normally first. Even if it's detailed units, 6-7 shouldn't be much of a chore for the system.
If it's multiplayer then just make sure you have fog-of-war where you can't see.
If it's singleplayer then hide the units entirely where you can't see.
But I honestly wouldn't fiddle with using different actors for the same unit before you determined that the "normal" way doesn't work.
Make me proud of your name, be a lazy coder!
Okay well I got the LoD system working, as well as a random map generator. :D Now to replace the placeholder art with actual art...