Category: игры

Category was added automatically. Read all entries about "игры".

nyaload

memory game

Леонардо Ди Каприо (Доминик Кобб) в фильме «Начало» всегда с собой таскал маленькую юлу, чтобы отличать сон от реальности.
Я использую игру "найди пары одинаковых карточек" в телефоне, чтобы понять насколько я устал и отупел. Когда я бодр и в хорошем состоянии, то я могу удерживать в голове позицию каждой карточки. Открывая вторую карточку я почти всегда могу указать где первая (что интересно - неосознанно). Когда же я устал - то делаю массу ошибок, и туплю: у меня чувство дежавю, точно была, но не могу вспомнить где, вроде бы была где-то, но не уверен.
nyaload

Conway's game of life

Совершенно невероятные конструкции из правил "жизни Конвея" (на первой минуте - текст с описанием правил, интересное после 1-й минуты):

nyaload

(no subject)

nyaload

«....ааа что, вы и есть за меня будете?! - Ага!!»

Игрушка на http://godville.net укрепила меня во мнении, что борьба с ботами - это от слабости геймдизайна. Зачем игрокам писать ботов, если конфеты интересней есть самому?

PS. фраза заголовка - из «Вовка в тридевятом царстве», можно на ютубе глянуть, если прошло мимо детства.
nyaload

DOT (овалы со стрелками)

Иногда при копании в текстовых файлах, в которых хранится дерево зависимостей или граф, хочется получить наглядное представление этого файла. Это могут быть зависимости между данными или промежуточное состояние программы при отладке сложного алгоритма на графе/дереве.
Есть простой инструмент, DOT language, который по текстовому файлу сгенерирует рисунок.
Например, по описанию

digraph graphname {
  a -> b -> c;
  b -> d;
}


будет построен рисунок:

Collapse )
nyaload

Cражения происходят на ринге, а войны ведутся на доске

Оказывается есть такой вид спорта - шахбокс. Два соперника по очереди играют то в шахматы, то бьют морды. В четных раундах - бокс на ринге, в нечетных - игра в шахматы. Можно победить как нокаутом, так и сделав мат противнику на доске. Боец должен быть мультиклассовым, с большим и intelligence, и strength :)
статья в википедии
nyaload

AI должен красиво отдаваться.

Наш лид-программер, orvind, ездил недавно на GDC. У нас в компании решили организовать лекции, с пересказом интересного, от участвовавших в GDC.

Выступаю испорченным телефоном, пересказываю со слов orvind идеи Сида Мейера в Цивилизации 5.

Если есть рандом, то он не должен быть честный. Если мы попадаем с вероятностью 50%, то после промаха игрок ожидает попадание. Дадим же его с более высокой вероятностью. А не ещё плюс два промаха подряд с вероятностью 1/4.
Из комментов: В Heroes5 было свойство incorporeal - промах с 50% вероятностью.
Постоянно ставили баги что рандом бажит: как же так, промахнулся 5 раз подряд?
Объяснения, что да, иногда и так бывает, что монета падает 5 раз подряд решкой, не воздействовали. Никак не мог доказать, что 1/32 != 0.
Пришлось прикручивать счетчик промахов, чтобы не больше трех раз подряд, только тогда успокоились.
В интерпретации дизайнеров это звучало так: "у нас в Heroes 5 рандом тоже сначала бажил".


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

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

Несмотря на ожидания игровых журналистов и игроков-интеллектуалов - AI не должен быть непредсказуемым. Действительно неожиданный непредсказуемый AI будет выбешивать. Игроку будет приятно предсказать (адекватное) поведение противника и победить.

Награда игроку - это не обязательно новый контент (модели, текстуры, анимации). В игре заменили сообщение "Посол предлагает мир, не нападайте" на "Посол предлагает мир, не нападайте, в знак лояльности он преподносит дар: семь танцующих медведей". И это реально изменило соотношение ответов игрока. Хотя никаких анимаций или моделей медведей нет.
У игроков есть воображение, этим надо пользоваться, они сами могут улыбнуться и представить себе танцующих медведей :)
nyaload

C++, Именованные параметры функций в С++. Спрайты в 2d движках.

Блог же у меня вроде про программирование и разработку игр? И про C++?

Тут я изложу свой опыт того, как надо организовывать основную API-функцию 2d-игр: вывод прямоугольных спрайтов. Это основая функция, игра наполовину состоит из неё :) Остальная половина - игровая логика и чуточку прочего, вроде сейвов, звука, мат-библиотеки.
А, ещё билд ресурсов, шрифты, плавная анимация тоже важные темы, работа с которыми у программиста будет сильно влиять на скорость разработки.

Не знаю насколько, это будет полезно. Для PC лучше взять скриптуемый готовый движок, или флеш и положить игру в Facebook/вконтакт :)
Но если вдруг окажется, что начинаете возиться с таким низким уровнем, да ещё и на C++, тут можете увидеть советы, как сделать жизнь гейм-кодера слаще. Остальные могут увидеть удобный приём для языков с ООП (C++, Java, C#, JavaScript, Python, ...).

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

Ещё один важный момент. Сортировка спрайтов по Z. .
Collapse )

см . так же сжатие графики для спрайтов
nyaload

опен-сурсь - это хорошо.

Шодан вот тут зажигает про open source, почему это хорошо, и как бессмысленен closed source. Без религии, чисто с практической точки зрения.
Заодно проезжается по закрытым драйверам от NVidia и dx-runtime.

Сегодня же я, наоборот хочу похвалить NVidia за предоставленные исходники её Texture Tools. Лезть в математику сжатия текстур мне не понадобилось, но возможность подсмотреть в исходники - очень помогло узнать, как именно воспринимаются опции командной строки. Так же это помогло исправить неработающую конверсию в 32-битный rgba-dds, опять же там надо было просто исправить две строчки в простом коде установки параметров.

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