«Детский» геймдев или «Как я играл в инди-разработчика»

Здравствуй, хабр и его обитатели. В этом посте я поделюсь с тобой прохладной историей о том, как я пытался создать Самую Настоящую Инди Игру в одиночку, и через что мне пришлось пройти, чтобы не бросить это неблагодарное дело на полпути, а также о том, что в итоге вышло.


Предисловие


Итак, начнем с того, что мне на данный момент мне 17 лет и я школьник. Многие перестанут читать уже после предыдущего предложения, мол «Очередная школота на моем хабре, что он тут вообще забыл?!», поэтому если вы все еще продолжаете читать — спасибо вам, постараюсь оправдать ожидания.

Начало начал


А началось все как обычно с Идеи. В сентябре 2011 года мне вдруг пришла в голову мысль, что неплохо-бы применить свои небольшие на тот момент знания java и написать какую-нибудь поделку на областной конкурс «Юный программист», а поскольку просто программки мне писать не хотелось, я решил написать игру. Но какую? У меня было множество идей, но все они упирались в одно — я совершенно не умел рисовать. Тогда я пытался вспомнить игры, построенные на простой, либо процедурной графике. Вспоминались Darwinia, Dyson(ныне Euphloria), да тот же Tetris, и в конце концов мне в голову пришла идея написать свой Crayon Physics Deluxe, с магнетизмом и нердами. Неплохая идея, надо сказать.

Вкратце геймплей игры я представлял себе так: как и в Крайоне игрок имеет шарик, уровень и некую конечную точку на нем, к которой этот шарик нужно провести. Разница лишь в том, что в Крайоне нужно было рисовать, а в своей игре я предполагал произвольное изменение физических законов мира так, чтобы они удовлетворяли нуждам игрока. Грубо говоря, захотели, чтобы F = ma стало F = mv и поменяли. Или g = 9,8 на g = m. Круто! Но сложно для игрока.

В итоге концепция свелась к тому, что у игрока есть набор из нескольких формул, которые он может применять к объектам на уровне. Каждая формула воздействует на одно из физических свойств объекта. Например, на первом уровне есть шарик, находящийся в невесомости, склон, а у подножья склона — финал уровня. Дана формула «ГРАВИТАЦИЯ». Решение элементарно — перетаскиваем формулу на шарик, он падает и катится вниз по склону, приводя нас к следующему уровню.


Разработка и первые версии


Естественно, самой сложной задачей было написание физического движка. Хотелось написать все самому, брать готовое не люблю. Яву я знал на довольно слабом уровне, до этого писал на ней только простенькую Tower Defence, сапера и несколько программок, а физику и вектора вообще практически не знал. Тем не менее, пытался сделать все сам. Когда не получилось, начал искать статьи. Статей нашел много, но все они были откровенно говоря неполные и помогли очень слабо. В итоге я нашел отличную статью, в которой был довольно подробный код (за исключением некоторых участков), все сурсы и скомпилированный пример. Идеальный вариант, за исключением того, что код был на Delphi. Но дельфи не хаскель, код я успешно перевел на яву за пару-тройку часов.

К моему счастью, все заработало и я принялся работать над геймплеем. Скоро я узнал, что пресловутый конкурс «Юный программист» уже не за горами и прислать работу нужно было до 1 октября. Учитывая, что начал я во второй неделе сентября, а на написание движка ушло две недели, у меня оставалась неделя на реализацию геймплея. Графику я сделал незамысловатую, как выразились зарубежные тестеры — «Old CAD style». В итоге за неделю я сколотил первую версию геймплея, в которой было даже меню и раздел помощи. Один рабочий день угробил на создание трех уровней — все в чистом блокноте, никаких редакторов я тогда еще не сделал. Название было придумано соседом по комнате (живу в общежитии), оно показалось мне довольно хорошо звучащим, хоть и практически бессмысленным — Spin Deluxe. Итак, 30 сентября в 23:59 я отправил первую версию игры на конкурс, не обращая внимания на то, что игрушка безбожно тормозила даже на моем eMachines E642G в режиме высокой производительности.

Скачать билд можно здесь.


Неудача за неудачей


Конкурс должен был состояться к в ноябре, как я помню. К этому времени я исправил множество ошибок, доделал интерфейс и меню, исправил баги. На моем ноутбуке игра больше не тормозила. Каково же было мое удивление когда принеся новую версию на конкурс я обнаружил, что игра все же тормозит и довольно сильно. Сильно это не помешало, у меня была идеальная презентация и представление в целом, мне даже не стали задавать вопросов, но эффект все равно был смазан. Да и к тому же игра до сих пор выглядела довольно сыро, из звукового оформления практически ничего не было — визуальное тоже хромало на обе ноги. В итоге получил второе место, что показалось мне довольно обидным, так как работа на первом месте была мягко говоря убогой и написана дилетантом. Могу из нее припомнить лишь то, что игра была написана на Visual Basic и для хранения внутриигровых данных использовала не оперативную память, а таблицу Excel на диске. Именно тогда я понял, что меня окружают дилетанты и решил идти своим путем.

