03 июля 2011

Заигрался

 Скачал я недавно одну игрушку и затянулся. А всё началось с того
что мне как-то намекнули, что моя игрушка может быть чем-то похоже на Crimsonland.
Скачал, посмотрел и понял - и близко не стоит. Конечно, есть схожесть - вы управляете героем одиночкой, отбивающегося от толпы монстров. Но на мою "толпу" смотреть жалко. А игра ни разнообразием орудий, ни монстрами, ни бонусами не блещет. Так что надо иметь весьма развитую фантазию, чтоб хотя бы отдалённо сопоставить моё творение с Crimsonland'ом.

Ну в общем, наигравшись в этот шедевр(ну... кому как конечно) я решил заняться проектом. Первым делом, по привычке нажал на F9, чтобы вспомнить, что же я там такого натворил. Увидев ГГ в центре экрана, пальцы сразу потянулись к WASD, чтобы по управлять(кхм... ну как-то совсем некрасиво звучит) им. Потом был полуминутный десятисекундный ступор. Лишь по истечению этих десяти секунд до меня дошло, что управление мной было "повешено" на клавиши. Далее ситуация повторилась снова - недоумевал, почему же герой не "палит"(огнемёт же всё таки)при нажатие на ЛКМ. И опять прозрение - огонь был привязан к ПКМ, а я по привычке жал на ЛКМ. Вот что значит игра затянула...

 В общем, сделал такие выводы:

  • переназначить управление на WASD;
  • поднять повыше камеру;
   "Переназначить управление на WASD"
 Прохождение Crimsonland'a в течении четырёх дней по пол часа(ну... бывало и час) доказала, что управление WASD пока представляется более удобным.

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

Все те дни, пока играл проект не перетерпел никаких изменений, но обдумывал, как бы лучше использовать скрипты.

Пока могу "порадовать" таким скриншотом:
    
 Всё это подтормаживает(позор мне - 2D и подтормаживает) у меня при запущенном браузере(Chrome), IDE, Jabber-клиенте, плеере, Total Commander'e и PhotoShope'e. При выключении половины играть ещё можно. Надо бы заняться оптимизацией, но трогать что-либо лень.

 Пора бы мне заняться GUI. Сколько бы я не обещал поработать над ним, но всё же особого продвижения в этой области нет.

Ну, на сегодня всё. Надеюсь конкурсных работ всё же будет достаточно количество. Да и себе пожелаю, чтобы не возникло желания отказаться от сдачи работы.

7 комментариев:

  1. Красивый скриншот) Я бы поиграл в такое с удовольствием.

    А на crimsonland похож, потому что мочилово и вид сверху :)

    Насчет подтормаживает - базовые оптимизации это:

    1. Использование библиотеки материалов, чтобы "одна текстура - один материал" - минимизируется переключение стейтов.

    2. Отсечение по пирамиде - поставь у TGLScene свойство visibilityCulling в vcObjectBased.

    3. Все частицы огня создавай заранее, скажем 30 штук. Затем, когда они требуются просто делай им Visible=True, закончили действовать - Visible=False.

    Ну, и конечно, надо смотреть детальнее код, где что влияет на ФПС. Обычно (кстати) рендер и графика - в последнюю очередь, чаще всего - векторные и матричные операции.

    Например, у меня есть астероиды (сейчас тестирую при 600 штуках), которые я вращаю с определенной скоростью по всем углам Эйлера. То есть каждый кадр делаю:
    Asteroid[i].Pitch(...);
    Asteroid[i].Turn(...);
    Asteroid[i].Roll(...);

    Заменив эти конструкции на RotateAbsolute(Asteroid[i].Up, ...) я получил прирост в 3-4 раза, так как каждый поворот по углу Эйлера вызывал перепостроение матрицы.

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

    Я думаю, что ты многое из этого (если не все) знаешь, но я просто на всякий случай :)

    Повторюсь - скриншот классный, я с удовольствием поиграл бы в такое :)

    ОтветитьУдалить
  2. "Красивый скриншот) Я бы поиграл в такое с удовольствием"
    Спасибо) так сказать, польщён. Играть уже можно, но не интересно(или это мне самому уже наскучило).

    "1. Использование библиотеки материалов, чтобы "одна текстура - один материал" - минимизируется переключение стейтов."
    Это я уже успел оценить, когда игра ещё создавалась про дракончика)). У меня были жуткие тормоза, когда я для каждого нового объекта заново загружал текстуру. Результаты порадовали.

    "2. Отсечение по пирамиде - поставь у TGLScene свойство visibilityCulling в vcObjectBased."
    Это надо попробовать.

    "Обычно (кстати) рендер и графика - в последнюю очередь, чаще всего - векторные и матричные операции"
    Ну в матричных операциях я не силён. Честно сказать, на прямую матрицами никогда не пользовался.

    Спасибо за советы:) постараюсь воспольоваться

    ОтветитьУдалить
  3. VandB,Спасибо)

    но всё же хочу чтобы у читающих не осталось ложного представления о игре:
    часто читаю/слышу фразы при публикации скринов игр другими разработчиками: "В динамике всё выглядит намного лучше, это всего лишь скриншот"

    Так вот скажу подобную фразу: "Это всего лишь скрин, а в динамике выглядит лажово".

    Хотя... мне скриншот уже самому начал нравиться))

    ОтветитьУдалить
  4. Класный скрин, отлично идеш!

    ОтветитьУдалить
  5. BenGAMEn, спасибо)) стараюсь

    ОтветитьУдалить
  6. Напомнило старые, добрые игры...

    ОтветитьУдалить