
The story of the bike

This story began a little over a year ago with the advent of my wife's modern smartphone. She asked to find the Solitaire Solitaire, the same as it was once on desktop Windows. After reviewing a dozen programs, I was unpleasantly surprised - almost everywhere there was an inconvenient control, controversial pictures of cards, a sea of extra bells and whistles like 250 solitaire games in one, setting photos on a shirt and blackjack with harlots. As a result, they chose one of the more or less suitable options and forgot about it for a while.
A year passed and I began to write programs for mobile. At the same time, the cross-platform issue, debugging in-app purchases, and preparing content for different platforms became an edge. There was an idea to make a Tetris pen or another calculator for testing, but nevertheless, as a “bicycle”, I chose the “Scarf”. The ideological core of the project was the most accurate repetition of the old, good solitaire from a set of Windows games.
Content

For the shirt, the most pleasant (in my opinion) picture was chosen with a beach and a palm tree with manual drawing. It turned out very recognizable - the look in the picture does not linger, although if you look closely, the difference is obvious.

Gameplay

The code
I wrote the business logic of the program in pure Java 1.6, without using third-party libraries, Android, Swing, etc. For Android, this part is assembled as a separate library and connected to the GUI project without any problems, but for other OS I decided to go a non-standard way and Do not port to the forehead into other languages. After some file processing, the Sharpen projectI was able to convert this code to pure C #, which paved the way for implementation under iOS using MonoTouch, and in the future for Windows Phone 7/8. The simplest unit tests showed that the logic of work has not changed, the broadcast was successful. In the MonoTouch environment, I implemented the GUI display without any nuances, debugged the game on the emulator and iPod Touch and sent it to the iTunes Store for approval. I implemented the program settings using external binding to KGN.InAppSettings , stumbling over some little things like the lack of thumb support for external libraries.
Problems

High definition

A lot of effort was spent on this work, so it was logical to release a separate HD version, and at the same time add an in-game purchase to the regular version. With the implementation of In-App Purchases under MonoTouch, it was not easy, but to make it look organic, I decided to get rid of KGN.InAppSettings and make a single interface for settings and purchases. I won’t describe technical details here, but I gathered a lot of them, including Monkey’s work on creating your own Settings identical to system ones, struggle with the lack of documentation for StoreKit for Mono, various bugs with debugging of purchases, etc.
Profit
The game did not become a masterpiece, did not hit the tops, and it is unlikely that it will pay for the development costs and the work of the designer, but now I have on my devices (including the smartphone from which it all started) the “Scarf”, which is very similar to the original, which became native since the time of Windows 3.1. The experience of writing portable code in Java and porting it to C # turned out to be simply invaluable - a similar method my team ported several large Android projects to iOS, and due to debugging on a small game, it turned out to be a good idea to study the MonoTouch underwater rake and iOS development in general, and write at the same time some useful libraries. Maybe someone will laugh at this story, but as for me, the “bicycle” came out very fit, and the time was spent not in vain.
Post scriptum
I specifically avoided going into the details of porting and working with MonoTouch, because each of them deserves a separate topic. Sooner or later I will gather my strength and lay out my class for In-Game Settings, the purchase manager, etc. on the court of the public.
I don’t post links to the project, so as not to be considered advertising.
If anyone needs an updated map generation script, write to scanwords@runserver.net, it is a derivative work from the GPL project, so I’ll post it without any problems.