Coder Social home page Coder Social logo

armcom2's Introduction

Armoured Commander II

Started February 23, 2016; Restarted July 25, 2016; Restarted again January 11, 2018; Restarted again January 2, 2019

This is Armoured Commander II, the World War II Tank Commander Roguelike.

Copyright (c) 2016-2020 Gregory Adam Scott ([email protected])

Armoured Commander II is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Armoured Commander II is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Armoured Commander II, in the form of a file named "license.txt". If not, see https://www.gnu.org/licenses/.

Running ArmCom2

To run the armcom2.exe PyInstaller build, you may need:

To run armcom2.py, you will need:

Running ArmCom2 on OSX

To run on OSX use a virtual environment (e.g. pipenv) with Python >= 3.6.6 and install the following libraries:

Then run python armcom2.py

If the starting font size is too large then change "display_font_size" in data/armcom2.cfg

Running ArmCom2 on Linux

To run the game on Linux, two steps are required:

  • Install only Libtcod 1.6.5, newer versions will not work
  • Once libtcod is installed, copy the contents of /usr/lib/libtcod*.so.* into libtcodpy_local/

Thanks to peterjohnhartman for this information!


Game Manual - Version 2.0.0

1. General Principles

In Armoured Commander II, you play the role of a tank commander in World War II, leading your crew through a campaign in one of the major conflicts of the war. It is (I would argue) a "roguelike" style of game, which in general means that it:

  • emphasizes gameplay over graphics, using an extended Petscii character set rather than bitmap graphics;
  • is turn-based and allows the player to stop and resume at virtually any point; and
  • rewards mastery of the game mechanics and encourages multiple playthroughs.

The original Armoured Commander was very closely modelled upon and inspired by the 1987 board game Patton's Best, but ArmCom2 is an attempt to go beyond that model while maintaining the basic format of the player being in control of a single tank.

2. Main Menu

Main menu image In the Main Menu, you can continue your most recently saved campaign, load and continue a saved campaign, start a new campaign, change game options, or quit the game.

To Continue or Load a campaign, it must have been saved with a compatible version of the game. If the first two version numbers (separated by single dots) match, it will be compatible. Otherwise, you won't be able to resume your campaign unless you load it with a compatible version of the game.

If you start a New Campaign, any current saved campaign will be erased. You can only have one saved campaign at any one time.

Game Options can be accessed here and from the in-game menu as well. Changing the Font Size will change the total window size. Sound Effects, including the main menu theme, can be toggled here. Changing the Master Volume will change the volume of the theme music and all sound effects. Message Pause changes the length of time that pop-up messages are displayed before disappearing. Several Keyboard layouts are supported, and you can set your own keyboard mapping by editing the "custom" dictionary in the keyboard_mapping.json file in the data folder, and selecting it here.

3. Campaign Selection

Campaign selection image

Several campaigns are included with the game. Each one takes place over a fixed period of time between 1939 and 1945, placing you in the role of a tank and battlegroup commander. Player Force means the national military force that you will be a part of. Enemy Forces lists the expected national forces that will be your opponents in this campaign. Some campaigns are longer than others; the actual days within the campaign calendar on which you will be called up for action will be determined randomly.

From this screen you can select a campaign to start, or have the game select one randomly.

You can also set your Campaign Options in this menu. "Permadeath" means that your Commander represents you, and if he is killed or seriously injured, your campaign ends immediately. Otherwise you can continue your campaign with a newly assigned Commander. "Fate Points" are replenished at the start of each Campaign Day, and each one silently saves you from an incoming attack that would have otherwise destroyed your tank.

4. Tank and Crew Selection

Tank selection image

A selection of tank models are available to you at the start of the campaign. During Refit Weeks, and if you have to abandon your tank, you will have an opportunity to select a new model. Available models depend on the current calendar date; some models will only become available to you later on in a campaign. Pay close attention to the stats of your chosen tank, since you may be riding in it for some time.

4.1 Tank Stats

Virtually everything you need to know about a unit is included in its unit information display. Your tank's stats are especially important, so here is an example of how to read them:

