История создания игры

Первый компьютер я приобрел в 1996 году с целью изучить основы делопроизводства. Тогда начал играть в различные компьютерные игры. Любимой игрой были игры Doom, Hexen, Need for speed. Параллельно приобретал различные карточные игры на дисках. Тогда были популярны: пасьянс Пирамида, Паук, Косынка, игра в Дурака.
Примерно в 2000 году я подключился к интернет, где и познакомился впервые с играми: «Игра в дурака» Ивана Ускова, «Визуальный дурак» Сергея Белова и «Придурок» Владимира Усова. На первый взгляд эти игры мне понравились, чувствовалось, что каждая из этих игр написана с душою, но в каждой игре все же чего-то не хватало. Заинтересовавшись карточными играми в дурака, скачал еще где-то 6 игр и нашел на мой взгляд для меня самую интересную это была игра «Дурак» С. Высочина и А. Веселова. Обыграв не один раз компьютерного противника, подумал, что я бы мог сделать игру гораздо интереснее.
Заинтересовался как пишутся компьютерные программы, почитал различную литературу, нашелся знакомый человек (программист), который сказал, что очень легко и просто пишутся программы в FoxPro, по-моему так называется эта среда программирования. Взял пару дисков с FoxPro, примеры написания программ и сел изучать программирование. Где-то через месяц понял, что это не то. Стал продолжать искать информацию по программированию и как пишутся компьютерные игры. Случайно в интернете узнал, что игры пишутся на С++, вследствие чего приобрел диск со средой программирования Visual C++ и книгу по программированию.
Восторгу моему не было предела, сразу же создал оболочку, кнопочки и все на этом закончилось, прошла эйфория. Как быть дальше не знаю, ничего не понимаю и все, поэтому забросил все это дело подальше. Параллельно учась в юридическом институте, зашел как-то в книжный магазин за юридической литературой и случайно попал в отдел литературы по программированию, где просто взял с полки книжку по программированию в среде C++ Builder 5. В этой книге описывалось создание пасьянса и игры в морской бой. Я понял это то, что мне нужно. Тут же купил книжку и в соседнем магазине диск со средой программирования C++ Builder 5. Через неделю пасьянс, который был описан в книге был у меня скомпилирован и можно было поиграть в него. Хотя в той книге было достаточно ошибок, из-за которых пришлось не поспать ночи 3-4. Не помню название той книги, так как она у меня пропала через год, не знаю куда и не помню кому отдал. Вроде бы знакомым студентам, которые мне ее не вернули. Больше этой книги даже в продаже не встречал. Но коды были сохранены на диске. После того как заработал пасьянс я решил написать по аналогии дурака, вот тут все и остановилось. Языка программирования C++ я не знал. Снова в книжный магазин, где я купил уже более серьезную книгу «Программирование в C++ Builder 5» А.Я. Архангельского. Просто наилучшая книга по тем временам по информации, но язык по ней не изучишь. Поэтому изучение C++ Builder продолжилось, а вот написание программы осталось на месте.
Как-то гуляя по интернету попал я на форум по программированию, где как раз обсуждалась литература по С++ и там советовали книги по изучению языка программирования C++. Многие форумчане писали, что самая лучшая книга это «Как программировать на C++» Х.М. Дейтел и П.Дж. Дейтел. Этой книги нигде в продаже не было, поэтому зашел в интернет-магазин и заказал ее там. Через пару недель пришла книга и я сел изучать C++. Трудно было, так как ничего не понимал, но изучая по 6 часов в день, через 6 месяцев я знал С++ от и до. Единственно камнем преткновения были рекурсия и классы. Классы и по сей день хромают. И вот где-то через 3 месяца как я изучил C++, я написал первую версию игры в дурака. Алгоритм был детским, в функциях обработки хода игрока были ошибки, зато компьютерный соперник играл настолько сильно, что выиграть его было достаточно сложно. Много раз исследовал этот алгоритм, но понять так до сих пор не могу, так как в функциях имеются ошибки, которые невозможно анализировать во время игры. Игра получилась достаточно «сухая», так как в меню кроме надписей «Новая» и «Выход» больше ничего не было. Восторгу моему не было предела. Уже то, что создал игру своими руками побудило меня на дальнейшее программирование кода к игре. Так как свои идеи реализовать я еще не созрел, то взял исполняемые идеи из других программ. Хорошая идея была создать несколько стилей противника, что я тут же и реализовал, после чего необходимо разнообразить игру рубашками и фонами. После создания стилей противника, алгоритм сразу ухудшился и компьютерный игрок стал играть намного слабее. Так как написать хорошую функцию анализа ходов я не умел, то остановился на самом простом варианте: компьютерный игрок предполагает какие карты у соперника и, исходя из этого выбирает наиболее приемлемый ход. Проще говоря, каждую возникаемую ситуацию прописывал в виде отдельной функции. Накопилось где-то около 100 ситуаций, которые вошли в большую функцию анализа хода. В день играл около 200 партий и с каждой игрой добавлялись новые ситуации. Таким образом и создалась та функция, которая и обрабатывает по сей день все ходы игрока.
Наступила середина 2001 года. В разговоре с приятелем он заикнулся, что я занимаюсь ерундой и впустую трачу свое свободное время и т.д. Для меня это было хобби, поэтому его слова на меня сильного эффекта не производили. Зато выпив несколько литров пива поспорил с ним, что смогу через интернет продать хоть 1 копию программы, пришлось сделать платную версию. Пол-года платной версии принесли разочарования, так как проспорил. Предмет спора конечно же не скажу, жаль было отдавать. После окончания спора игра стала бесплатной.
Продолжая изучать среду и язык программирования, я выпускал новые версии игры, практически ежемесячно. Шел 2002 год. Работа не позволяла заниматься любимым делом, поэтому программирование шло с 21-00 до 1 ночи. Итогом работы к 1 января 2003 года стала версия с несколькими разновидностями дураков, которых я нашел в интернете. В программе появилась анимация, различные опции, но алгоритм обработки хода стоял на месте.
К лету 2003 года ко мне приехал друг с Магадана и мы как всегда в свободное время играли в Дурака. В девяностых годах прошлого столетия были времена, когда мы с ним играли от 100 до 150 партий в день. Иногда партии были долгие и принципиальные, а иногда быстрые. И вот тут мне пришла в голову идея создать отдельные алгоритмы обработки стилей и ходов в игре. Код к программе значительно вырос, функции были громадные, оптимизации кода никакого. Опять к книгам, снова приобрел еще ряд книг по программированию (на фотографии, что ниже показаны все книги, которые и по сей день мне помогают работать над программой).

