PHYSICS WARS
By: Sevion
Version: IN DEVELOPMENT
By: Sevion
Version: IN DEVELOPMENT
Description:
Physics Wars is a 3v3 massive unit battle map in which you can control the very forces of physics. The level of your hero determines the weight of your physics powers. If you and your opponent both attempt to affect gravity on the same unit, then the user with the higher level will have more weight in affecting the outcome. If you have an ally helping, your team's weight affecting the outcome increases exponentially. Along with your hero levels. The number of units being affected also affects this. The more units, the farther stretched your powers become and the weaker you are. The more focused your powers, the stronger it becomes. Range is another prospect. There are just so many factors in determining your power. Can you predict them all? Doubtful.
This game is a game of which will require micromanagement skills beyond those of the average Joe. However, you might survive, if you're lucky. Micro your troops and buff them with your physics powers to crush the forces of your enemy!
Info:
Your stronghold will spawn units over time according to the currently selected spawn-type.
There will be four races, each with four unit-types:
Humans: Footmen, Rifleman, Knights, Siege Engine
Orcs: Grunts, Headhunters, Tauren, Demolisher
Night Elves: Archer, Huntress, Mountain Giant, Glaive Thrower
Undead: Ghouls, Crypt Fiends, Abomination, Meat Wagon
Each unit will have its strengths and weaknesses.
Both races also have strengths and weaknesses:
Humans: 5% Increased Income, Age Development
Orcs: 5% Increased Health, Beast Alliances
Night Elves: 10% Increased Spawn Rate At Night, Night Bonuses
Undead: 5% Increased Attack Speed, Life Leech
*Subject to Change
Progress:
Terrain:
Triggers:
Systems:
Units:
Items:
Total:
Features:
Promotion System:
Have a footman whose survived many battles? Taken a liking to them? Now you can give them a promotion! However, you don't, moreover the system will automatically select units and give them promotions based on time alive and more!
Unlimited Selection System:
Ever felt that it was stupid how you could only select a maximum of 12 units? Wanted to order your ENTIRE army to attack? Well, in Physics Wars, you CAN. In Physics Wars, you can select your entire army, set a low friction buff and speed across the land at your enemy and even split orders across the entire army! How cool would that be? How to do this? You'll have a bar with an icon of all of your units, and in that bar, you'll be able to click on a specific group (categorized by unit-type, but can be mixed :O) and order that specific group to do something. You will have controls to divide and combine groups as well as groups of different types
Concept Image:
Current Draft:
If you can't read, it says:
Abom (Abomination), Archer, Ftmn (Footman), Add, Subtract, Divide, Separate.
Basically, you can select a group of aboms then divide it into 2 groups, then divide an archer group, select an abom group and an archer group, then add. Baboom! You got 4 groups: Abom, Archer, Abom+Archer, Ftmn! Then click separate on Abom+Archer to make Abom, Abom, Archer, Archer, Ftmn! And whatever!
Don't worry about concept image ugliness. It'll look better in the end o_o'
Projectile System:
That's right. All units with any special ability that have to do with projectiles will be controlled by a projectile system made by cleeezzz.
Camera System:
Custom Camera System. You ask why? DGUI requires it. However, it's not bad. Differences are noticeable between this camera and regular camera, but it's nothing serious. Speeds are about the same at 75 WC3 Units per 0.0325 timer seconds. It works by locking the camera to a unit and moving the unit via a timer at 0.0325 intervals to position of unit + 75 towards the correct angle.
And, yes, it does work with diagonal
Physics System:
And last, but not least, a physics system to control Gravity, Friction, Inertia, Time & Space. Gravity to slow your enemies and increase damage on hits etc. Friction to increase or slow movements. Want to stop units in their tracks? Raise gravity and increase friction! Want to stop time in a specific area? Then do it! Because you can!
Team
- Sevion
- Infinitegde
- cleeezzz
- Renendaru
- Nitheral
Helpers:
- Frozenhelfir
Snippets
Here is a snippet from the last updated item
If you feel like some parts of the code seem to be missing, that's because it is. I cut the code only to show you a single part of it
JASS:
private function MoveCameraR takes nothing returns nothing
call SetUnitPosition(LOCK[GetPlayerId(GetTriggerPlayer())], GetUnitX(LOCK[GetPlayerId(GetTriggerPlayer())]) + SPEED * Cos(0 * bj_DEGTORAD), GetUnitY(LOCK[GetPlayerId(GetTriggerPlayer())]))
endfunction
private function MoveCameraL takes nothing returns nothing
call SetUnitPosition(LOCK[GetPlayerId(GetTriggerPlayer())], GetUnitX(LOCK[GetPlayerId(GetTriggerPlayer())]) + SPEED * Cos(180 * bj_DEGTORAD), GetUnitY(LOCK[GetPlayerId(GetTriggerPlayer())]))
endfunction
private function MoveCameraU takes nothing returns nothing
call SetUnitPosition(LOCK[GetPlayerId(GetTriggerPlayer())], GetUnitX(LOCK[GetPlayerId(GetTriggerPlayer())]), GetUnitY(LOCK[GetPlayerId(GetTriggerPlayer())]) + SPEED * Sin(90 * bj_DEGTORAD))
endfunction
private function MoveCameraD takes nothing returns nothing
call SetUnitPosition(LOCK[GetPlayerId(GetTriggerPlayer())], GetUnitX(LOCK[GetPlayerId(GetTriggerPlayer())]), GetUnitY(LOCK[GetPlayerId(GetTriggerPlayer())]) + SPEED * Sin(270 * bj_DEGTORAD))
endfunction
private function MoveCamera takes nothing returns nothing
if GetTriggerEventId() == EVENT_PLAYER_ARROW_RIGHT_DOWN then
call TimerStart(TIMER[0], 0.0325, true, function MoveCameraR)
elseif GetTriggerEventId() == EVENT_PLAYER_ARROW_LEFT_DOWN then
call TimerStart(TIMER[1], 0.0325, true, function MoveCameraL)
elseif GetTriggerEventId() == EVENT_PLAYER_ARROW_UP_DOWN then
call TimerStart(TIMER[2], 0.0325, true, function MoveCameraU)
elseif GetTriggerEventId() == EVENT_PLAYER_ARROW_DOWN_DOWN then
call TimerStart(TIMER[3], 0.0325, true, function MoveCameraD)
elseif GetTriggerEventId() == EVENT_PLAYER_ARROW_RIGHT_UP then
call PauseTimer(TIMER[0])
elseif GetTriggerEventId() == EVENT_PLAYER_ARROW_LEFT_UP then
call PauseTimer(TIMER[1])
elseif GetTriggerEventId() == EVENT_PLAYER_ARROW_UP_UP then
call PauseTimer(TIMER[2])
elseif GetTriggerEventId() == EVENT_PLAYER_ARROW_DOWN_UP then
call PauseTimer(TIMER[3])
endif
endfunction
private function ini takes nothing returns nothing
set t = CreateTrigger()
call TriggerRegisterPlayerEvent(t, GetLocalPlayer(), EVENT_PLAYER_ARROW_RIGHT_DOWN)
call TriggerRegisterPlayerEvent(t, GetLocalPlayer(), EVENT_PLAYER_ARROW_LEFT_DOWN)
call TriggerRegisterPlayerEvent(t, GetLocalPlayer(), EVENT_PLAYER_ARROW_UP_DOWN)
call TriggerRegisterPlayerEvent(t, GetLocalPlayer(), EVENT_PLAYER_ARROW_DOWN_DOWN)
call TriggerRegisterPlayerEvent(t, GetLocalPlayer(), EVENT_PLAYER_ARROW_RIGHT_UP)
call TriggerRegisterPlayerEvent(t, GetLocalPlayer(), EVENT_PLAYER_ARROW_LEFT_UP)
call TriggerRegisterPlayerEvent(t, GetLocalPlayer(), EVENT_PLAYER_ARROW_UP_UP)
call TriggerRegisterPlayerEvent(t, GetLocalPlayer(), EVENT_PLAYER_ARROW_DOWN_UP)
set TIMER[0] = CreateTimer()
set TIMER[1] = CreateTimer()
set TIMER[2] = CreateTimer()
set TIMER[3] = CreateTimer()
call TriggerAddAction(t, function MoveCamera)
endfunction
Screenshots
Date-08-31-09
Date-09-01-09
Date-09-01-09
Date-09-01-09
Date-09-02-09
Slideshow:
Conclusion
So, as you can probably see, I've really got my work cut out for me But, I believe, that if I do this right, it can be a really really challenging and fun game ^_^
I just gotta hope I pull through ^_^'
I think that's everything, if there's any questions, feel free to ask.
When I release Physics Wars, it will be ENTIRELY OPEN SOURCE!