Tank stats image

  • M4 Sherman: This is the unit identifier, unique to each model of tank
  • Medium Tank: This is the unit's class, indicating generally what type of unit it is
  • Portrait: A rough approximation of this unit as viewed from the side
  • 75mm, etc. (dark red background): A list of weapon systems on this unit, starting with its main armament
    • Guns may be short (S), long (L), or very long (LL) barreled
    • Co-ax weapons are mounted on the turret alongside (or as) the main gun
    • Anti-Aircraft (AA) machine guns (MG) can fire in any direction, but must often be fired from outside of the tank
    • Bow MGs are fixed to the front of the hull
    • If a weapon is displayed in a light grey colour, it means that it is unrealiable and has a greater chance of breaking down
  • Armoured or Unarmoured vehicles have their armour values listed here
    • The T line refers to turret armour, but if there is no rotatable turret it will appear as U (Upper Structure) instead; if the turret has a fast traverse, this will be noted by (fast)
    • H refers to hull armour
    • The two armour values x/x refer to front and side armour respectively for that area
    • Rear armour values for any location are one level lower than its side level
  • The movement class of the unit is shown in green in the lower right
    • If a vehicle has light ground pressure this will be displayed in a light shade of green, if heavy ground pressure, a darker shade. Ground pressure affects the chance of bogging down.
    • If a vehicle has an especially powerful engine, a plus sign will appear next to the movement class
  • Any special vehicle features will appear below the movement class:
    • HVSS stands for Horizontal Volute Spring Suspension; vehicles with this upgrade are slightly faster and less likely to bog
    • Recce is short for reconnaissance, and means that the vehicle is less likely to be ambushed at the start of a scenario
    • ATV means that this is an All-terrain Vehicle (no effect yet)
  • The size class of the unit appears below that. Larger targets are easiser to spot and hit
  • Finally, the normal number of crew for this unit

A full crew, with yourself as the commander, will be automatically generated for your chosen tank.

4.2 Crew

Crew image

Each crewman in your tank has their own set of stats, skills, and experience points. Names are randomly generated, but you can assign a nickname to each crewman.

Crew Stats

Each crewman has four stat values, which are randomly generated at the start of the game but can be improved by spending Advance Points later on.

  • Perception is used during attempts to spot enemy units on the scenario layer
  • Morale represents the crewman's ability to resist psychological stress and harm (not yet used as of Alpha 10)
  • Grit is used to resist wounds and negative status effects such as Stunned
  • Knowledge applies a small modifier to all skill bonuses

Crew Experience

Every time you earn a Victory Point in the game, any crewman who is conscious at the time also receives an experience point. At the end of each combat day they may go up one or more levels depending on their exp. Each time they go up a level, they are awarded with an Advance Point which can be spent increasing the crewman's stats or adding a skill.

Crew Skills

19 skills are available (as of Alpha 10), but not all are available to crewmen in all tank positions. Some of them have another skill as a prerequisite. All apply some kind of bonus as described in the skill description. (Full skill tree and description list to follow)

5. Game Menu

Game menu image

You can access the in-game menu from any layer of the game and at any time. From here you can save your campaign to continue later, as well as change game options.

6. The Campaign Calendar Layer

Campaign calendar image

In the Campaign Calendar layer you can view information about the upcoming or a just-completed combat day. Pressing 2 will bring up the Crew and Tank tab of the command menu. Here you can review each of your crew, see your tank's stats, and assign crew and tank nicknames if you have not done so already. Most layers display the main list of commands in this area of the screen.

Press 1 to return to the Proceed menu tab, and press Enter to start your combat day. If you survive your combat day, you will return to this layer from which you can proceed to the next combat day.

7. The Campaign Day Layer

Campaign day image

In this layer you lead your tank and battlegroup across a terrain map of hex zones. Your own tank is displayed in the upper left of the screen, and several tabs of commands appear in the lower left. Current weather and ground conditions are displayed in the upper right, campaign and day mission information on the right, and hovering the mouse cursor over any map zone will display information about it in the lower right corner of the screen.

The campaign day map is made up of 41 hex zones, each of which are randomly generated as one of six different terrain types. The terrain type of a hex zone influences the time required to travel into it, as well as the terrain for units on the scenario layer if a battle encounter occurs there.

