Публичная разработка игры. Часть 2.

Позади 5 часов и техническая реализация возможности просто отображать и двигать фон.

Что дальше?

— Считывание клика и понимание по какой комнате он был совершен. С поправкой на масштабирование и смещение.
Сделано
— И чтобы далеко не откладывать сразу же начнем реализовать комнату. Плюс надо добавить тесты производительности, потянет ли телефон анимацию сразу десятков комнат.
Первичные тесты показали, что анимация десятков объектов грузит даже комп, не говоря уж о телефоне. И это проблема, потому, что от анимации отказываться я не готов. Будем искать варианты.
Можно отключить анимацию при большом отдалении сцены, можно просто делать упрощенную но выразительную анимацию. Ну и почитать интернет, конечно.

Похоже придется пилить что-то типа менеджера ресурсов. Не ожидал я, что на каждом шагу будут всплывать препятствия.

В итоге на оптимизации ресурсов я все же выиграл 25% прироста. Но видимо сама анимация слишком много логики имеет, и чтобы еще сильней улучшить скорость надо будет делать или свой обработчик анимации, или как-то придумать механизм кэширования для существующей, что очень маловероятно. Еще минус 2 часа (((

____

Параллельно уточняем как будут выглядеть этажи, комнаты и рабочие столы. Вместо лифтов, будут лестницы. Комнаты могут быть разной ширины. А значит просто ассоциировать сектор этажа и комнату уже нельзя.

Уменьшил в два раза сектор. Оставил стоять столы с старой привязкой к секторам.

Состояние по итогам 10 часов.

Вообще сделано очень мало. Я совершенно не ожидал такого низкого темпа. Очень много времени отняли технические тесты и поиски лучшего решения.

Не терпится уже наконец ИГРУ делать, поэтому следующим шагом управление комнатами-секторами.

Три столбца и полторы строчки вроде нормально смотрятся.

Арт интерфейса взял с другой игры, чтобы на голые блоки не смотреть. Текущий объем кода 56.5кб

Итак выбрали комнату, и дальше следующая проблема, как на сцене отображать выбор места для строительства. Однако идеи есть.

….

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

Хотел перейти к хомякам, но надо придумать как делать лестницу. Счетчик времени показывает 13 с половиной часов.

Лестница усложняется тем, что она между этажами, поэтому привязку к сектору этажа сделать сложнее. Так, же если делать плюсики между этажей, то сложности еще и с позиционированием клика. А еще лестница заставит разделить секторы этажа на стену и пол.

Делить сектор на пол и стену я пока не стал, потому, что в данный момент это не имеет значения, а остальное сделал, плюсик просто сместил, но оставил на том этаже к которому лестница относится в большей степени. Это сняло все проблемы позиционирования и определения места клика. Сделал чтобы лестницы и столы не мешали друг другу (точнее чтобы нельзя было поставить что-то в уже занятое место)

Счетчик показывает 15 часов 10 минут.
Объем кода 81кб

Публикую пост, но сам продолжу разработку. Ближние задачи:
1) решить несколько технических мелочей (например новые лестницы перекрывают кнопки, потому, что в очереди перерисовки встают на передний план)
2) сделать функционал расширения домика и убедиться, что стройка не сломается, а то игрек инвертирован. Логически домик будет расти вверх, но верхний этаж считается нулевым (потому, что отсчет графических координат идет с верхнего левого угла). Возможно придется переворачивать или порядок этажей или что-то еще.  И лучше с этим определиться как можно быстрее.
3) хотел уже наконец хомяка, но что ему делать? Добавлю сначала комнату с едой.
4) и уже после этого пусть хомяк бегает между рабочим столом и едой.


Автор: Elsper.ru


VN:F [1.9.14_1148]
Rating: 7.0/10 (3 votes cast)
Публичная разработка игры. Часть 2., 7.0 out of 10 based on 3 ratings