Скачать билд для конкурса можно здесь.

Тем не менее, мне предложили участвовать в школьной научно-практической конференции, и я согласился. К тому моменту я серьезно поработал над интерфейсом и даже сделал редактор уровней, работа стала идти намного быстрее. iZucken написал первую музыку, а reAlien нарисовал иконку. Я также занялся оптимизацией с помощью профилировщика. Оказалось, моя ошибка была в том, что я использовал совершенно неверный способ отрисовки, поэтому отрисовка графики занимала 98% времени выполнения. Мое представление очередной обновленной версии вызвало восторг зала и обеспечила мне однозначное первое место.

Естественно, на научную работу моя поделка не тянула, поэтому в своем докладе я указал цель работы «Изучение языка программирования Java, как языка разработки игр». Притянул тему за уши белыми нитками, как говорится. Вероятно поэтому на городском этапе конференции я не занял вообще ничего, а первое место получил паренек, который сравнивал скорости различных типов подключения к интернету. Справедливо? Меня даже не отметили, в отличие от паренька, который написал гостевую книгу на PHP даже без простенького дизайна, в которой из тегов было только b и br. Я к тому моменту за месяц набросал на платном хостинге небольшой сайт с форумом, галереей и файловым архивом. Все это не к тому, чтобы поплакаться вам в жилетку, а к тому, что я в очередной раз получил серьезный минус к мотивации, что чуть не заставило меня в очередной раз все бросить. Вот такая у нас поддержка начинающим разработчикам.

Посмотреть сайт можно тут.
Скачать билд для конференции — тут.


Desura и все-все-все


В феврале я наткнулся на сервис распространения инди-игр Desura и мотивация вновь посетила меня. Создав страницу игры и залив скриншоты я получил отказ — мол скрины не очень, да и трейлера не было. В итоге я занялся серьезным улучшением графики. Корявое нечто теперь действительно превратилось в шарик, интерфейс был полностью переписан и изменен, стал менее громоздким, добавилась таблица рекордов и многие вещи, имеющиеся в серьезных проектах. Игра стала мало чем отличаться от финальной версии. За пару вечеров был сделан трейлер под специально написанную музыку. В итоге я получил долгожданный аппрув и огромный стимул работать дальше.

Итак, код игры был готов на 95%, осталось самое сложное — контент. Делать уровни упорно не хотелось. Хотелось получить их все и сразу, да так, чтобы не меньше сотни. Делал по 2-3 уровня в день. Иногда не делал вообще ничего. Фантазия упорно не хотела работать. В итоге однажды я сел на задницу и нарисовал в тетрадке 20 уровней. Потом еще 20. Пару недель затратил на реализацию и доработку концепций уровней. Разбросал их по главам, написал интро и аутро, добавил еще визуальных эффектов. Продукт приобрел практически готовый вид. iZucken написал еще несколько треков, которые успешно вписались в игру.

Релиз был запланирован на 4 апреля. Единственной моей ошибкой была — цена. Отчасти виноват был я, отчасти мой отец, подбивавший меня продавать ее дороже, чем я хотел. В итоге финальной ценой я установил сумму в $4.99. Дорого и опрометчиво. Купило всего пару человек. Снизил цену на 75% — стали немного покупать. Но все равно недостаточно, сказывался недостаток пиара, в котором я абсолютно не смыслю.

Как говорится — первый блин комом. Но в целом за эти полгода я приобрел бесценный опыт, многому научился на ошибках. Спасибо геймдеву за это!

Трейлер можно просмотреть здесь.
Страничка игры на Desura — тут.
Скриншоты — здесь и там.

Спасибо за внимание, до новых встреч!

UPD 1:

Heliki просил рассказать об оптимизации, которую я провел. Итак, самая значительная работа была проведена с графикой. Дело в том, что изначально я делал как-то так:

public class Graph extends JPanel{
     
     private Timer myTimer;

     // конструктор, создание таймера и прочее     

     public class paint(Graphics g){
         // отрисовка
     }
     
     public void onTimer(ActionEvent ae){
         repaint();
     }
}


Но этот метод был крайне медленным, уж не знаю почему. Более правильный метод использовал класс Canvas, как компонент для отрисовки и класс BufferStrategy для буферизации. Этот более низкоуровневый метод и позволил снизить время отрисовки.

Также я провел серьезную оптимизацию для класс Vec(простой двумерный вектор). Так как я большинство кода физического движка копировал из статьи, каждый метод класса Vec, будь-то add, sub, mul, div, normalize и т.д. возвращал новый Vec, что приводило к созданию миллионов объектов данного класса. Да, код был довольно красивый из-за возможного chaining'а, т.е. возможны были конструкции вроде