Dark brown lines joining hex zones are roads; travel along roads is usually faster than cross-country. Dark blue lines along the edges of hex zones are rivers; these can only br crossed at a bridge or ford, indicated by a dark brown cell with three horizontal lines.

Objectives are indicated by a ring of light blue dots; capturing these hexes is worth extra VP.

If you reach the top hex row (or the bottom one in Fighting Withdrawl mission), a new hex map will be generated.

Five menu tabs are available in the command menu:

  • Supply
    • Here you can view the stats of your tank's main gun, and manage the contents of the Ready Rack. From here you can also Request Resupply which, if granted, allows you to replenish main gun ammo, will replace dead or seriously injured crewmen, and will also bring your tank squadron up to full strength.
  • Crew
    • Displays a list of current crewmen in your tank. From here you can open the crew menu for any of them, and open/close their hatch if they have one.
  • Travel
    • In this menu you can select a direction from your current location, and either request reconnaissance information about an adjacent enemy-held hex, or travel to an adjacent hex. When moving, you can toggle advancing fire and air and artillery support requests on and off. Advancing fire uses up HE ammo but if a battle encounter is triggered, it has the chance of pinning enemy units before combat begins. You can also Wait in place, but there's a possibility that enemy forces may attack your hex.
  • Group
    • Lists the current members of your tank squadron.

The campaign day ends when you abandon your tank, your character is killed or seriously wounded, or you reach sunset as indicated by the background of the time display in the top centre of the screen.

7.1 Strategy on the Campaign Day Layer

  • Always recon enemy-held zones so that you know what you're getting into
  • Pay close attention to the time required to travel to a new zone, which varies depending on terrain, weather, and presence of a road connection
  • Rivers can only be crossed by the player at bridges, so plan your route ahead of time
  • Use advancing fire and air/artillery support, especially when moving into heavy resistance
  • If you are cut off from the friendly map edge, you will not be able to call for resupply

8. The Scenario Layer

Scenario image

Once you encounter enemy resistance on the Campaign Day map, or if you wait in place and are attacked, play shifts to the Scenario layer where battles take place.

On the right of the scenario interface is the Scenario Map, made up of 36 hexes arranged in 3 rings surrounding a central hex. The map represents, in an abstract way, all terrain in a 1,440 meter radius around the player. Your tank, represented in traditional roguelike fashion by the @ character, is located in the centre of the map. All other units on the map are represented from your point of view, so if you pivot your tank counter-clockwise, units will appear to rotate clockwise around the map. Likewise, if you move into a new hex, all other units will shift around you. Hovering your mouse cursor over any hex will display its info at the bottom of the map; scrolling with the mouse wheel will shift the order of any unit stacks in the hex.

Above and to the left of the scenario map is the contextual console, which displays different information depending on the current phase. Above and to the right is the Environmental Conditions console, which displays information about current weather conditions.

Play on the Scenario Layer proceeds though a series of Phases, each one of which either allows the player to perform certain actions, or allows allied and enemy AI units to act. Each set of phases takes 2 minutes of in-game time to resolve.

8.1 Scenario Phases

8.11 Command Phase

In this phase you can open and close the hatch for each crewman that has one, and you can assign one command to each of your tank crew that is neither unconscious nor dead. Each command will allow the crewman to do different types of tasks in the remainder of the turn. The sight radius of your crewman is highlighted on the scenario map in blue; different hatch statuses and commands will result in different areas of the map where your crewman can spot in the following phase. Descriptions for each command are displayed in the Contextual Console.

Note that some commands will only become available when certain conditions are met; for example, you can only abandon your tank if it is immobilized or if you have 1+ crewmen who have been seriously injured.

8.12 Spotting Phase

During this phase no input is required from the player; any crewman who can do so will automatically try to spot any hidden enemy unit in his line of sight. If an enemy unit is spotted, its identity will be displayed in a pop-up message.

8.13 Crew Action Phase

