Back to Home

How I did Brick Game on Unity3D for Android and got a lock from Google

google play · censorship · copyright

How I did Brick Game on Unity3D for Android and got a lock from Google

    Wikipedia: Brick Game (also called “Tetris”) - a gaming device powered by galvanic cells, equipped with several pre-installed games and a black and white (monochrome) screen. On such devices, there is almost always a game similar to Tetris, although there are often other games with it. There are different types of devices with different numbers of games.

    I’ll talk about how (and why) I created the Brick Game simulator on Unity3D for Android with tetris, a snake, races, tanks and other games, about the experiment with monetization, and about why Google Play can block such an application and how it then unlock.

    Background. Tetris without tetris


    Once I wanted to play Tetris (at first it was the Tetris game, and not the device that we called “Tetris” in our childhood). I rummaged through Google Play, found only two official versions from EA games. I was amazed at the number of useless (in my opinion) fashionable chips and the presence of in-game payments. In Tetris! In general, the sensations were "not the same."

    And then I remembered such a thing as the Brick Game and how great it was to play Tetris. I thought that there must be a simulator on Google Play, and I was not mistaken. There were many such simulators. I put the most popular and ... did not find tetris among the games. In addition, in the middle of the small screen from the squares there was a menu of buttons with modern smoothed fonts, with which you had to start the game, switch the sound, and so on. Not realistic. Strange, a million downloads and such flaws. I checked the rest of the simulators - even more lamentably, and there is almost no tetris anywhere, but where it is - it is implemented crookedly, it is inconvenient to play. Not to mention the realism of the graphic embodiment.

    In general, I decided to fill in the gap and create my own simulator, with a good tetris and a realistic screen, for myself and for everyone.

    From Wikipedia (and later on my own experience, read about it below) I found out why there is no Tetris game in many popular simulators.

    In 1996, the alleged author of Tetris (incidentally, a native of the USSR), along with a certain Henk Rogers, created The Tetris Company LLC and Blue Planet Software abroad, trying to profit from the Tetris brand. The Tetris Company LLC (TTC) registered the word Tetris as a trademark. Since then, several companies have bought a trademark license from TTC. According to American law, the game cannot be protected by copyright (only patent), so the main property of the company is the Tetris trademark. Despite this, TTC pursues game clones under names unlike Tetris. In May 2010, a TTC lawyer sent a letter to Google with a request to remove all 35 clones of this game from the Android Market, although their names are not similar to the name “Tetris”.

    Development. Tool selection


    At first, it was necessary to choose between 1) Unity3D and 2) Android + some library or on the bare Android API.

    I previously had experiments with both Unity3D and C # and with Java + Android, so I considered these options.

    1) Pros:
    + many ready-made functions that are useful for such a simulator
    + the ability to instantly check the application in the editor directly on the PC

    Cons:
    - a lot of weight * .apk file - from 20 MB
    -
    takes longer to start up - gluttony (battery runs down faster, warms up more)

    2) Pros:
    + low weight (“pay” mainly for the weight of graphic files)
    + high startup speed and battery saving

    Cons:
    - you will have to write more code (more precisely, abstractions, or drown in the procedural code)
    - the slow testing process on the emulator / device

    Surely not everyone will agree with my estimates, this is a matter of personal skills and taste. I sacrificed size and gluttony in favor of speed of development and chose Unity3D.

    Development. Graphical representation


    I started by drawing a skin with buttons and a screen. He drew in a vector graphics editor, traced all the details down to each cube on the screen and sticks in digital LCD blocks. It was not possible to achieve full photorealism, especially with buttons, but overall it turned out pretty well. Exported to PNG and threw it into Unity, on Quad, as a texture.



    Later added two more skins - with a large screen and rotated.
    Skin with a large screen (can be convenient on devices with a small diagonal display):



    Without hesitation, the screen decided to revive with the help of small squares with inactive pixels. That is, my entire substrate consists of active pixels, and on top are objects with inactive pixels, to which I switch the visibility, namely the enable flag. The display class contains the most common modifiable array of 200 elements (10x20) (a cell for each box), it’s convenient to work with it.

     I

    suffered a little with the arrangement, maybe there were slight offsets somewhere, but they are not noticeable, because the most important thing is that the active pixels, which are brighter, are placed strictly on the grid and this is sewn into the picture, so scaling (when using high-quality anti-aliasing) is not should ruin the arrangement of the squares. I checked - it happened, everything is smooth and neat, pleasing to the eye, the solution “on the forehead” worked the first time.

    There is a slight shadow around the buttons when not pressed, for the animation of the buttons I added masks with a hole under the button and shading that appear when pressed and make the button visually pressed into the case.


     The
    button colliders are spherical and with a radius slightly protrude beyond the buttons to make it easier to get (this is especially true for the top row of small buttons).



    Development. Sound


    While working on the application, I found the real Brick Game in the city market, brought it home, and recorded the sounds of pressing and releasing real buttons. Many players, by the way, were annoyed by these sounds, I released an update that turns off these sounds in Mute mode, but even through the clicking of the device itself, the sound of pressing buttons was breaking through and people asked to make these sounds quieter. And I liked these sounds so much that I did not want to muffle them.

    Pilicanum was generated in advance by a simple synthesizer (mixed several types of waves).

    Development. Logics


    The first game I added to my simulator was, of course, Tetris. Here I tried: a symmetric system of turns, bounces from walls and the floor when turning, turning 180 degrees in a narrow well, a fair figure selection generator, sliding after a soft fall, control (good responsiveness in general, a sharp drop by double clicking down, turning backwards side up) and even the famous T-spin seemed to be able to do. As a result, it was more convenient and pleasant for me to play this game on my simulator in a smartphone than on a real Brick Game. Not to mention the official Tetris for Android, which is more like a circus performance than a tetris (IMHO).



    In Unity3D, you can use C # and all the charms of OOP, which I did. I wrote a base class for all games (with the commonplace name Game) and added them one at a time, inheriting from this class.

    He added a snake, races, several more types of tetris (for example, with figures of 5 blocks), pong, later tanks, an arkanoid ... I also pushed a couple of games unusual for this device: Digger and Bomber. Digger turned out to be super complicated and incomprehensible, but decided to leave it as a highlight.

    I made a standard screen fill animation when losing (with the display of the display in code as an array, this was elementary), an explosion animation for racing and a couple of other games. Sprite, AnimatedSprite added to the classes. For example, each Tetris figure I have is Sprite, and after shifting this sprite, you can check for collisions with the playing field and react accordingly.

    In general, the development of logic went smoothly and a month after the start of development, I posted my simulator on Google Play. The first icon was a screenshot from the game, over time I drew a stylized icon more beautiful (while I was drawing, I dreamed about an application with exactly the same design, a reduced screen and three buttons which should basically be enough for Tetris and a snake):



    Promotion


    Out of 39 thousand, only a couple of hundred people came from Internet links that I left on various sites dedicated to Android games. All the rest - independently found the application in a Google Play search.

    Monetization


    I was wondering how much you can earn on such a game, because all the simulators were full of advertising to disgrace, advertising of all kinds and it seemed that this made some sense. I connected Google AdMob and in my calculations it turned out that if you cover up the entire application with advertising, you can get at least $ 5 for every thousand downloads. Less advertising means less money. Make advertising 5 times less likely to be roughly $ 1 per 1000 downloads. Million downloads = $ 1000. Or $ 5000, if you can feed users ads with small interspersed with the actual game. This applies only to AdMob, they say there are more generous affiliates, and I also had the majority of traffic from the CIS countries and Brazil (for some reason), the click rates from these countries are low, this also affects.

    You must have been embarrassed that I only consider downloading at home. As my statistics have shown, there are few inflows from regular users, mostly newcomers play, half of the downloads generally remove the application immediately or the next day, and those who leave play so rarely that they have little effect on the statistics.

    After a month, I decided to turn off ads so as not to spoil the application. I note that after disabling advertising, the average rating increased and the application’s popularity also went up, users began to note the lack of advertising as one of the exceptional advantages of my simulator.

    Lock and unlock




    On October 4, the game was blocked and Google Play Support sent me an email saying that my application “has been removed from Google Play because it violates our metadata policy. This app won't be available to users until you submit a compliant update. ”, Which means something is wrong with the description or title. They didn’t give any details what exactly didn’t suit them. Like, read the rules, guess for yourself, correct or file an appeal.

    I immediately suggested that the blame for the presence of a tetris game in the simulator and the mention of this in the description. But this is a simulator of a device in which there was always Tetris (in the first Brick Game, there was nothing except Tetris)! And it so happened that the Brick Game device we called "Tetris", although this is incorrect, but took root, became a household word.

    But still, I did not know the cause for certain, therefore, without changing anything, I appealed.

    After 2 days, the answer came:



    Translation : We do not allow applications with metadata that are misleading, unrelated to the application, redundant or unacceptable. Metadata includes application descriptions, icons, screenshots, and promotional images.
    For example, the description of your application has references to Tetris.
    Please remove extraneous keywords ...


    This is such insanity, you cannot write that you have tetris in the game, even if it is there, but it’s better to remove it altogether, probably so that there are no problems in the future. It would be possible to save time if they immediately wrote that the thing is the word tetris in the description.

    Exposed Censorship Description:



    The application is then unlocked. I do not exclude the possibility that in the future they can slam the lock for the fact that there is a tetris in the screenshot or that it is in the simulator itself.

    References


    I removed links on the advice of one commentator so as not to break the rules.

    Read Next