Modern combat 5 blackout

MC5 on android (nvidia shield k1)

After some years of not playing massively online (2) I decided to have some hardware for gaming, aside from "serious" challenges (that for me are programming or writing).

I decided to invest on the android platform and the nvidia shield k1 and I explain the decision on reddit (1) , additionally I also wrote some other observations:

So far the decision is not so great, since even with the nvidia gamepad mapper included in the OS, the nvidia shield controller is not really usable. One day I will have to try the tincore keymapper or similar 3rd party button mappers that require root (and the rooting procedure may brick the system, so for now I defer it), or I will wait until other games will interact better with the gamepad mapper (like blitz brigade already does) or include gamepad support (some games already do it). In the meanwhile I stick around with Modern Combat 5, that has a lot of shortcomings but it is still playable.

Strength points

Ranking

In game there is a ranking system with the ideas similar to the ELO. Actually, reading a bit on reddit and on gameloft forums, the rsystem is way simpler than the elo because it is based on the amount of K/D given and received from other players during the game. It is a gross approximation but I have to say that it works.

Indeed MC5 can be played on android phones, tablets, ios phones, tablets, windows PC, xbox and playstation. Now every of this system brings implicit advantages over others. A touchscreen player cannot really compete with a player with mouse and keyboard. A player with proepr gamepad setup can compete with the best touchscreen players and also with average mouse and keyboard users. A player with low end system that is not able to produce enough frame rate (frame rate is really important) cannot compete with the ones with better frame rate. A player with poor connections to the gameloft servers cannot compete with a player with a good connection.

Then there are the advantages in game, players that have better weapons, players that have better armors.

Then there are players that may cheat (the ego is always there behind the corner) or players that are just better.

All those players will have a certain performance affected by their own skill or the limitation/advantages of their connection, equipment in game, hardware possibilities. If there are enough people (without enough people, the good performers and the bad performers will have to play together in the same game), those will settle, sooner or later, around a certain ranking and the system will let them play against people with similar rankings.

So the ranking system, enhanced by a league system (to assemble people with slightly different rankings together), enables people to find games that are enjoyable, without winning too easily or being destroyed without chances (except few times).

Currently I'm of the idea that every multiplayer game should have such techniques to put people of similar skills together.

Antilag

Antilag is a technology introduced in multiplayer games long ago, I guess around 1998 with quake3 or even before. It is a very nice technology to ensure that people with different connections can play with each other a bit more fairly. Unfortunately people either are unwilling to understand the concept or they are unable (I think the first). It is likely that people that benefits from the technique then complain that they die "behind the corners, or behind boxes".

This because the enemy was hitting them before they got behind the corner, but they will never see the case that they hit someone that will die behind a box.

Of course too much of antilag can create surrealistic problems, but until the antilag is set up to 200ms of compensation (nothing strange with current mobile and wifi networks) it should be fine for most of the players from the same geographical region.

Fun modes

Free for all and team deathmatch suffers due to the poor spawn system. Maybe in team games those are better. Vip, capture the flag and zone domination are more fun because players concentrate over precise objectives that could be seen by everyone.

Economy in game, with or without money

(motivates to see what one can do with a completely unlocked weapon. It is an interesting system that could be used as example to be applied elsewhere)

Problems (in my opinion)

Spawn system not really smart (20610)

The spawn system, in some maps and situations let enemies spawn near each other and the result is a mess with enermies on whatever side, it is a lottery to remain alive.

Statistics of how enemies killed me

On 20161002 I collected some statistics how I was killed, considering front encounters (where I was outplayed) and side encounters (where I had no chances to fight back) plus game failures (where I wanted to shoot but the game did not followed the command).

I played mostly VIP mode, since the mode affects how the players distribute on the map and consequently the spawn system responds. For example in free for all and team deatmatch the problems of the spawn system are emphasized. It often happens that instead of spawning nearby a friend but relatively away from the enemies, one spawns in the middle of the enemies, with lowered chances of survival.

Moreover I play conservatively, avoiding to use places where one can attack me from almost every direction. Normally I try to secure my back, playing on the map borders.

I played 44 games, mostly VIP mode (sometimes the mode changed), and I had:

  • 98 "acceptable" deaths (I aimed at the enemy and viceversa and I lost)
  • 63 deaths from directions that I was not covering (sides, behind, bombers, mines, etc)
  • 4 "game failed" deaths, in which I was under frontal attack but the game did not replied properly to my input of shooting (this happens when the FPS drops a lot in the game). I collected this later so could be that some "acceprable" deaths are also "game failed" deaths.

Then I played 6 domination games (nice mode):

  • 13 frontal deaths
  • 16 deaths from other directions

Deaths from other directions, either in VIP or domination zones, often is caused by the bad respawn system, since one spawns nearby enemies without being aware of it.

Not so optimized and when the frame rate is low, input from the controller is not recognized