Certain crew commands require additional input or will result in automatic actions during this phase. For example, a Gunner can manage his Ready Rack, moving shells into or out of it, or the Commander might throw a smoke grenade, providing some concealment for the player tank. You will need to select a crewman in order to see possible actions associated with his current command.

8.14 Movement Phase

If the Driver has been given the "Drive" command, then the player can attempt to move the tank in this phase. The Driver can attempt to drive the tank forward or backward, pivot the hull, or attempt to move into a Hull Down position.

Pivot Hull

The driver is free to pivot the tank hull to face any direction, without ending the Movement Phase. As you pivot, your facing on the map remains the same; instead, all other units on the map are rotated relative to your direction of pivot.

Forward and Backward Movement

Since the battlefield is represented in a very abstract way, doing a move action will sometimes be successful, other times not. The odds of your tank moving far enough to shift the relative position of enemy units is displayed in the upper left console. Each failed attempt will increase the chance of a successful move in subsequent Movement Phases. If a move action is successful, your tank will appear in the same place, but every other unit on the Scenario Map will shift position.

Scenario Movement image

For example, in the image above, if the player completes a successful Move Forward action, then the enemy tank, unknown unit, and infantry unit will all shift downward one hex. The exception is if there is a unit directly in front of the player, in which case they leapfrog over the player and end up behind (the player moves past them and keeps going.) Reverse move actions would have the opposite effect. If an enemy unit would normally be pushed off the scenario map by a player move, they will stay in relative place instead. Enemy units can only move off the scenario map of their own accord.

Hull Down

When starting a scenario and after a move action, the player may find themselves in a Hull Down position in one direction. This means that a hill or other large solid object is covering their hull from that direction. Any incoming attacks that would have affected the Hull coming from that direction will instead have no effect. The Driver can try to get the tank into a HD position in the forward firection with the Attempt HD action.

Overrun

If your driver is on an Overrun command, your squad will move close to the hex immediately ahead of you, allowing you to attack them at very close range with MG weapons. This command is only available if there are 1+ gun of infantry units directly head of your location. While on an Overrun command, your squad counts as moving, but there are no movement penalties to MG attacks.

Bogging Down

If the player's tank becomes bogged down, then the Driver must successfully unbog the tank in a subsequent Movement Phase before the tank can move again. Surviving player tanks are automatically unbogged at the end of a scenario.

8.15 Shooting Phase

During the Command Phase, one or more crewmen can be commanded to operate one of the tank's weapons. Most player tanks will have a gun as its main weapon, which can usually fire High Explosive (HE) rounds, Armour-Piercing (AP) rounds, and later in the war, Smoke rounds.

Gun Stats

Guns are defined by their calibre, with larger-calibre guns producing more of an effect on both soft and armoured targets, and usually better at long range as well. Guns can be short, long, or very long-barreled, indicated by an 'S', 'L', or 'LL' following their calibre in millimeters. The loader for each gun normally has access to a Ready Rack of ammo nearby, use of which makes it faster to reload the gun. Guns will also normally have an innate Rate of Fire chance, which indicates the odds of reloading the gun fast enough to allow two or even more shots per shooting phase. Use of the Ready Rack, as well as crew skills, can greatly increase these odds.

  • HE produces an explosion upon impact, and is more effective against infantry, guns, and unarmoured vehicles
  • AP is only effective against vehicles, and is best used against armoured targets
  • Smoke will produce concealing smoke upon impact, making it more difficult for enemy units to fire at you and your allies
Machine Guns

Most player tanks and many other vehicles have one or more machine gun (MG) weapons. Note that coaxial MGs, mounted next to a gun barrel, cannot fire in the same phase as the gun fires, and vice-versa. MGs are only effective against soft targets and unarmoured vehicles; at present (Beta 1) they have no effect on armoured enemy targets. MGs have chance to maintain RoF for additional attacks in the same phase.

Effect on Enemy Targets

Enemy targets hit with HE or machine guns will have Firepower applied to them; an abstract measure of incoming fire. Firepower stacks from different attacks and is resolved at the end of each phase, so a unit hit by a bomb from an HE shell as well as MG fire will have a large amount of firepower to resolve at the end of the opposing side's phase. Higher total firepower values increase the chance that the unit will be destroyed, its soldiers killed, wounded, or routed from the battlefield.