Версия 3.0 стала победой оптимизации кода и новой графики. Код был уменьшен практически вдвое. Была нарисована новая колода. Колода рисовалась несколько месяцев, пиксель за пикселем, где пиксель изменялся, а где копировался. Несмотря на то, что русская колода сильно напоминает традиционные карты, на самом деле более половины рисунка делал сам. Версия 3.0 стала прорывом на новый более качественный этап в создании игры.
Далее все что было создано от версии 3.0 до версии 5.0 это продолжение изучения языка и среды программирования. Многое что удалось оптимизировать вновь, но настоящая оптимизация пришла к версии 5.2, когда все что возможно оптимизировать было сделано. Код был построен таким образом, что в будущем исключалось возникновение любых систематических ошибок. От чего я не был застрахован ранее.
На пороге создания версии 5.0 была проблема, оболочка программы была в формате Windows Me, когда уже все программы работали с XP. Удалось найти компонент Theme Manager и сделать оболочку XP, но и этого было мало, хотелось более красивой оболочки. На одном из форумов мне посоветовали использовать компоненты фирмы tmssoftware.com. Оказалось, что эти компоненты были платные. Пришлось идти в банк и переводить в Германию, по-моему 150 долларов. Покупка не прошла бесследно, у программы появился новый интерфейс, который существует и по сей день. На мой взгляд компоненты этой фирмы являются наилучшими и сегодня.
Развивая программу все дальше и дальше, у меня давно созрело желание написать что-то вроде библиотеки, где бы описывалось все то, что посвящено картам. Почему? Да потому, что вся информация в интернете и в книгах была сухая и недостаточная, необходимо было объединить все это в одной книге или в одном произведении. Человек, который ищет какую-либо игру получает о ней совершенно разную информацию в разных местах. Я же решил собрать всю информацию, которая имеется на сегодняшний день в интернете и в книжных магазинах, информацией также послужили письма пользователей, а некоторая информация переведенная с английского языка на русский. На составление первой версии библиотеки ушло около одного года. Где-то по 6-8 часов в день уходило на составление и написание текста. Составлял не только сам, но и знакомый студент, который помогал мне за деньги. Помощь этого человека встала боком, так как он просто копировал тексты не редактируя их. Я же сам вручную составлял тексты и писал их в библиотеке. В итоге библиотеку пришлось исключить из версии 6.0, чтобы не нарушать ничьих авторских прав. Труд получился громадным, может быть не столь красивым, так как был выполнен очень просто в формате моего сайта. Впервые библиотека появилась в версии 5.6. Следующая версия библиотеки была написана в формате справки chm и уже включала на порядок больше информации, к тому же мне пришлось еще раз проверить все тексты на авторство, сгруппировать все игры (объединить одинаковые) и многие тексты были переписаны мною еще раз, только пасьянсы не удалось сгруппировать. На составление уже второй версии библиотеки ушло порядка 6 месяцев по 6 часов в день.
Вроде бы все хватало в моей программе, но к моменту появления версии 5.9, был объявлен анонс новой версии Window Vista и после просмотра скриншотов этой версии я понял, что необходимо переходить на новый уровень, а это иконки, колоды, новый вид библиотеки и т.д. К тому же скачивания моей программы достигли до 500000 копий в сутки. Уже второй месяц висел сайт от закачек. Работники хостинга говорили, что необходимо менять тарифный план и ставить сервер, а это вроде бы порядка 10000 рублей в месяц. И тогда я решил сделать программу платной, несмотря на то, что этого не предполагал делать. Так как игра стала платной, то сразу возник вопрос, а в какой среде написана программа легальной или нет. Пришлось купить официальную версию C++ Builder 2007 за 25000 рублей, далее C++ Builder 2009 и C++ Builder 2010. После этого возник вопрос с иконками и тут пришлось приобрести их за 200 долларов в glyphlab.com, затем к этому времени оказалась просроченной лицензия за использование tmssoftware.com, пришлось продлить лицензию за 150 долларов. За перевод программы на английский язык было заплачено 6000 рублей. Но самое главное Windows XP была пиратская, тогда приобрел легальную копию Windows Vista за 4700 рублей, заодно TheBat  и ряд других нужных программ. Оказалось, чтобы продавать программу необходимо было преодолеть множество проблем. Когда проблемы были решены, то на продажу программы я заключил 2 договора: один с интернет-магазином СофтКей на продажу через интернет и второй с компанией МедиаХауз на тиражирование и продажу на территории России и всех бывших республиках СССР.
Вроде бы все хорошо, да вот времени стало катастрофически не хватать. Что касается сайта и библиотеки, то информация добавляется в них ежедневно. Не забывайте обновлять страницы при повторном просмотре. Имеются еще порядка 600 неописанных ни кем пасьянсов, большое количество материала по карточным фокусам, порядка 300 карточных игр. Примерно по одной странице в день-два добавляю. Существует сегодня множество идей и новшеств для игры, которые даже записал, чтобы не забыть, примерно около 300 Ваших предложений по усовершенствованию игры, но когда реализовывать вопрос, могу только тратить не более одного-двух часов в день, поэтому выход новой версии 7.2 переносится на новые сроки. С 9 мая 2011 года игра стала бесплатной!