The game does not seem so optimized (see reddit links before). It is likely that one core/thread computes the 3d visuals for the GPU while another core cares about connections, sounds, advertisements and so on. Now on the nvidia shield k1, that does not have single cores very powerful - this aggravate the case of MC5, that I think is optimized but not for particular hw and nevertheless keeps a 3d model quite complicated with a lot of polygons, - this means that dometimes the frame rate drops under 20 fps (a trained eye can see this) and when this happens it is also likely that some inputs from the controller (wireless) is not drawn properly. For example the triggers are not recognized properly - triggers sends different values so I believe they requires a bit more computation, - while other buttons at the same time are recognized. For example movement is always recognized although is mapped ot an analog stick.

Moreover also the physical model is not trivial. Granades and shocks from explosion produces very realistic reactions and this means more computations for the computation core that has to draw things.

Further experience 201610. Frame rate drop when many soldiers are in the visual, frame rate affect aiming.

It seems to me that the maps in general, while quite detailed, can be handled by the cpu/gpu systems of the nvidia shield controller. I think this because while varying the graphic quality (a user could choose several levels of quality) the performance stays the same in certain part of the map. But then when special effects kicks in (lightning from shooting, smokes from explosions, sun, etc..) but mainly the players and guns are in the visual the frame rate drops, with good or bad quality (with good quality it drops a bit more). I did not measured exactly the frame roate counter but I think my eyes are trained enough to detect more frame rate drop or less.

So I wondered why when there are a lot of player models in the visual, then visual drops a lot. Then it made sense. The models of the soldier and the gun are shown elsewhere in the game, when people buy outfits or enhancements for the weapons. Therefore they are quite detailed. Quite detailed means: a lot of polygons.

Therefore when several soldiers are in the visual, the amount of polygons grows (plus the amount of effects due to shootings) and it is more work for the cpu and the gpu. While I think that the GPU sweats a bit more but can handle it (due to similar performances at very different qualities) the cpu, since only one core should be used for 3d models, physics, input, cannot handle it too much.

It is not ended here. Since the frame rate drops, and since I suppose that the input is collected and drawn after each frame, the movement of the camera when one has 30 fps is lower than when one has 60 fps. This because after every frame the vector produced by the analog stick is collected and drawn (it is drawn by the GPU but the cpu should give the 3d model, what to draw and where to look). Therefore the lower the frame rate, the lower the sensitivity with the controller.

And it is the same with shooting or aiming. The lower the frame rate, the lower the chances to detect a quick movement of the triggers of the nvidia shield controller by the game, because the user may press the trigger a lot but in that moment the frame rate was low so it is not (always) detected, and therefore there is no aiming or shooting or one thing fails.

This because - I suppose - there is only one computation instance doing physics, 3d models and input that are all strictly related of what the player sees (network and audio are correlated to what is drawn too but can be decoupled in an easier way) and while this instance should not overload too much the powerful GPU in the nvidia k1, it is likely that it overloads a single core in the CPU. Since a single core in the CPU of the nvidia k1 is powerful, but it should be still comparable to the CPU of the xbox (the first one) or the ps2, maybe 2-3 times more powerful (excluding heavy optimizations), it makes sense that for such graphics in the game (that for me can be compared to the graphics of return to castle wolfenstain or even call of duty 2, that I still like) the CPU sometimes is not able to provide enough 3d models. I saw this also in the past, for example with RTCW Enemy territory, where one did a lot with the graphic configuration to lower the details of the 3d models, due to overloaded CPUs, while the GPU did not had any problem.

More experience 201610. Nvidia optimizations and avoiding high framerate for better aiming

So, frustrated by the frame rate drop, I started to search about alternatives at modern combat 5, even considering modern combat 4 if this one sees well the nvidia controller. (sure there is the nvidia shield game mapper but it does not really interact well with games as written in the reddit entries)
Then in my searches I saw mentioned the nvidia app optimizier (in the settings). There is the possibility to assign to an application certain amount of computing resources or let the nvidia algorithm do it. I do not know what the algorithm does in particular and of course cannot change the app code, but I'm pretty positive that there is at least cpu affinity "sticky" (even in single cpu socket with many cores, moving a task from one core to another adds some delays to fill the pipeline of a CPU) and some graphic options like "ignore this and that". On the graphic options the system has more chances since games do not write their own graphic libraries, therefore they can overwrite game options to tell the graphic cards (or also the CPU that construct the 3d model) to skip some constraints.

I noticed that running MC5 with rendering optimal, rendering level 40% (minimal) and 30 fps was way stable than before. Before even with the same settings but without the nvidia optimizations I had sometimes small freezes or evident frame drops. Instead with the nvidia optimiazations the frame frop (from 30 fps) are almost unnoticeable.

What is still noticeable are the frame drops from 60 fps, in some cases the frame rate drops around 30 fps and, as explained in this page, the aiming speed is affected as well (with the controller at least). Those frame drops from 60 fps are way less than before but are still there.