Armoured targets hit with AP will undergo an Armour Penetration check immediately after each hit.

AP Roll image

The chance of the hit penetrating the target armour depends on the gun calibre, barrel length, distance from target, and thickness of target armour on the location hit. Especially powerful guns will automatically penetrate all but he thickest armour, as shown here. Enemy armoured targets that are penetrated are destroyed.

8.16 Allied Action Phase

During this phase any other tanks in your squad will attack enemy targets automatically.

8.17 Enemy Action Phase

During this phase enemy units will move around the map, and may attack you or your squadmates.

armcom2's People

Contributors

dan-oppenheim avatar stew-rt avatar sudasana avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

armcom2's Issues

Crash on air support

I was playing a US campaign with the M4A3 (76)
The mission was to advance.

I went into a combat tile and was about to fire on a truck when the game told me that my side was launching air support.

I crashed immediately.
ArmCom2 save.zip

Problem with Battle of France (Germany)

I'm just starting on the April 13 patch today

I had a crash, I think the cause was either the new French Truck's unload action. I've done this with 3 different german tanks so far.

This new version of the game also seems to put you "1 turn ahead" when you use the Continue option from the main menu after a Crash or manual exit --- when I came back the infantry was already out of the truck, so I was not able to make a "right before crash" save file, but it's so fast to get to the point of it happening on a new file that it's not too hard to report.

The changes to Panzer 38t give both the Loader and Assitant Driver the (third) machinegun, but I think it only works when the assistant Driver uses it.

Also do all the new tanks options have 0 squad groups? although I kind of think the StuG and Panzerjager work better as enemy tanks than player tanks anyway due to needing to resupply ammo VERY frequently.

Sight Range after taking Light or Serious wounds

I'm not sure about this since It was my first playthrough but.

When I was playing France I thought that spotting sight range was only 1 tile unless you opened the hatch.

After my commander took Light wounds he could only see 1 tile with it both open and closed.
He took about 8 battles to heal (is 5 grit considered low?) but when he did he could still only see 1 tile .

I spent several days only spotting with the Driver (R35), who took serious wounds (and thus also had a 1 tile reduction) but, later he fully died and I abandonded the tank.

When I took a new tank(S35), the new Driver could not spot with the hatch open even though he was unwounded.

I hate to post an issue without providing a save file, but I think I can purposely get injured and see if it happens again.

OSX No such file or directory: 'saved_campaigns/'

When running on osx I got the following error:

File "/armcom2-master/armcom2.py", line 18098, in UpdateMainTitleCon
    if len(os.listdir(SAVEPATH)) == 0:
FileNotFoundError: [Errno 2] No such file or directory: 'saved_campaigns/'

creating the saved_campaigns dir fixed the problem

T-28 main gun incapable of Maintaining Fire?

In both of the currently available Soviet campaigns, T-28 has not been able to maintain fire with its 76mm weapon even once, and even after the Loader was given the Fast Hands trait and had multiple points added into Knowledge.

In contrast, the main gun of the Matilda tank is able to fire 3-4 times a turn even without any upgrades; the main weapon of the Sherman Firefly can also pull off multiple shots a turn from the first days of the campaign, even though it has the same caliber as the T-28's weapon, and its extra length should, if anything, make loading more difficult.

VP values after moving to a new map screen

When you move to a new map screen in (Battle, Advance, and Spearhead), only the bottom row of tiles will have VPs (except in spearhead) everything else will be worth 0, UNTIL you have moved one hex- then the game will update and award VPs again -

I've found that the "one move" can be EITHER a sidestep into a bottom row tile, or biting the bullet and taking a move into one of the 0 point hexes in the second row.

I don't usually lose out many VP because of this because of the sidestep work around, but it is easily repeatable and happens to multiple nations (although the mission type is rare for eg Poland)

Day not changing

So I was playing the Canadian campaign, and I figured it would be longer since it's 3 and a half years instead of just a few months... but I still figured it would end at most only with 3x to 4x the points that France and Poland ended with - So I slowed down a little and noticed that every new day was starting on October 22 1944 - I wish I had checked when this had started, but.... my guess would be that I played through October 22 a crazy number of times between 30 and 40 battles.