Vec toMove = pos2.sub(pos1).normalize().mul(speed);


В итоге на поздних этапах создания я сократил количество одновременно созданных векторов с полутора миллионов до тридцати тысяч (примерно), переиспользуя уже созданные объекты. Хоть это и не предел, результат был довольно внушительный, хотя и не сильно заметный для человеческого глаза.
Поделиться публикацией

Похожие публикации

Комментарии 123
    +49
    Забей на всех, на неудачи и на идиотов что смеются вокруг, забей на то что ты школьник, забей на всё, и делай то, что тебе хочется. Только не останавливаться. И в универ ехать учиться в другой город, это позволяет воспитать самостоятельность раньше.
      +9
      Спасибо. Учусь уже 4 года в другом городе. И планирую уехать еще дальше от дома. Возможно из-за того, что самостоятельность раньше развивал и не бросил начатое.
        0
        Побольше такой школоты, которая не пиво во дворе хлещет, а занимается чем то полезным.
      +1
      При попытке скачивания билдов: Page doesn't exist. =(
        0
        Упс, сейчас поправлю.
          +5
          fixed. Качайте.
            +1
            Качается. Спасибо за оперативность.
          +6
          Молодец!!!
          Раз игра на JAVA, портируй для андроид. Мне кажется для мобильной платформы она лучше подходит.
            +2
            Спасибо. Уже есть такое в планах. Как-нибудь соберусь с силами и начну.
              0
              А где Линукс?
                +1
                Будет версия как для линукса, так и для макоси(хотя для нее обещать сложно, пока протестировать работоспособность на ней нет возможности).
                  +1
                  А что вы за бинарники используете? lwjgl, jogl, libgdx?
                    +1
                    Не могу понять, что препятствует кроссплатформенности из коробки.
                      0
                      Бинарников не использую вообще, дело в том, что я jar оборачиваю в .exe, т.к. десура, насколько я понял, не позволяет использовать просто .jar. Хотя я в этом не уверен.
              0
              У вас получилась очень интересная игра. Я к ней уже давно присматривался…
                +49
                Отлично. Далеко пойдешь )
                Не могу не приложить )
                image
                  +42
                  Такая школота среднестатистической нешколоте 100 очков форы даст.
                    +2
                    Хехеее! Игрушка классная, скачал билд для конференции — сижу гамаю) Перетаскивание свойств на объекты — отлично!
                      0
                      Лучше уж скачать демку с десуры тогда =) Там уровней столько-же вроде, а сама игра лучше.
                      +3
                      Геймплей хороший, но вот графику все же надо сделать православную, особенно если хотите портировать на моб платформы и чтобы игру покупал обычный люд.
                        0
                        Спасибо. Насчет графики было много восклицаний, но ни одного конкретного предложения(кроме того, чтобы сделать заливку объектов градиентом, что я реализовал) не поступило.
                        В целом я не знаю, как можно сделать годную графику для игры, в которой форма объектов абсолютно произвольна. Разве-что как-то декорировать линии объектов или заливку им придумать другую.
                        Единственное, что мне недавно пришло в голову — сделать динамичный ненапрягающий фон. Какие-нибудь звезды или вроде того.
                          +1
                          Я бы посоветовал как минимум инвертировать цвета, ну или хотя бы сделать фон более светлее, черный фон — не самый приятный для глаза. Еще можно попробовать поэкспериментировать с эффектами внутри статических объектов, допустим какие-то сгустки энергии исходящие от ребер внутрь объектов, которые изменяют свое поведения в зависимости от прикасания к ним других объектов и т.п. Еще можно поэкспериментировать с небрежностью в линиях.
                            +1
                            Про изменения при прикасании писали ниже — идея и правда хорошая, спасибо.
                              +7
                              Кстати, как временный вариант «дешево и сердито» можно просто заливать геометрические фигуры текстурами. Я вот взял случайный уровень с кораблём, нашёл в инете пароход, надёргал из него кусков, залил небо градиентом и получил по графике что-то похожее на четверть игр в АндроидМаркете:





                              Обратите внимание — я специально не применял никаких художеств. Можно просто взять любую фигуру и сделать ей fillPattern.
                                0
                                Есть простой способ для тех кто не умеет рисовать:
                                1. Создаём коллаж из фоток в инете.
                                2. Обводим его вектором (подойдёт и Flash MX).
                                3. Заливаем градиентом используя пипетку для определения ключевых цветов.
                                4. ???
                                5. Профит.

                                Техника требует немного опыта, но работает нормально даже на секретаршах и школьниках — доказано опытным путём. Правда желательно иметь нормального корректора этих художеств, но даже без него результат будет лучше картинки выше…
                                  +1
                                  Да, о чем-то таком я думал.
                              +1
                              По поводу того, как сделать красивую графику, состоящую из геометрических фигур — посмотрите на Geometry Wars. Glow эффект творит чудеса :)
                                0
                                Да, красиво.
                                Жаль, на дефолтных средствах явы все это скорее всего будет тормозить.
                                Нужно было мне сразу писать на openGL.
                                  0
                                  Да, тут без шейдеров уже ни туда и ни сюда.
                                    0
                                    Я посмотрел трейлер. Сам на Java не пишу, но сомневаюсь, что принципы отличаются от html5 canvas.
                                    У вас очень много статических объектов. На каждом уровне буквально 3-5 объектов, которые изменяют свои координаты, остальные — весь уровень одинаковые.
                                    Их не надо перерисовывать вообще. В html5 canvas это бы достиглось отдельным слоем, который мы не трогаем. Я думаю, что 3-4 объекта джава вполне сможет отрисовать.
                                    Более того, фигуры можно растеризировать — отрисовать вектор в скрытый буфер, добавить глоу, а потом только двигать по полю и крутить картинки.
                                      0
                                      В идеале, конечно, статическое окружение должно быть превращено художником в красивые пейзажи, но это не критично)
                                        0
                                        Я их и не перерисовываю, они в отдельном имедже все держатся.
                                        Да, про кеширование я думал, дело в том, что это может съесть довольно много памяти.
                                        Ну в целом, я подумаю над этим.
                                          0
                                          Та не много памяти. Допустим, 5 объектов, которые надо закешировать. Объекты размером 200*200. Повороты кешировать нет необходимости. Что мы получаем?

                                          200ширина*200высота*4байта-на-точку*5 картинок=800000байт~1мб кеша. Совсем не страшно.
                                            0
                                            Дело в том, что повороты как раз лучше кешировать, т.к. оно может выйти очень медленным, я экспериментировал когда-то.
                                            Впрочем, проверю.
                                              0
                                              Я как-то тоже так думал. В итоге получил две проблемы:
                                              1. Огромное количество поворотов кешируются очень долго.
                                              2. Надо закешировать много картинок. Если брать только целые градусы — мы получим 360мб вместо 1 мб.
                                              3. Кешировать по ходу (при необходимости повёрнутой картинки сначала отрисовывать в кеш и только потом на экран) — плохая идея. Мы ещё сильнее затормаживаем вывод данных пользователю — ещё сильнее проседает фпс, пока не забъётся кеш, а он может и не понадобится в итоге.
                                              4. Да и отрисовывать оно должно достаточно быстро. Поворачивает растр оно, конечно, не мгновенно, но достаточно для нормального фпс.
                                                0
                                                Хорошо, попробую поворачивать без кеширования, спасибо за пояснения.
                                  0
                                  Надо исходить из сюжета: если появились заставки, значит какой-то сюжет есть?
                                  Типа «Ну не просто так-же этот шарик там катается?!», видимо у него есть какая-то цель, типа как в Крайоне — дорваться до Ньютона и стукнуть таки его…

                                  Соответственно — если уровни разбиты на «миры» по категориям, то можно их визуализировать как-то: типа если космос — на заднем фоне звёзды, а объекты для столкновений — текстурированы какими-нить обломками кораблей. (тупо повторяющаяся текстура)
                                  Или, если это какой-нить сад, то текстуры стволов и листьев, а на заднем фоне — что-то типа поля…
                                  И т.п. — единого совета не зная сюжет дать сложно…
                                0
                                Прошу технические подробности!
                                Почему именно Java? Не знал ничего кроме неё или у неё есть какие-то особенные преимущества в геймдеве? Что читал, как продвигался процесс изучения? Ссылка на дельфийскую статью? Архитектура игры, объём кода? Советы другим начинающим разработчикам?

                                P.S.: мне сейчас тоже 17, и я как раз нахожусь в процессе выбора того, чем заниматься летом. Уже присмотрел шикарную тему на рутрекере, из которой можно вообще не вылезать месяцами, но, возможно, стоит не углубляться в теорию, а тоже попробовать свои силы в чём-нибудь подобном…
                                  –1
                                  P.P.S: Демка с Desura ругается на отсутствие MSVCR100.dll и отказывается запускаться.
                                    0
                                    Да было такое но все на одной машине, попробуйте поискать в интернете длл-ку и закинуть в папку с игрой, а лучше в Windows\System32. Если не найдете — пишите, скину.
                                      0
                                      эта dll вроде в папке явы лежит, возьмите её оттуда и киньте в папку windows, должно заработать.
                                        +2
                                        Установите отсюда библиотеки C++
                                        www.microsoft.com/en-us/download/details.aspx?id=5555

                                          0
                                          Спасибо. То, что нужно.
                                        +3
                                        Java кажется мне наиболее простым и удобным языком, синтаксис в которой не перегружен лишними «фичами», хожу на факультативные занятия по ней, поэтому решил ее и выбрать.
                                        В целом ничего не читал, только дергал гугл по отдельным проблемам, так как когда писал TD изучил достаточно. Дело в том, что у меня за плечами около 5-6 лет моддинга Warcraft III и его скриптовый язык позволил мне изучить азы ООП и программирования вообще.
                                        Статья — tt.pstu.ru/mnp09/mnp09/s5/bazin.htm но ссылка вроде не работает, попробуйте из кеша гугла глянуть.
                                        Архитектура совершенно непродуманная, у меня не было ни времени ни желания продумывать ее. Там около 30 своих классов всего. Объем кода — около 300 кб своего кода и примерно столько же занимает библиотека Ogg/Vorbis.
                                        Что советовать в целом не знаю, но главное ИМХО — не слушать советы других людей и идти своим путем, ибо советы редко к чему хорошему приводят.
                                          +2
                                          Java кажется мне наиболее простым и удобным языком, синтаксис в которой не перегружен лишними «фичами»

                                          Не хотелось бы показаться навязчивым, но попробуйте Python. Код на нём обычно занимает раза в полтора меньше эквивалентного кода на Java. Он, конечно, медленнее за счёт отсутствия аналога JVM (а, значит, и вкусных плюшек типа JIT'а), но писать на нём, как мне кажется, существенно проще. Не холивара ради.
                                            +2
                                            Сейчас нет времени, но когда нибудь обязательно попробую, мне его многие советовали.
                                              0
                                              Не то советуете. Для разработки игр всё же С++ лучше изучать. Тут и разработка для консолей и ведущие игровые студии на нём пишут движки игр. К тому же, если изучать разработку игр, как дисциплину в университете, то только С++.
                                                +1
                                                По делу совет. Небольшие инди игры — экспереименты где важнее идея и минимизация трудозатрат лучше писать на python чем на C++ Я бы даже предложил такую кармольную вещь использовать богомерзкий флеш — на нем писать прототипы игрушек в одного человека еще проще.

                                                А с учетом того что движки все равно лицензируются и почтив все скрипты пишуться на скриптовых языках то разница не такая критическая
                                            0
                                            Ну и насчет углубления в теорию: единственный раз, когда мне пришлось с ней столкнуться, был момент, когда мне сообщили, что в конце научной работы необходимо написать книжные источники, по которым работа велась, тогда я ввел в первом попавшемся книжном магазине «java» и написал первые 5 книг, хотя видел их первый раз. Сколько книги по программированию не читал — ни разу не удавалось извлечь что-либо полезное, помогала лишь практика.
                                            Впрочем, возможно это только у меня так, для кого-то ведь книги эти пишутся и издаются.
                                              0
                                              Ну, основы-то всё равно нужно из книжек доставать. Хотя бы самые-самые. Так продуктивнее, нежели разбирать найденный код, даже если удалось найти простой код для начала. И даже если разбирать, то базу программистских основ нужно знать — понимать, что такое цикл, условие и проч.
                                              А дальше, практика-практика-практика — теория-теория — практика! Это нужно.чтобы переходить на следующий уровень, хотя может устраивать и кодинг на каком-то определённом, достигнутом. По задачам и стремлениям…
                                            0
                                            Приятно видеть своего роверника, который хоть что-то смыслит в современном быдлокодировании :)
                                            Кстати, Desura — не для инди же вроде, для инди игрушек у них отдельный проект был, если не ошибаюсь.
                                              0
                                              Вроде как на инди в основном ориентирована. Там даже категория проекта выбирается — Indie либо AAA
                                              0
                                              А не слышали про научно-инженерные конкурсы Балтийский Конкурс, Юниор? Вполне могли бы что-нибудь там выиграть.
                                                0
                                                На оба конкурса я уже, кажется, опоздал. В любом случае спасибо за информацию. =)
                                                  0
                                                  Поздно сообщаете! Автор, по всей видимости, является одиннадцатиклассником, а эти конкурсы закончились несколько месяцев назад.
                                                  0
                                                  Welcome, как говорится, to gamedev!
                                                  Хочу поиграть, но негодую — если Java, то где кроссплатформенная версия?
                                                  По поводу графики — можно раскрашивать грани объектов в рандомные цвета когда шарик их прикосается. Ещё можно совсем поднять психоделичность сделав что-то на подобии визуализации в winamp. Объекты в игре перемещаются, окрашиваются, а на фоне какая-нибудь картинка от этого рисуется.
                                                  www.youtube.com/watch?feature=player_detailpage&v=uhmFsjnlEmw#t=731s
                                                  Или как в одном шутере
                                                  www.youtube.com/watch?v=5lz9NON6obQ
                                                    0
                                                    Да, хочу выпустить и для других платформ. На линуксе проверял, работает, можно выпускать. На макоси пока проверить не смог — все попытки поставить леопарда на виртуальную машину были тщетны. Но я займусь этим в скором времени.
                                                    Да, про раскрашивания при прикосновении идея неплохая, запишу.
                                                    Вот бекграунды как в том шутере я и хочу сделать. Буду работать над этим.
                                                      +2
                                                      Если надо будет протестировать под маком — пишите.
                                                    +1
                                                    На самом деле молодец. Если сил и желания хватит, можно под андройд портировать и что-то на этом зарабатывать. Главное не ставить заработок самоцелью. Я когда в школе учился — меня на что максимум хватало — сделать сайт на PHP. Вот.
                                                      0
                                                      На втором уровне долго пытался понять, почему на попытку повесить на шарик гравитацию мне заявляют, что «Something is wrong.» Совершенно случайно заметил, что гравитации поддаётся не только на шарик :)

                                                      Да, и на 4-м, вроде, уровне есть странный баг: при перезапуске (2-я кнопка справа внизу и «Restart» в меню) не восстанавливаются уже потраченные предметы.
                                                        0
                                                        Есть куча мелких огрехов в английском тексте. Видно, что автор владеет языком не очень хорошо :)

                                                        А Bounce умеет эпично нарушать закон сохранения энергии.
                                                          +1
                                                          Про баг кто-то писал, у меня ни разу не было ни на одной машине — повторить не смог.
                                                          Да, хоть и учусь в лингвистическом классе, переводчик ru-en из меня слабый.

                                                          Про Bounce я даже отдельно упомянул в работе для конференции, долго еще думал, оставлять такую troll-science или нет. В третьей главе там с магнитами вообще физический абсурд бывает.
                                                            0
                                                            У меня он случился 2 раза за прохождение демки, так что вряд ли его тяжело воспроизвести.
                                                            Кстати, этого бага при попытке перезапустить через меню игра вообще перестаёт откликаться на кнопку меню, так что приходится убивать её по Alt-F4.
                                                              0
                                                              А что по этому поводу написано в log.txt?
                                                                0
                                                                Абсолютно ничего. Файл девственно чист.
                                                                  0
                                                                  Довольно странно. Сейчас попробовал воспроизвести — да, возможно потерять формулы если хаотично жать кнопку R и цифровые клавиши, но следующим рестартом все лечится, да и меню работает.
                                                                  Может видео бага заснимете?
                                                                    0
                                                                    В моём случае баг появился, когда я пользовался только мышкой. И игру я уже удалил. Демка закончилась быстро :)
                                                                      0
                                                                      В любом случае спасибо за информацию.
                                                                      До вас о баге только один человек писал — dg-lab.com/s/ytentu
                                                                      Постараюсь исправить.
                                                          0
                                                          Деинсталлятор не удаляет самое главное — папку с игрой. Там остаются конфиг, лог и настройки игрока. Можно сделать галку типа «удалить также персональные данные и настройки».
                                                            +1
                                                            Поправлю, спасибо.
                                                            Во всем виноват странный интерфейс инсталл-мейкера. =)
                                                          0
                                                          Так и самое главное не рассказали — сколько? :)
                                                            0
                                                            В статье писал что несколько человек купило, так что думаю 50-70 в лучшем случае. Да и в desura вывести деньги можно только после того, как наберётся 500 евро.
                                                          +1
                                                          Ты молодец. Респект за целеустремленность.
                                                            –7
                                                            Только «комАм», «первый блин комАм» :)
                                                              –1
                                                              Что? Вы серьезно? :)
                                                                –1
                                                                Не обращайте внимания, это одна из довольно распространённых баек а-ля лингвист Михаил Задорнов :)
                                                                  –1
                                                                  Первый блин комам,
                                                                  Блин второй — знакомым,
                                                                  Третий — дальней родне,
                                                                  А четвертый — мне!

                                                                  Довольно старая присказка. Даже в шуточно-детской песенке используется.
                                                                    0
                                                                    А кто такие по-вашему эти комы?
                                                                      0
                                                                      Если Вы всё же про то, что это какие-то там комы (которыми типа медведей называли или кого-то ещё), то это всего лишь одна из версий. Не стоит всерьёз об этом спорить на непрофильных ресурсах. Гуглятся запросто обсуждения на профильных (или там на форуме грамоты.ру).
                                                                        0
                                                                        Не совсем медведи. Ответ на комментарий выше: Мне нет дела кто такие комы, просто присказка такая.
                                                                        А вот прабабушка моя рассказывала, что по верованиям это духи предков, которые возвращаются в виде животных. В том числе и медведей. Поклонения им особого не было. Но их часто «поминали».
                                                                +9
                                                                Во первых, понятие школоло в том смысле, в котором оно применяется, относится к людям неважно какого возраста, с завышенным ЧСВ, полностью не хотящим разбираться в чем бы то ни было и задающим дурацкие вопросы/безапеляционно несущим чушь. А такие как вы, сударь, — просто молодец, заставляете верить в то, что не все так плохо у нас в стране с нормальными и адекватными людьми :)

                                                                А во вторых — айда к нам работать :)
                                                                  0
                                                                  Только сейчас увидел ваш пост.
                                                                  Спасибо =)
                                                                  А насчет работы — у меня изначально поступление, да и с программированием связывать жизнь я в общем-то не собирался, это больше как хобби.
                                                                    0
                                                                    Зря) Программирование — очень прибыльно.
                                                                      0
                                                                      Да я по первому образованию вообще автомеханик :) Так что тут вопрос желания :)

                                                                      Ну а что касается поступления — есть такая весчь как фрианс, и я к ней очень трепетно отношусь :)))

                                                                      Но решение конечно за Вами
                                                                        0
                                                                        К Единому Государственному нужно готовиться, поэтому пока времени точно нет.
                                                                    +6
                                                                    С большим удовольствием заплюсовал автора где только можно.
                                                                      +1
                                                                      Тут все начали советовать по языкам, вставлю и я свои 5 копеек, так как человек сам недалек от геймдева.
                                                                      Java нормальная тема, нотч же пишет на ней свои проекты. Проблема только в iOS, он с явой не дружит, зато можно легко переносить на андроид.
                                                                      Если интересно углублятся в 3D я бы посоветовал уже unity3d. Там и языковая среда привычная для явиста(c#/javascript) и встроенный редактор хорош.
                                                                      А вот питоны всякие я бы советовать не стал, да есть на них игровые библиотеки, но все же для геймдева они очень ограничены. Обычно их внедряют для скриптования внутриировой логики.
                                                                        0
                                                                        Unity — интересная вещь, пробовал чуть-чуть.
                                                                        Но не люблю готовые движки в целом.
                                                                          0
                                                                          Если хотите писать свое, то, как писали выше — лучше обратится к С++.
                                                                        0
                                                                        Очень хорошо написано, как следствие возникает резонный вопрос — откуда такие познания в гуманитарных науках?
                                                                          0
                                                                          Талантливый человек талантлив во всем
                                                                            +1
                                                                            Учусь в лингвистическом классе, много читал в детстве, вот и результат =)
                                                                              0
                                                                              Врать не буду — я сомневаюсь в том, что Вы это Вы. Ввиду отсутствия фактической базы для моих сомнений озвучиваю их и предлагаю на этом прекратить обсуждение.
                                                                                0
                                                                                Предлагаю перейти в личку для такого рода обсуждений.
                                                                              0
                                                                              Ерунда полная. Перельман явно страдает отсутствием талантов в сфере коммуникаций :)
                                                                                0
                                                                                А по-моему у него просто талантище в этом сфере :)
                                                                            0
                                                                            Автор — молодец, идея оригинальна, что сейчас встречается редко и скорее только в инди-проектах. В тексте сквозит обида за места на конкурсах и конференциях, но это в общем не важно, то что ты смог добраться до desura — уже круто и еще круче, что игра продается. Деньги на следующий проект можно попробовать поднять на kickstarter, а текущий включить в распродажи на сайтах типа Humble Bundle, Indie Royale. Для 17 лет очень круто, успехов!
                                                                              +2
                                                                              Что называется, «поддержал кошельком» отечественного производителя. Потыкался. Скриншоты оказались обманчивы: выглядит симпатично, хотя немного смущают микро-подёргивания некоторых предметов (физический движок забавно обрабатывает силу трения, походу).
                                                                              В данный момент намертво застрял на пятнадцатом уровне :) Интересно будет «вживую» посмотреть на фишку с невесомостью из трейлера.
                                                                                0
                                                                                Спасибо =)
                                                                                Да, иногда дергается немного, постарался снизить дергания до минимума, но все равно чуть остались.
                                                                                На пятнадцатом уровне лучше использовать паузу(самая левая кнопка), иначе сложно успеть.
                                                                                Какую именно фишку с невесомостью?
                                                                                  +1
                                                                                  Пятнадцатый в итоге решился за две с половиной минуты с двадцатого раза через то, что я бы всё-таки назвал багом. Видимо, я в упор не вижу правильного решения. Ну да ладно.
                                                                                  С невесомостью это я ошибся. Принял за неё магнетизм. Уровни с изменением размера — вин, к слову.

                                                                                    0
                                                                                    По идее решение такое: красная гравитация, если не успеваете — пауза, гравитация на верхний квадрат. Все едут вверх, гравитация на шарик, потом на самый первый прямоугольник. Только что пробовал — проходится.
                                                                                      0
                                                                                      Да, как-то не подумал о таком варианте. Меня почему-то заклинило, что надо сначала создать наклон, а только потом создавать инвертированную гравитацию. Тогда всё нормально.
                                                                                +3
                                                                                Отличная статья! Термин «Школота» — в данном случае ни коим образом не применим к Автору! Забей на всех и продолжай! Твое упорство даст фору и многим «Серьезным» программерам! Желаю УСПЕХОВ и жду новые проекты! Купил игру, только времени поиграть еще не было)
                                                                                  0
                                                                                  В целом статья интересна, хорошо написана и даже мотивирует. Однако, как уже указали выше, не хватает технических деталей.
                                                                                  Например, мне было бы очень интересно узнать, как Вы оптимизировали отрисовку, чтобы она перестала отнимать 98% времени.
                                                                                    0
                                                                                    Спасибо.
                                                                                    Хорошо, напишу в UPD.
                                                                                    0
                                                                                    Автор молодец! Забей на всех! Жизнь все равно все расставит по местам.
                                                                                    Главное — занимайся тем что тебе нравится.
                                                                                    Also есть еще много не государственных но не менее серьезных конкурсов где ты сможешь себя проявить.
                                                                                      0
                                                                                      Автор идёт правильной дорогой. Написал в личку.
                                                                                        0
                                                                                        Немного обновил, смотрите низ статьи.
                                                                                          0
                                                                                          Получилась помесь Micromachines и Lemmings, обе игрушки рульные, так что нечего было и сомневаться, что в итоге получится отличная штукенция. Не знаю кому как — мне понравилось.
                                                                                            0
                                                                                            Школьники в последнее время прямо заряжают Хабр. Молодцы!
                                                                                              0
                                                                                              Большое спасибо за шикарный пример выдержки и целеустремлённости. Покажу статью сыновьям (9 и 13), а то они у меня порываются каждый раз: «Папа-папа, а давай игру напишем! Там у нас будут монстры, здесь танки а сверху пустим летающих слоников с пулемётами — пыщь-пыщь-пыщь!..» =)

                                                                                              И каждый раз всё заканчивается на моём предложении сесть и нарисовать эскизы на бумаге =)
                                                                                                0
                                                                                                Пусть попробуют позаниматься модмейкингом для того же варкрафта =)
                                                                                                  0
                                                                                                  Спасибо, нафиг-нафиг… =) пока вполне хватает майнкафта. Пусть к нему сначала мод напишут сами. Малы ещё, серьёзности мало, усидчивости ровно на 5 минут. Торопить не хочу. Со старшим написали змейку на js+css и хватит пока. Как сами захотят дальше разговоров двинуться — велкам.
                                                                                                    +2
                                                                                                    Ой, хотя — вру ведь! Старший таки справился с локализацией миникрафта. Когда увидел каст как он был написан за двое суток — жутко вдохновился, скачал сорцы и попросил eclipse.

                                                                                                    С первого захода русифицировал жестоко! =) Включая имена классов =)) Пришлось объяснить. Потом парень получил результат, гордо продемонстрировал младшему и друганам (целую совещалку по скайпу устроили) и на этом задвинул всё подальше и успокоился =)
                                                                                                0
                                                                                                Стиль изложения — отличный, от души написано. Не обращай внимания на «непризнающих», не забывай радоваться успехам и дерзай.
                                                                                                  0
                                                                                                  Собственный физический движок? С ноля? В семнадцать лет?
                                                                                                  *ушел рыдать навзрыд от зависти*

                                                                                                  Это круто. Нет слов.
                                                                                                    0
                                                                                                    Где же с нуля? Автор вроде как написал, что просто портировал на Джаву большую часть кода из какой-то статьи
                                                                                                      0
                                                                                                      Да, так и было.
                                                                                                      На мне была его имплементация, оптимизация и модификация под собственные нужды.
                                                                                                    0
                                                                                                    Не запускается. Все скачанные версии выдают лишь ошибку «The main startup class could not be found»
                                                                                                      0
                                                                                                      Вероятно, не установлена Java, либо версия неактуальная.
                                                                                                      0
                                                                                                      Вдохновился! После прочтения статьи перекопал старые проекты, забил на них и написал с нуля вот что www.moddb.com/games/revert-the-gravity-game.
                                                                                                        0
                                                                                                        Товарищ, я все понимаю. Но если ты используешь Яву, то почему не делаешь игру кроссплатформенной? Я например не могу запустить ее в Linux.

                                                                                                        Скачал значит твой exe-шник, запускаю в Wine а он требует Java машину. Ну Java машина в Wine — это та еще песня. Да и зачем она нужна, если можно нативно Java запускать. Проблема только в девелоперах, которые только exe дают, а jar куда-то прячут.

                                                                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                                        Самое читаемое