28 thoughts on “Публичная разработка игры. Часть 2.

  1. Твоё новое реалити-шоу выходит даже интереснее, чем прошлогодний марафон!

    Удивляет соотношение объёма кода к потраченному времени — 6кб/час — выглядит нереально. Не доверять числам основания нет, просто интересно, за счёт чего такая скорость? Переиспользование кода, какая-то кодогенерация или просто хуяришь как заведённый?

  2. FinReader, по объему все вместе.
    И кодогенерация (хотя она подключится позже, когда сцены начнут плодиться)
    И переиспользование — код на столы и на лестницы очень похож, но я все же отдельно обрабатываю лестницы, и отдельно столы, чтобы логику не запутывать.
    Использую длинные названия переменных, чтобы мучительно не вспоминать, что ж там за фигня подразумевалась.
    Пишу комменты к коду.)

    Ну и работаю конечно )))

  3. А я уже год как не могу взяться за разработку игры:(((
    А так хочеться… Да и самс Нового Года вообще ничего не кодил, иногда хочеться но колится

    Респект.

  4. Николай, у тебя вроде итак там есть чем заняться ) А я кроме игр ничего и не делаю

  5. Круто, и простыми играми не пробовал заниматься? Все чаще вижу, как что-то простое стает популярным, недавно статью на vc.ru читал про игру two dots, они там 15 лямов подняли, скачал, попробовал — поиграл пару минут — прикольно. Еще на айпаде покупал castle raid — там уже анимация посложнее, и каждая доп карта по баксу). Еще на айпаде часто играю в шашки с родственниками когда нехер делать, они там адсенс или другую рекламу прямо в банер вверху тычат).

  6. Сергей, простые игры для меня скучны, скучно играть и так же скучно делать.
    А еще в простых играх бесконечная конкуренция и в целом прибыльность разработки «простых» игр меньше чем у разработки более сложных, потому, что сложная с гораздо большей вероятностью принесет деньги, чем простая, а сил и та и та требует. Но может когда-нибудь сделаю судоку )))

  7. Привет! интересно стало какое у тебя образование, что ты сталкиваешься с такими проблемами?
    У нас на физ.мате (при условии что я не на проф курсе учился) — все твои проблемы рассказывали за менее чем полгода. Щас вот жалею что в свое время не выбрал долбанное программирование.
    Без обид, для меня на лицо твоя полная неподготовленность к поставленной задачи.

  8. О, суперпрофи подъехали ))

    Чтобы без обид, давай конкретный пример, какая моя трудность не вызовет затруднений у студента физ.мата и как он ее решил бы ?
    А иначе это то ли попытка троллинга, то ли попытка оскорбления.

    Я без образования.

  9. нафига мне тебя оскорблять или тролить? я наоборот считаю что ты молодец.
    Но твои цели и твои задачи звучат нелепо. Возможно только для меня. хотеть сделать что-то не представляя как это делать. какими готовыми классами это описать… из разряда велосепед уже как 10 лет назад придуман но я придумаю свой….

  10. Ок, я не отрицаю, что у меня возникают сложности. Когда это случается, я просто беру их и решаю.
    Но я не верю, что студент или даже выпускник сталкиваясь с подобными задачами не испытывает никаких сложностей.

    Просто приведи пример с какой сложностью, с которой столкнулся я, студент справится быстрее и как (хотя бы примерно) он ее решит.

  11. Спасибо, интересно почитать о трудностях, с которыми ты сталкиваешься при разработке. Построить «каркас» — это самое нудное, потом уже идёт все полегче.

  12. наш разговор заходит не в то русло….
    Тут для студента 3-4 курса профильного факультета нет сложности вообще.
    Я понимаю, что ты описываешь свой опыт — читать интересно.
    Для меня странно что ты берешься за работу не зная как ее сделать и по-ходу дела решаешь вопросы. Логичнее было бы сначала проработать вопрос, а потом уж писать код. Или я что-то не так понял?

  13. Счастливые люди — студенты 3-4 курсов профильных вузов, все умеют, все могут.

    Ок, вот есть задача, любая задача, пусть это будет оптимизация отображения десятков анимированных объектов.
    Ты пишешь «Логичнее было бы сначала проработать вопрос, а потом уж писать код.»
    И как ты ее предлагаешь прорабатывать? На бумажке или в воображении?
    И как бы ее решал студент 3-4 курса?

    А если студент 3-4 курс столкнутся с работой, «не зная как ее сделать», то он должен отказаться от этой работы? Или студент 3-4 курс, это суперчеловек, который всегда знает как сделать ту или иную задачу?

  14. >Тут для студента 3-4 курса профильного факультета нет сложности вообще.
    Это интересно в каком вузе такие студенты, дай бог чтобы несколько человек вообще хоть xто-то сложнее хелоуворлд. Одногорупник пытался писать игры на 4 курсе, так я ему еле как объяснил как тригонометрию использовать(расчет скорости по осям) в арканоиде. И он как раз входил в эти несколько человек(кто сам курсовые писал и хоть что-то понимал).. И такая картина не только в нашем вузе/группе. И не только в пост совке. Знаю много людей с профильным образованием, ситуация примерно такая же. Так что не надо бреда писать… Тем более если сам не разбираешься в задаче

    Elster, расскажи что в бэкэнде используешь, были ли проблемы по нагрузке итп

  15. >У нас на физ.мате (при условии что я не на проф курсе учился) — все твои проблемы рассказывали за менее чем полгода.
    >какими готовыми классами это описать… из разряда велосепед

    Тоже интересны подробности. Единственное, что приходит в голову — это у вас был не совсем профильный предмет без четкой структуры, который вел человек из игровой индустрии, вот он на вас и «оттягивался». Откуда и такие выводы.

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

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

    Но при всем при этом за попытку выйти в реальный мир бьют по рукам — все эти бенчмаркинги, профилирование, это все для работы, не для учебы. Мне списывали баллы за умышленную денормализацию баз данных, чтобы запросов меньше писать, «денормализировать на работе будешь на реальных задачах, а тут задачи другие, которые ты, видимо, не понимаешь, го переделывать».

    В вузе не могут учить пользоваться готовыми классами. На курсах — могут. В вузе — нет.

    Соглашусь, что игры довольно матано-емкая область на определенном уровне, будешь там с картами работать, без какого-нибудь алгоритма Дейкстры уже никуда. Но это специализация, и базовый курс универа поможет не сильно, проще скачать какую-нибудь книжечку «Математика для разработчиков игр» (коих сотни).

    Мимо учился в трех универах, есть знакомых еще из нескольких, тусил на всех кафедрах, наблюдал/участвовал в разных проектиках, сейчас общаюсь с людьми из не самого последнего вузика сша. У меня выборка больше. Университеты не учат прикладным дисциплинам и не дают прикладные знания. Университеты учат непонятно чему (точнее, по сути сильно поверхностное ознакомление с фундаменталкой, даже в магистратуре, где казалось бы специализация идет, но где еще получится за год пройтись по криптографии, моделированию, экспертным системам на каком-то Прологе и еще десятку дисциплин, хотя очевидно, что ИРЛ никакой пролог не используется) + как открывать пивные бутылки зажигалкой.

  16. Кирилл, забыл спросить. А ты случайно не тот Кирилл, который на блоге Спрута много раз сравнивал вузики с каким-то онлайн тестиком (Coursera, вроде). Слог и ход мысли похожий. Я еще тогда хотел разразиться пастой на тему «сравниваешь теплое с мягким», но как-то руки не дошли.

  17. Иван, клиент на мобильном флеше, adobe air называется. Графика через starling, он обращается прямо к графическому процессору, так, что все норм.

    Мультиплеерные игры пока не делал, но когда сервер будет, то он будет на С# через сервис Player.io

  18. Player.io раньше не очень подходил для активных реалтаймовых игр, было много жалоб на пинг

  19. Reader, пока я все равно ничего не использую. Но в целом Player.io мне показался как минимум удобным для интеграции и разработки.

  20. Я всегда приветсвовал критику, при условии что за ней следует совет как сделать лучше. Я часто сам вижу проблему в проекте, но не знаю как ее лучше решить. Вот к примеру: считаешь что к решению задачи автор подходит не оптимально, покажи как надо. Фраза «надо бы все проанализировать заранее» бред… тут кто как любит кодить. Кто то чилит неделю и прорабатывает UML схему, а потом за сутки пишет рабочий код, а кто то берет первое попавшее решение и ревлизует за час и потом надстраивает остальной код, постепенно модифицыруя старый. Для прототипа я предпочитаю г-код, так как все равно будешь недовольным и перепишешь все, а так быстро можно увидеть проблемные места. Как в случае с автором — подводный камень в анимации… а представте если бы он все смоделировал в расчете на то, что видео процессор потянет?!

    Кстати у меня вопрос (я не планировал сегодня читать посты, но не удержался), почему у тебя графика так глючит? Ты по эгзоскилету решил все делать?

    п.с. Завра покажу мой прогресс, пока готова идея, цель, процесс… домен зареган, блог установлен, завтра добавлю все посты что написал (5 часов и 11 минут ушло только на тексты, сложно было тебя догнать) и сделаю отчет о подготовке рабочего места и тестировании среды разработки созданием простенькой программы с несколькими сценами.

  21. У меня графика не особо то и глючит.
    Или ты о анимации? Ну всегда есть предел возможностей, и надо его узнать.

    Про эгзоскелет не понял
    Если речь о скелетной анимации, то да.
    Один из вариантов ускорения, кстати, это растеризация анимации. По ходу разработки будет видно как лучше поступить, оставить скелетную, или придумать, как делать растровые кэши на ее основе.

    __
    Давай, а то раз уж обсуждать разработку, то лучше предметно )
    А то я даже не понимаю до конца на каком языке и фреймворке ты писать собрался.

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

  23. А равзе процессор для тебя не важней? Или у тебя чисто спортивный интерес использовать скелетную анимацию на практике?

    Я бы тоже в принципе не отказался бы, в моем фреймворке вроде она есть, только платная… для этого надо покупать advanced физику, но я пока начну с пазлов, не тот уровень =)

  24. Я уже использую скелетную анимацию на практике. Для нас это уже повседневная реальность. Хотя в текущих выпущенных игр ее нету )

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

  25. Если это реально, можешь дать ссылку на игру которую ты делал для паблишера и еще одну на любую игру где ты использовал скелетную анимацию. Я больше люблю логические пазлы или тауерзы, по этому она мне может не пригодится, но интерестно чисто для повышения личного уровня =)

    «кэширование не целиком итоговых картинок-кадров, а только позиций деталей» ты об уменьшении количества анимированных частей тела? (к примеру ножки хомяка сделать из двух а не из 3-4 частей)

  26. В релизнутых нет анимации.
    А так повторю ссылку на софт http://ru.esotericsoftware.com/

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Спoнcopcкиe ссылки