The first week after launching Wisps: The Redeeming on Desura has ended and it is great to see my game in the hands of so many people.
It is also a surprise for me to observe that the game was quite misunderstood for what it is and generated some negative feedback along the more positive one. Although I have tried to present the game as being an arcade one, which it is, most people perceived it as a casual Snake clone. This perception led to two expectations that I did not foresee during game's development: "the
game is easy to play" and "the game should run on casual gaming hardware like laptops with integrated Intel graphics".
To address the first issue, I would like to state that the game is not a casual game, although dressed like one, but quite a hardcore arcade game. It is harsh to the players from the beginning by forcing them to learn and master an unusual mouse based control scheme, and then it pushes their brains to the limit in later levels as they have to figure out and memorize big labyrinths. Some players reported the game being very challenging and mentally exhausting. It was designed to be hard as I believe overcoming greater challenges brings more satisfaction to the player. However I still wanted to do something for the more casual players and so I decided to ease up the learning curve of the control scheme, as it was reported the most difficult step in playing the game by many players. Therefor in patch 1.0.2 I have improved the initial mouse sensitivity to make it easier to control by new players and I have also improved the Mouse Sensitivity setting in the Options menu so now it is more clear which multiplier is currently set. I am still playing with the idea of making a separate "Casual" game mode that would act as an introduction to new players, while leaving the current mode as an "Arcade" option for the hardcore fans.
Now onto the second issue, the game's performance. Although it is well known that Intel graphics are not meant for gaming, people love to play games on the go and there are a lot of less demanding games in terms of graphics that run just fine on this type of hardware, especially casual games. Therefor, perceiving Wisps as being such a game, some people had an unpleasant surprise when the game's performance was at best sluggish on their laptops. While I did a lot of optimizations during Wisps' development cycle, I knew it had some problems with integrated graphics chips, but didn't pay too much attention to it, erroneously thinking most of the players would have mid to high-end gaming machines. There are a lot of passionate gamers around the world which use low-end machines for their entertainment sessions and they could not play my game, and that was not my intention at all. So I decided to give it one more try to optimize the game for such machines (big thanks to my wife for letting me take over her i3 based laptop with Intel HD graphics).
Because the game was developed using Unity 3D technology and I have no control over the engine's internals, first I have tried to understand what is the cause of the sluggish performance. The game was running with 20 FPS on the laptop, which is a bit too lagging for the needed mouse precision in controlling the firefly. I needed 30 FPS in order to provide the player with a fluid gaming experience.
My first assumption was that the problem lies in un-optimized, too big textures, giving the low memory bandwidth and shared memory of such graphics chips. So I went on and optimized the size and filtering of all the textures in the game, which led to 1/3 installer's size reduction, but had basically no effect on the frame rate, the game was still running at 19-20FPS.
In my second attempt I have made twelve builds of the game, and in each one of them I have disabled some visual feature, ranging from GUI and special effects and ending up with not showing the trees or the terrain at all. Of all the builds, only the ones not showing the terrain or the trees gave frame-rates increases of about 10FPS, reaching the desired 30FPS I needed.
On my third and last attempt I have tried to simplify tree shaders to basic diffuse ones affected by one single light and to simplify the terrain mesh by 16 times, showing just a couple of hundred triangles. I also have disabled most of the lights. As a mention, all my trees in a level are instances of four to five unique meshes using the same one material, so a very small number of draw calls was used to draw the forest. Unfortunately these changes had no effect on the frame rate. Seeing that I have no chance of making the game run faster on the Intel chip, I wanted to at least collect some data and explain how slow the chip really is. Here is what I came up with:
With all the optimizations in place, on the screen there were at most 200 trees displayed at once, the terrain, and some wisps (which have very few triangles). Giving the fact that a tree averages 30 triangles and the terrain was so simplified that the viewable area was less than 500 triangles, we can approximate that the whole scene could have had about 7000, diffuse shaded and textured triangles, 90% of them being affected by at most one light at a time. To make a comparison, a modern first person shooter character features that number of polygons alone and there are usually more than one on the screen at the same time, all using complex shaders with up to four texture units, plus the game's environment in the background. Even a mobile device such an iPad can push way more triangles than that, and I'm thinking more and more of a Wisps port to such devices.
In conclusion the Intel chips are very crappy devices. I regret my game won't run well on them but I still hope Intel will make some move to improve their technology in the near future.