Crash on close combat

ArmCom2 1.0.4, Windows 10
Riflemen and Opel immediately in front of tank. Upon starting assault, defending riflemen is destroyed, then game crashes. Crash is consistent and repeatable. Save file(s) attached.
savegame.zip

Clarify the rules around Close Combat.

Currently, the player is given a highly detailed chance breakdown whenever they fire either their tank's main gun or one of its MGs at the enemy, which is great.

However, nothing like this exists for close combat. This is in spite of the fact that failing in close combat has far more drastic consequences than failing at range; the latter will at most waste some ammo, while a failure in close combat can straight-up destroy your tank and end your campaign, either immediately, or in a few days, as the wounded commander gets discharged.

Thus, I am asking for a screen that will show percentage breakdown before initiating close combat, just like there is one when you are about to shoot at something. It is currently complete guesswork as to whether or not your tank is ever safe from being suddenly destroyed in such a manner (the manual currently does not even acknowledge that as a possible outcome.)

I first assumed that this could only happen when assaulting the artillery, but then the same thing occurred when I drove at Riflemen. I thought that was because of their AT Rifle, but then assaulting an HMG Team led to a destroyed tank again. My best guess is currently that the state of the tile where you are performing the assault is what makes the difference, but again, it's just a guess. Right now, the safest way to play is to completely avoid any and all assaults because of this uncertainty.

missing libtcod.so

I seem to be missing this. I see that there's the .dlls. But, libtcod clearly wants libtcod.so. How can I get this?

75mm wz. 97/25 Gun should not have AP capability

Fixing this will require adding a setting to all guns to specify whether they can use HE and/or AP, and ideally also to add a to-penetrate check for HE hits on armoured targets that can potentially penetrating very light armour. Might be a good time to add MG to-hit attacks on armour as well.

Attempting to Access Crewman Menu When No Crewman in Hospital Causes Game Crash

I have a "fail silently" fix that I can PR if desired. It just adds a try-catch block around the offending code, in case of an IndexError.

The text of the error is here:

/Users/<username>/code/armcom2/armcom2.py:2445: DeprecationWarning: Call the `con.print_` method instead.
  libtcod.console_print(calendar_main_panel, 2, y, 'No crewmen currently in hospital')
Traceback (most recent call last):
  File "/Users/<username>/code/armcom2/armcom2.py", line 18246, in <module>
    campaign.DoCampaignCalendarLoop()
  File "/Users/<username>/code/armcom2/armcom2.py", line 2857, in DoCampaignCalendarLoop
    crewman = campaign.hospital[selected_hospital_crewman]
IndexError: list index out of range

Date issues in the Liberation campaign.

Liberation Campaign of the Red Army never transitions from September to October. Instead, it keeps adding days to September, eventually ending on September 36.

изображение

изображение

Add "no ammo" warning with auto-fill at the start of the day.