Since my brain (and I think the brain of many people) cannot predict well a variable aiming speed (due to the variable fps), then it is better to keep the fps limit to 30 fps, so the aim is as consistent as possible and one raises the chances to aim properly more and more. Moreover at 60 fps the aim is just too sensitive due to the chances for the game to draw more "inputs" that means more moving of the camera. That's actually a quite poor coding to have a strong relation between fps and aim sensitivity.

Update: the nvidia optimization algorithm is not bad but I found something that works better. User defined optimizations. I assigned to modern combat 2 cpu (actually MC5 uses one), max frequency, max frame rate (or "off"), memory optimizations, and then rendering 1280x800 . The last part is important, because with those optimization plus "max performance" for the battery (another important optimization, I suppose for the GPU), I was able to play with the standard settings of MC5 (render quality 80%, 30 frame rate per second, render "optimal") with a quite stable frame rate. What is important is not to have 60 fps, but to have always around 60 fps without much frame drops. For example having a minimum frame rate of 55 fps would be great. The same with 30 fps, having a minimum of 25 would be great.

Not so much control on the sensitivity

Even with sensitivity zero in game, the aim with an analog stick on the controller is still extra sensitive. When one shoots the sensitivity changes, it means that to turn around one has to wait more seconds even with the analog stick moved completely to one border. I do not know if this simulates the "difficulty" of handling the recoil of a weapon, or it is due the frame rate drop (when one shoots there is a frame rate drop), or is wanted by the game developers. In the last case it would be quite stupid, since the brain cannot handle different sensitivities easily, especially in situation of pressure.

The sensitivity control related to aim during sniping is a bit better.

Lot of loading from the storage card.

If the storage system of the android platform is not so fast in random reads and writes (what I imagine is the IO load generated by MC5) moving from a menu to another or also when people in game joins will generate little moments of freeze. So the storage should be quite reactive, if one uses a sd card, it should be a good sd card, at least regarding random reads. On my nvidia shield I had to put the game in the internal storage because the sd card could not handle the little continous load, generating even 12 seconds freezes in game.

Not so much incentives to play all the maps

(the community sticks with some maps, others are neglected)

Testing weapon sets

I was thinking how can I jusdge my performance with a weapon configuration compared to another. First an foremost the performance depends on the match, since every match is unique, so I have to play several matches with different configurations. Playing alternating matches between configurations, or keeping one configuration fixed for some matches so I stabilize the performance. I suppose the number of games with each configuration should be around 10 if not more (to be sure to shuffle opponents, maps, situations, etc.) of the same game mode.

Then I have to establish the metric to measure the performance (since I do not have a great feeling of how was the game). I would like to have a lot of data but gameloft does not provide much information so I decided to use the "result" in game (another possibility is the experience). So I collect those results for every game, putting out those games where the spawn system, the controller, the advantages of the enemies in terms of too much weapons, bombing support, etc. This cannot be done with other statistics like the ranking, that is changing even if one does not want to. Therefore to use the ranking as metric, that is not a bad matric, one needs a lot more matches and then making an average/median to have a good value.

So far, for example, I compared the usage of optics 4x against the basic visor and I thought that with the optic 4x I would have had way better performances (since I like to attack the enemies from away). Well it was not the case, because when the enemy is away with the optic I make more damage, but with the basic visor I do some damage too, but in middle or close engagements (that are a bit more often even with my style of play) with the basic visor I do way more damage while with the optic is difficult to follow an enemy that moves. So at the end the result is that the basic visor allows me to be a bit more confident for middle and close engagements.

Aiming enhancement for the nvidia shield controller.

Using the nvidia shield controller - that I found of a very good quality althought with a bit fewer button than a thrustmaster gp xid controller and moreover I always prefer a cable over a wireless connection, - aiming is not extra difficult although it is very limited by the high sensitivity imposed by the game. Indeed I think that a touchscreen player may play better. To improve the experience one can extend the analog stick used for aiming.

There are several ways to do this. Either one buys thumbsticks extenders (not so expensive), or one can use felt pads and instant glue (see image). Gluing pads of the proper dimension on the stick, one may create a proper extension that enable more precision while aiming.

nvidia%20shield%20controller%20extended%20analog%20sticks%20felt%20pads

Why? Because an extended stick, while moved for the same amount of space, produces a smaller angle. Of course an extended analog stick has benefits only if the sensor behind the stick is able to recognize smaller angle movements, otherwise it is useless.

extended%20analog%20stick%20more%20accurate%20theory

Notes

(1) Aside that, recently I write mostly on reddit when I write online, this means that (a) I should find a way to backup my writing on reddit, due to the principle of "one should have always a copy of his own contributions, because online the content lost is a lot and people do not realize it" ; (b) I forget that I have quite expressive places to write personal articles, like this wiki, and then I end up opening more and more online platform that then I have to remember to backup.

(2) the last games played by me on the PC in 2012/3 were world of tanks, war thunder and battlefield heroes. The last two played with heavy use of gamepads . I also tested several gamepads, I found the thrustmaster gp xid the best one, then the xbox360 and the gamepad of the playstation 1 plus usb adapter.

Unless otherwise stated, the content of this page is licensed under GNU Free Documentation License.