Advertisement

Levels of Abstraction

Started by March 29, 2009 08:02 PM
50 comments, last by Platinum_Dragon 15 years, 10 months ago
I would say that your definition has open my eyes towards the difference. What I use to define my definition was originally the scale of warfare, and therefore there is a blur line that cannot differentiate the difference in certain situations, but your definition has a greater clarity then my definition.
I use QueryPerformanceFrequency(), and the result averages to 8 nanoseconds or about 13 cpu cycles (1.66GHz CPU). Is that reasonable?
I though that the assembly equivalent to accessing unaligned data would be something similar to this order:

  • move
  • mask
  • shift
  • move
  • mask
  • shift
  • or

    So it seems reasonable to say that it takes 14 cycles for unaligned data since we'll have to do the series of instructions once to access and once to assign?
Actually, in your definition, once you have defined "combat", every decision within combat are Tactical:

Strategy: Choice of objectives given an objective outside combat

Tactics: Choice of objectives given an objective during combat

(In the last set of definitions, I don't need to define what combat is)





Advertisement
The design is still at a problematic stage (to program). I know that in order to implement this design would require low level language (if we are to program it) because of the shear amount of AI neccessary to control millions of variables.

The player thus will only command the units at the highest scale, that is, the movement of the units within the strategic map with the detail combat control by the AI. The choice of controlling at the tactical level or lower is up to the player. Different than other games, combat should be in real scale, that is, a battle only occurs once every few months and last at most three full days long. The design then becomes a full scale simulation of war, with the player's choice of how detail they want to command.

I use QueryPerformanceFrequency(), and the result averages to 8 nanoseconds or about 13 cpu cycles (1.66GHz CPU). Is that reasonable?
I though that the assembly equivalent to accessing unaligned data would be something similar to this order:

  • move
  • mask
  • shift
  • move
  • mask
  • shift
  • or

    So it seems reasonable to say that it takes 14 cycles for unaligned data since we'll have to do the series of instructions once to access and once to assign?
Quote:
In order for true strategy, turn base does not work. You need real time in real scale. That is the time limit is in monthes per turn in a way to speak. Having a turn that has a time limit of like say a month is still timed based and not turn based. What needs to occur is a limit of time to real world constraints that occur in real situtations. In real situations, you will have monthes to decide something, but in most games, that decision is in a few moments. What needs to occur is this real time constraints, of having the proper time scale. On the scale that I describe, it is posible to manage without turn base because real people have always handle the situation and have no problems with it. If you cannot have real Generalship, then it is true that you lack skills. Remember why the larger units have administrative tasks. Why they have lower officers to help them maintain for them. If you control everything and try to be God, then of course you will have problems, but most players try to be God instead of trying to be a General. In other words, players keep thinking they do better than the AI, but they must know that there are too many things to handle and that the AI is there to help the player handle the situation. Like true Generalship, you will have to trust your officers to handle the task so that you do not do everything. A true general only commands those directly below them, not someone so much lower than them in rank. That is the chains of commands. Something that most players cannot comprehend.

The reason players don't trust the AI but micromanage is because it gives them a compelling advantage against the opponent.
No, they don't trust the AI that developers make. If you have the choice to use an AI to do the micromanage, then the other player too has that right, and therefore the only difference between two players is their strategic skills, but most players know that their strategic skills is not strong, and that like computers, they have strong micromanagement skills, so they would want to compete with their tactical/logistical skills instead of strategical skills. It will not give any compelling advantage because if a player can win against an AI as in most cases, you will see that the AI does not give any advantage because it has not master the tactical/logistical skill. Even though people say that AI has better micromanagement, the only difference between the AI and human is that the human has diminishing returns as the amount to manage increase, but the AI does not have this diminishing return (as long as your computer has enough resources to handle the larger scale), and result into having a better micromanagement in large scale, but in small scale, the AI is not as good as the player, and therefore players take over because they believe they can do better, just like how some views say that the coach of a sports game suck, and that doing xyz is better.

If one form of micromanage is better, then how about other forms? and therefore, you can say that the economy of the player exceeds that of the AI at any moment in time. The player has a distinctive advantage over any forms of micromanagement the AI can ever do. It is just that the human player cannot do everything at once, but the AI can do many things at once.

I use QueryPerformanceFrequency(), and the result averages to 8 nanoseconds or about 13 cpu cycles (1.66GHz CPU). Is that reasonable?
I though that the assembly equivalent to accessing unaligned data would be something similar to this order:

  • move
  • mask
  • shift
  • move
  • mask
  • shift
  • or

    So it seems reasonable to say that it takes 14 cycles for unaligned data since we'll have to do the series of instructions once to access and once to assign?
Is there a reason that the game is single player? It seems that it would be easier to make as a multiplayer game, like EVE.


Some differentiation of roles:

Soldier:
o Can shoot at their assigned target

Captain:
o Can order a retreat during a fight.
o Can assign the targets of each soldier
o Can assign weapon for each soldier

General:
o Can order a Captain to move its men to a cell on the map
o Can assign equipment and supplies to Captains




















Advertisement
As you see, this is only a design. I don't have a team, nor do I know programming. Why do others assume something of this game. This game design has not specified yet for the amount of players. It could even be MMORTS if I say it can be. A game design is only a design. It should therefore be able to apply to any amount of players that can be suited.

Nice ideas Wai. It would be good to be a multiplayer game because then you will have players compete, and they can develop good dynamic strategies. AI factions tend to have static strategies, so multiplayer is a good way to go. Also, if a game is develop to be multiplayers, it can be easier to balance the game towards beginners or experts with different stat sets based on the skill level of the players. The stat sets of units in beginner mode is different than expert mode for a balance game. Making this game into an MMORTS is not difficult. Each player only control one player at the beginning, so they can view it as an MMORPG (first person perspective, maybe even MMOFPS) at the beginning. Then the players can move up ranks and towards MMORTT and finally towards MMORTS. A player's army could therefore be made of other players or AI units, and there can be lots of interactions. And realistic battles can occur if we limit the player to only control their own character. That way, their officers wheather AI or another player will have the choice to follow the command or not, but usually the AI officers will follow the commands of the player.
I use QueryPerformanceFrequency(), and the result averages to 8 nanoseconds or about 13 cpu cycles (1.66GHz CPU). Is that reasonable?
I though that the assembly equivalent to accessing unaligned data would be something similar to this order:

  • move
  • mask
  • shift
  • move
  • mask
  • shift
  • or

    So it seems reasonable to say that it takes 14 cycles for unaligned data since we'll have to do the series of instructions once to access and once to assign?
I think that if the game could be a multiplayer game, then the fundamental design is on establishing a social ladder and incentives for and against a player joining an army. The following is a somewhat simplified design in the context of mercenaries with only three levels of hierarchy:

Soldier:

The player of a soldier invests in his own equipment using the money he got from the conflict (getting paid by the commander or by looting the enemy). A soldier could select to rout during any battle. A routing solder can be shoot by either side. The record of that soldier would show the number of times it had routed from a battle. The advantage of routing is that the soldier gets to keep his money, and equipment. The disadvantage is that he might be rejected from joining a force later on. A free soldier could join any army at the discretion of the army. A free soldier could also choose to start an army by recruting people.

Commander - Captain:

The player character of a Captain also exists on the battlefield during a battle. In addition to being able to shoot at enemies, the Captain has the power to order an retreat from the battle stage. This allows the team to save itself. Retreats show up on a Captain's record until a higher ranking officer (General) excuses that retreat. A Soldier is promoted to be a Captain when a Captain recommends the Sodlier to the General. A Captain could be demoted back into a Soldier.


Commander - General:

The player character of a General does not necessarily exist on a battlefield. A General has the choice to stay at a base or be on the frontline. A General chooses the battle locations of a force led by a Captain. A Captain and his soldiers cannot fight anywhere other than the stage assigned by the General. There is only one General per army. Captains are free to leave a General. A General could appoint a Captain to take his place. Each army must have a General. The General would take the role of a Captain if there is no other Captain. If the General of an Army dies, all of its subordinates and territories would become non-affiliated. The maximum size of a platoon (led by a Captain) is 8 player characters. The maximum number of platoons that can fight on the same side on a battle stage is 3 (3 Captains on the same side plus 24 Soldiers).

(Note: since a General has the absolute power to demote Captains, the General could declare additional hierarchy and ranks among the Captains so that some Captains must listen to their higher ranking Captains. The game itself does not provide special privileages for these ranks, it is something the General need to sort out using the threat to demote any disobeying Captain.)


Movement:

The world is a grid of 16x16 cells (square or hex), each cell can be occupied peacefully by at most 3 platoons. The General can freely travel to any connected occupied cell once per day. A General could move a Platoon once per day to a new location as long as that platoon did not pass through a cell with 3 or more friendly platoons, or enter a hostile cell. When the General moves a platoon into a hostile cell, that is where the platoon must fight until the General moves the platoon away or until the Captain of the platoon orders a retreat. A Captain stationed on a peaceful cell could also move once per day. But such movement would show up on the record so that while Automony is allowed, a General could demote a Captain if he disapproves the Captain's recklessness.

When a Platoon is sitting in a peaceful town, the Soldiers can buy and upgrade their equipments. When a Platoon is sitting in a battlefield, the Soldiers can fight and loot, set up barricades, plant mines.


Special Units:

A soldier that has earned enough money could buy special equipment to be a special unit. For the sake of simplicity, the only Special Unit available is a Tank. In terms of gameplay, the Tank is like a Soldier with heavy armor that can take many hits and run over other Soldiers, it can blow up walls and level buildings. A Captain or a General could also be a Tank. A Tank could be captured by an enemy Soldier standing on top. A soldier could process multiple tanks and could freely choose whether to play as a human or as a tank in a battle.


Lone Soldiers:

A soldier with no affiliation can only move once per day to an adjacent cell. A lone soldier cannot shoot at any affiliated soldier, but affiliated soldiers can shoot at him. Lone soldiers can still loot and buy equipment, and to start an army. A lone soldier cannot move into a battle field or any occupied areas where a General has declared to be non-treapassing.


Death:

Each soldier has certain life points that recharges at a fixed rate per day up to a maximum value. When a soldier is shot and killed it can restart at the spawn point of that stage using a life point. When all life points are used, the soldier dies for real and all of his belongings can be looted. It is up to the soldier to decide wether to rout to save his life points.


Invasion and town growth

A General can order its force to invade a peaceful town. Doing so gives the General money that he could share with his subordinates. (The actual soldiers that attack the town could also loot). Any town would upgrade itself through time and increase in value (an abandoned battlefield will return to be a peaceful town after some time). Some towns would evolve to have the industrial values to make Tanks and equipment that the players could buy.


Battle Scheduling:

When a battle should occur the defending General gets to choose the time of battle. This is a simplification to ensure that someone could be online to defend the town without relying on some complicated AI or rules. The General can change the time of defend for each occupied cell at most once per day, once it is changed, it will stay the same for at least three days as long as that cell is occupied (by either side). Once the battle conclues, no further fighting can occur during that day (but the current occupiers can still walk around on the stage, upgrade, and loot). This mechanism gives an army the chance to retake the stage at the same time the next day if they get evicted.


What do you think about a design like this?

I personally would not play a design like this because it seems that there is too much committment involved: I cannot just start the game at random time and play it. So here are some additional modifications: Players that don't want to commit too much to the game could still play as mercenaries and join an army on a battle-to-battle basis. For example, a General could schedule an invasion at a location in one week, and the local Captains would recruit fighters to fight on their side for that event. Perhaps 80% of the fighters during the battle are Mercenaries. Mercenaries fight because when they sign up the game promises their rewards. If that is the case, then for a non-committed, irregular player like me could log on, look at the grid and select a side that I want to help and fight. I suppose lone players can also select to defend unoccupied towns and earn money from the town (while some General is trying to conquer that town). The game should balance it such that only a General can start a battle, so that only committed players can decide which towns to invade. Lone players can join an invasion but do not decide where the battles are.


Generalship:

Once a player decides to be a General, he cannot destory the Generalship, he can only pass it onto a Captain. Each cell on the map can only have one General and be occupied by at most one faction. A player can only turn into a General on a cell that is not occupied by any army. If a player starts an Army at a town, the town is assigned as its territory with no bloodshed. When that happens, the player must select a window of time where battles can occur for that town. That is when the committment begins. If the town is captured, the General Dies regardless whether the General happens to be online during that time or not.

It is not necessarily turn into a General at a town. You could turn into a General in the middle of an unoccupied plain. Since soldiers's don't need to eat in this game, as long as you and your people can stay alive during the battle windows (that you assigned), that cell belongs to you. You could spend your money to build facilities on that cell to upgrade your army. You could build a town that way starting at a location that had nothing.

The catch is that once you turn into a General you cannot just "take off your star" and become a normal mercenary again. You live is tied to the battle window of the cell you are in. If you cell got run over, you die. You could pass your Star to a Captain, but that Captain must accept it. If all the Captains abandon you, then you are stuck to be killed at that cell.

[Edited by - Wai on March 30, 2009 11:05:50 PM]









The design is good, but I looking for something more Grand. That is more details.

Players have the choice of being professional soldiers or mercenaries. Mercenaries are paid to the leader of the group only. And the leader of the mercenaries pay those below them.

Every player has the potentail to be a general, but they have to learn how to command by going through up the chains of command.

AI soldiers: The bulk of the General's armies. Each AI soldier is identified with the General whom own them. These soldiers essentially make up the bulk of the players army, if they cannot find other players who are willing to coopperate with them.

Mercenaries: These soldiers are the majority member of armies. Any army will have them.

Private: The lowest level of all. These character invest their own equipments and have the ability to control at the level of FPS. They are essentially playing like an FPS game.

Private Second Class: These players are the leader of firebuddy. They have command over another character whether it is an AI character or another player that is a Private.

Private First Class: These players are leaders of firebuddy, and they are equip with better arsenal.

Corporal: These player with good luck can command fireteams of four or five members, but they are usually leader of firebuddy and second in command of fireteams.

Sergeant: These players have a choice to be a vehicle crew member or fireteam leader. As a vehicle crew member, they will be the driver of vehicles.

Sergeant First Class: These are the second in command of Platoons, as well as the logistics are handle through them.

Gunnery Sergeant: These players are the gunner of vehicles.

Master Sergeant: These officers are logistics officers of companies, helping higher officers organize their military.

First Sergeant: These officers are logistics officers of battalions, helping higher officers organize their military.

Sergeant Major: These officers are logistics officers of regiments, helping higher officers organize their military.

2nd Lieutenant: This officer either command a squad or a single vehicle.

Lieutenant: This officer commandsa platoon.

Captain: This officer commandsa company.

Major: This officer commandsa battalion.

Lieutenant Colonel: This officer commands a regiment.

Colonel: This officer commands a brigade

Major General: This officer commands a division

Lieutenand General: This officer commands a corps

General: This officer commands an army.

Each player has the right to command to attack a unit of the enemy, move the unit, or rout. It becomes the merit of a higher officer to evaluate the action of the lower officers and rate their actions.

Promotion of ranks. A player may promote any lower ranking player or AI character under their command up to the rank right below them. The promotion to Full General will require the recognition of at least three other Full Generals in your faction, and the approval of a fourth. The ranks above Full General are temporary and are assign by agreement among the Full Generals in the faction.

The world will be divided into lots of squares, and at each level will be different. With a minimum of 12 levels of command, there will be 12 separate grid for each level. At the lowest level, each individual player will ocupy a square. At the next, the unit of that level will ocupy one sqaure, etc. The movement will be using subsquares and this mechanics will distort movement slightly. Four subsquare makes up a square, but these square may be grided or offset, so that there can be both orthogonal square movement or hex movement of both vertical and horizontal hex movements, that is 12 equal directions with slight distortions (there are 3 paths that go the same rate when going a 45 degreee diagonal).

Death. Similar to FPS, you will respawn with nothing, but the respawn points are the contested lands. That is right near the front lines. Each soldier has 100 HP, and a weapon of the same level as their armor will do 20 HP damage.
Damage = (Weapon Level - Armor Level) * 5 + 20. If Damage <= 0 by the formula, then it will do 1 damage.

Body armor: There are only 5 levels of body armor. Level 1, 2, 3, 4, and 5.
Vehicle armor: There are only 5 levels of vehicle armor. Level 6, 7, 8, 9, and 10.

Vehicles include Light Tanks, Medium Tanks, Heavy Tanks, Artillerys, Rockets.

Towns are usually managed by the NPCs, but if the player wants to involve in the development of the settlements, then they can. Generals may want to "tax" the cities to earn money for their campaigns, or loot from battle, which is what the soldiers usually do when the conquer another settlement. Generals can demand military facilities be built in these towns. Military Facilities will generate AI characters for that General's army.

Player may also put bounties on the heads of other characters AI or player for any reason as long as they have the wealth to do so. Assassination, and diplomatic relation are also allow to be establish. Controlling the buildings in a settlement is up to Generals, and the fortifications of these settlements are also up to the Generals.

Battling: This is the most complex of all. Generals may choose to be honorable general and announce their attack of other settlements, and the defending general may choose a time that they are willing, but Generals whom don't want to hold honor can attack any other settlements at any time they want, but to do so requires good communication, and there usually is a spy of other factions in your territory, so beware.

Creating Faction: You have to be able to influence an entire unclaimed settlement, and build facilities for you AI army. Every faction has AI characters as the bulk of their armies, and they have to be able to maintain this army.

Scale of battle: In a one settlement conflict, the scale of battle is restricted to that of a regiment. In a two settlement conflict between two factions, the scale of battle is restricted to brigade. With three settlement conflict between two factions, the scale of battle is restricted to division, with four settlements, corps, with five settlements, army. When a battle is in open field and not contested for settlements, there is no limit on the scale of battle.

Only Generals can give the command to conquer other settlements. Free ground battle in open field can be done by anyone.

Players whom do not want to involve with the war may op to first person perspective and play as an FPS, or third person perspective and play as an RPG.

[Edited by - Platinum_Dragon on March 31, 2009 12:02:22 AM]
I use QueryPerformanceFrequency(), and the result averages to 8 nanoseconds or about 13 cpu cycles (1.66GHz CPU). Is that reasonable?
I though that the assembly equivalent to accessing unaligned data would be something similar to this order:

  • move
  • mask
  • shift
  • move
  • mask
  • shift
  • or

    So it seems reasonable to say that it takes 14 cycles for unaligned data since we'll have to do the series of instructions once to access and once to assign?
Mmmm, I have not read this discussion as it is quite huge, but it seems kind of complicated. But the idea of modeling the structure of the army seems intriguing.

This topic is closed to new replies.

Advertisement