There should be a warning, at least, if the player accidentally presses Enter at the start of the day, and ends up beginning it with incomplete ammo (or even no ammo whatsoever if it's the first day of the campaign) equipped. The message should be something like "Lack of ammo detected! Choose default loadout?", where "Yes" will do just that, and "No" will take the player back to that screen.

In addition, if the player's tank can only use AP ammo (i.e. Matilda during the British campaign in France), that entire screen should be skipped, since the player has no meaningful choices to make there anyway.

"Language" option

Just noticed the "Language" option in the menu. Are you planning on translating the game once it is finished ?
I'd be ready to help with a French translation, if you need it.

Also, congrats for both ArmCom 1 and 2 !

crash on new day

Hello, thanks for that excellent game

I'm running armcom2 0.9 (19-11-19) on window 10
On the Patton campaign i'm several days in, in the britanny part of the campaign and crashed apparently when being close the end of the day during a battle , after firing on an infantry, nothing seemed different from the many battle i had so far so no idea why it crashed.

I relaunch armcom2
I press C to continue my campaign , i notice oddly i'm on the between days debriefing screen instead on the battle map.
So after assigning skill points, i move to assign the ammo then when i continue the game just crash/close, whatever happens in the dos prompt unfortunately goes too fast and close before i can read what it's about.

As this crash now always happens from that point , i thought maybe i should report this with the saved game files :
02crasharmcom2.zip

Python 3

Would you be willing to accept a pull request upgrading the code to use python 3?

General unit/mechanics suggestion megathread

So, I'll say that Armored Commander 2 is already a pretty good game as it currently stands. It is pretty unique both in the world of games in general and roguelikes in particular, and has an engaging set of mechanics already. Still, there is clearly a lot of room for improvement as well, and I would say that there are currently three main directions to achieve that.

Direction 1 is Historical Expansion. The process of adding on more WW2 campaigns + making the existing campaigns feel more historically authentic (both through unit composition changes and more specific scripted texts, events, etc.) While I think some campaigns are more important than others (i.e. implementing at least one North Africa and Soviet vs. Nazi campaign should be ahead of the Pacific front tank battles), this is basically self-explanatory on the whole.

Direction 2 is the Tactical Layer. The battles on that hexagonal map, and the associated mechanics. I think that currently the main issues are with the AI behavior. It's decent, but it still often raises questions, and the most important one is the way some units unpredictably flee, and the others stay on when it's pointless. This goes both for the random, unpredictable withdrawals of allied tanks that don't appear connected to the actual threat level (I had an ally withdraw while simply we were simply taking on an HMG team), and for the enemies, including the strange persistence of Trucks. Funniest example was probably when I encountered a Supplies-transporting Truck and a Pz. IV in the Canadian campaign recently: the Pz. IV fled immediately, but the truck stayed on for no reason.

I think that in general, the Withdrawal command should be removed outright; leaving combat (outside of Abandon Tank command) should only be achievable through moving to the respective edge of the screen, for both the player and the enemies. Allies that Withdraw will appear on the map as separate, uncontrollable units and start moving towards the screen's edge: enemies will be able to withdraw once they get to their edge of the screen. Trucks should be both more frequent, yet also stay on the battlefield much less often. Essentially, as soon as the player shows up, Trucks should begin moving towards their edge. Enemy vehicles that have little-to-no chance of actually damaging the player's tank (i.e. German motorcycle teams, or Polish MG-equipped armored cars) should do the same: perhaps not always, but more often than not.

To make this more interesting, terrain should play a greater role. Currently, each combat map appears to have all tiles of the same uniform green/white color until a unit actually gets there, and then it's determined whether that occupied tile is Open Ground or something more special. I think it's obvious that randomized generation of terrain across the entire combat map is more interesting. Most importantly, it would allow for the addition of roads (mostly dirt, with asphalt only present on the "road" tiles) running through the entire hexagon, with the Trucks in particular automatically generated only on top of these dirt road tiles, and being forced to flee from your tank based on whatever curve the road was generated with, as opposed to just taking the shortest straight line towards the edge of the screen every time.

The second area in need of improvement is the FP system. It's acceptable as it is right now, but it should become more gradual than the current calculation that's often all-or-nothing, bar the occasional Pinning. In particular, there's a frustrating asymmetry next to AP fire; whereas a critical hit with an AP shell basically guarantees penetration and instant destruction of the opponent, a critical MG/HE hit can still often leave "No effect," which is just frustrating. For Riflemen at least, I think a solution is to make the squads stronger by giving them more actions per turn by default: i.e. each Infantry squad will fire both Rifles (specifically in order to target anyone in open hatches, of course) and an AT rifle within their combat phase by default, and they'll lose that capability only after one or two good hits goes through. I suppose that for HMG/artillery, there should be a more explicit "stun" status that disables them from firing this turn or the next. As it is, it feels pretty random when they decide not to fire at you/your squad during some turns, and introducing such an effect will make it feel more tactical.

Lastly, certain tank models possess Radio Operators, and suffer from them being essentially useless. They can only Spot and give First Aid, and never have hatches to be effective at the former, so they only ever help if a spotting crewmember got unlucky enough to be wounded. I think it would be great if having a Radio Operator made coordination with the allied tanks possible; i.e. during the Crew Action phase, you would be able to know what they are planning to do next turn; you would find out if, say, their main gun broke down and they are going to withdraw, allowing the Commander to order them to stay, if needed. This would also address the moments when the allies just go quiet during some turns for what seem like random reasons.

Direction 3 is the Strategic Layer. Again, the current approach is often atmospheric (I really like the distinct feelings invoked by Spearhead and Counterattack missions in particular), but can be done better. During the "default" Advance missions in particular, it just doesn't really seem to matter how exactly you are advancing relative to your allies, so long as you just keep hitting the enemy tiles with every turn. The simplest addition is probably to provide a VP bonus for when you manage to cut off and encircle enemy tiles behind your advances, and to ensure that the "Target of Opportunity" tiles are never generated empty of opposition.

The most ambitious approach, though, is to have a much more dynamic frontline simulation. Basically, you will be shown the numerical strength of all the allied tiles on the frontline (and getting promoted may make that information more detailed), and based on that, you can (and should) plan as to whether that tile can deal with the enemies in front of them on their own, or whether they need you to clear away the opposition. Miscalculating this could mean that an enemy tile you behind as you chose to push forward, Spearhead-style, would suddenly send out troops to retake all the territory you had just captured, losing you those VP, (since by default, the captured tiles you just left would have strength of 1 at first, with more troops pulling in later in the day; similar calculations would apply to enemy advances in Counterattack missions.) Enemies retaking territory does automatically inform you of their strength on that tile (or at least, has a good chance to), and likewise, allied assaults failing to take over a tile can/will give you recon information.

I understand that implementing this is likely to be quite complex to say the least, but the pay-off will consist of much more engaging strategic gameplay turn-by-turn. Another way to do that could be to introduce limited fuel and MG ammo/smoke grenades to make resupplying more important (and to make it a distinct possibility that you have advanced too far, then and a sudden enemy counter-attack ends up striking either right where you are, or the tile directly behind you, cutting you off from Resupply until you manage to deal with them and get back to where the allied frontline is firmer.

Anyway, these are just my current thoughts on the game.

Ammo Loading Screen Broken

Version 1.0.6 from main download link

On starting a new campaign:
Game will not progress if during the ammo loading screen you move any amount of ammo into the tank. Moving ammo works, but pressing enter to proceed will not work if you adjust the ammo load.

It works fine if you have a tank with one ammo type and it skips the screen. You can also move past the screen without loading any ammo at all and acknowledging the warning.

Have tested it with multiple tanks on multiple campaigns, same result each time.

Not sure it's it's related, but if you try to move ammo on the ammo load screen too fast this error pops up:

ERROR: could not play sound: shell_move_10
b'That operation is not supported'

Ambush at start of battle seems to happen more frequently

I am not sure how this works exactly even on the old patches. Does it only check the Commander's Perception skill or does it check some kind of average of everyone's Perception? I am not sure how strong the Eagle Eye skill is either, but if the commander is under 5 perception it doesn't seem to help much.

Line of sight blocked units still use normal spotting

Line of sight blocked units can spot and be spotted the same as normal units - however shooting them is correctly blocked. In the case of Troop Transport trucks their unload AI also seems to be active before spotting the player tank (although I suppose this is fine)

Bug crash in setting crewman action on MoveForward

the function MoveForward calls an undeclared function GetStat('reverse_driver') on line 5952 of armcom2.py

This would result in a crash.

this should probably be something like self.GetStat('reverse_driver')

Linux compatability

There are two issues that make the git package not run on Linux (at least on my system).

  • I can't (for the life of me) get the GLSL libtcod renderer working - so I switched to RENDERER_SDL (which worked fine) - would it be possible to have RENDERER as a global variable?
  • the libtcodpy library folder conflicts with my locally installed libtcodpy - which does not have libtcod.so library, causing an exception. If I change the foldername libtcodpy to libtcodpy_local and add the following code, it loads fine:
if os.name != 'posix':
    import libtcodpy_local as libtcod
else:
    import libtcodpy as libtcod

If deemed an acceptable change, I can make the above changes to allow Linux support to work "out of the box" and build an AUR package.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.