Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Активизм > Форумные конкурсы > Jam Session 7

Jam Session 7 Тема - Выживание. Ответственный: XoreX

Ответ
 
Опции темы
Старый 04.04.2014, 00:31   #1
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Плохо Rooftop

Rooftop
Суть:
  • У земли стелется облако ядовитых газов. Ну или просто запредельная концентрация CO, хотя это газодинамически недостоверно, т.к. атмосферные течения перемешали бы его с остальным воздухом. Выбирайте понравившийся вариант, но там дышать без оборудования нельзя;
  • Остатки человечества пытаются как-то выжить на крышах небоскрёбов, because aliens;
  • Останки человечества лежат внизу и идут на корм новым мутировавшим существам;
  • Игрок - ИИ, живущий в мейнфрейме. By design его находит группа поселенцев, и, наслушавшись историй об успешном применении ИИ в других группах, отдаёт вам полномочия в управлении жизнью группы.

Геймплей:
  1. Игрок отдаёт приказы на сбор ресурсов;
  2. Постройку зданий;
  3. Определяет лимиты производства;
  4. И количество работников в каждой профессии.
Всё. Ну, по крайней мере пока. Если успею, будет ещё и торговля с приходящим торговцем.

Как видно, это самый обычный клон, клон игры Banished, отчасти Settlers, только вид сбоку. ffinder назвал игру "дварф фортресс в 100 раз проще и сбоку", может быть это и так. Не играл.
По атмосфере хочу добиться какой-то смеси работ Гигера и С.Т.А.Л.К.Е.Р.-а.
По части контента буду срезать углы как умею - твёрдые формы в SketchUp-е, мясо - в Sculptris-е, развёртка без души, автоматами, текстуры по возможности стыренные. Многие штуки будут подвержены маленькому скрипту, который будет мять сетку нойзом, так хоть графен приедаться будет не так сильно. Многие части построек будут собираться из простых элементов, как то: двутавровая балка, лист с текстурой металла, одноцилиндровый движок, электромотор. А потом запекаться в единый меш.

Штуки, которые я точно зафейлю:
  • Нормальный арт для людей - на конкурс скорее всего пойдут символические спрайты;
  • Торговля;
  • Нормальный баланс (нет, ну он конечно будет, какой-то... Но отточенности не ждите).

Штуки, которые я буду пилить после конкурса:
  • Всё, что не успел в самом конкурсе;
  • Разговоры жителей с игроком (может быть даже будет "квест" на то, чтобы уговорить обречённую деревню не совершать массовый суицид);
  • Разные уровни сложности (включая "блэкауты" на сложном, когда игрок отрезается от управления и через пелену черезстрочного рендера вынужден наблюдать, как идут дела у его подопечных);
  • Лимит по ёмкости для складов;
  • И рефакторинг. Уже сейчас вижу несколько мест, где можно сделать лучше, но пока переделывать не буду.

Ознакомиться с более-менее актуальной версией геймдизайна и актуальным прогрессом можно здесь.
Зелёное - сделано
Синее - нуждается в тесте
Жёлтое - в процессе
Красное - отложено-заморожено
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Эти 10 пользователя(ей) сказали Спасибо Taugeshtu за это полезное сообщение:
Артем Валерьевич (04.04.2014), Adrax (05.04.2014), ant0N (04.04.2014), Fatalix3d (11.04.2014), ffinder (04.04.2014), Harter (04.04.2014), KCEPOKC (04.04.2014), mr.DIMAS (11.04.2014), Nex (05.04.2014), Wegox (04.04.2014)
Старый 04.04.2014, 01:00   #2
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Смущение Ответ: Rooftop

Состояние на четверг, 3 апреля 2014:
В наличии 65 килобайт "тёмного" кода. "Тёмного" - это значит, что этот код не запускался ещё ни разу. Совсем.
Сейчас я как раз занят написанием оверрайдов под .ToString() для дебага этого кошмара и установкой того, что называется testbed - условий для тестирования функционала.

Что же в этих 65 килобайтах?
  • Ресурсы
  • Здания
  • Конфигурации продукции
  • Подсчёт заказа производства
  • Составление списка заданий (как-то "подай-принеси" и "пойди сделай")
  • Жители (тут почти полный набор, не хватает только запуска процесса поиска заданий, переключения статуса между Idle, Sleep, Eat, Work и убавления статов типа Health и Happiness с течением времени)
  • Семьи (тут полный набор, создание семьи, проверка на возможность иметь детей, рождение детей, покидание детьми семьи)
  • Общий скрипт, регулирующий жизнь поселения (задания, хранилища, производства, лимиты, запуск просчёта у поселенцев, зданий и всего остального; нету размещения семей по пустующим домам)
  • Рандомно генерящиеся ресурсы (в мегаполисе мы вообще или как?)) в наличии будет куча бутылок, металла, бетона, немного резины, агрегатов, много электроники)
  • Какие-то зачатки генератора небоскрёбов

В общем, код геймплея готов где-то на 75%. Дальше код ввода игрока и UI.

Ещё написал двустороннюю конверсию между boo-шным Hash (это как Dictionary, но с implicit определением типа ключа и значения, причём значения не обязательно гомогенны) и JSON-строкой. Пока не поддерживаются разве что списки внутри списков и таблицы внутри списков при конверсии Hash -> JSON (обратно работает). Написал потому что было скучно :D
Вообще, я так прикинул, в будущем я сюда ещё мультиплеер впилю. Да и парсер JSON лишним в хозяйстве не будет.

Ещё написал маленькую надстройку над инспектором Unity, облегчает мне жизнь в вопросе настройки баланса:


Арт пока показывать тут не буду, закину в игру - там уже можно будет, наверное. Из готового:
Болванки под металл, пластик, резину, бетон, один меш под электронику, один меш под агрегаты (потом из него выпилю ещё 3 маленьких).

Ну вот наверное и всё пока что.
Миниатюры
Нажмите на изображение для увеличения
Название: RooftopBalance.png
Просмотров: 1474
Размер:	45.8 Кб
ID:	20329  
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.

Последний раз редактировалось Taugeshtu, 13.04.2014 в 13:56.
(Offline)
 
Ответить с цитированием
Эти 12 пользователя(ей) сказали Спасибо Taugeshtu за это полезное сообщение:
Артем Валерьевич (04.04.2014), Adrax (05.04.2014), ant0N (04.04.2014), Кирпи4 (04.04.2014), Harter (04.04.2014), impersonalis (04.04.2014), KCEPOKC (04.04.2014), mr.DIMAS (11.04.2014), Nex (05.04.2014), Randomize (04.04.2014), St_AnGer (04.04.2014), Wegox (04.04.2014)
Старый 05.04.2014, 11:23   #3
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Плохо Ответ: Rooftop

Всем привет

Состояние на утро субботы, 5 апреля 2014:
Размер скриптов раздулся до 82 килобайт, из которых порядка 6 - .ToString() методы для дебага
Остальное - фиксы, доработки, методы для установки тестовых условий ииии...
  • Относительно работающий генератор зданий;
  • Почти законченный путенах.

Собственно, всё. Пятница ушла на то, чтобы отдебажить мой "тёмный" код, который почти весь перешёл на светлую сторону силы. Оставшиеся ситхи прячутся в коде присоединения к семье/покидания семьи и выбора задания поселенцем. Задания кстати генерятся нормально, проверил

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

Поиск пути выродился в почти классический поиск кратчайшего маршрута по графу. Тут есть маленькая хитрость в том, что я пошёл на допущение: в пределах одного этажа никаких перегородок и препятствий нет. Там персонажи будут ходить по прямой до следующей точки в их маршруте.
Другая хитрость заключается в том, что я разбиваю здания не просто на этажи, а на группы этажей. Если что-то сломало лестницу между этажами - группа разбивается на две; если игрок построил лестницу между этажами, которые принадлежали разным группам - они сливаются в одну. Причём разделение группы, при всей неоптимальности алгоритма, стоит всего-то O(n), где n < 100 (максимум этажей пока что). По-хорошему надо со списков переписать в массивы, тогда вообще почти бесплатным будет.

Следующий шаг в оптимизации (ещё ни разу не тестировавшегося на скорость решения) - просчёт таблицы кратчайших путей между мостиками, принадлежащими чанку. Тогда поиск пути от произвольной точки на одном этаже до произвольной точки на другом выродится в поиск кратчайшего пути по чанкам + поиск пути внутри начального и конечного чанков. Середина маршрута будет просто собираться как из конструктора. И я так прикинул, пересчитывать маршруты каждый раз при модификации чанка будет дешевле, чем считать путь каждый раз, когда кому-то пришла в голову идея "погулять".

В заключение, по традиции, маленькая няшка - эмбрион генератора зданий. Просто для оценки масштабов в игре:
Миниатюры
Нажмите на изображение для увеличения
Название: Skyrapers.png
Просмотров: 1532
Размер:	33.9 Кб
ID:	20331  
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.

Последний раз редактировалось Taugeshtu, 13.04.2014 в 13:56.
(Offline)
 
Ответить с цитированием
Эти 12 пользователя(ей) сказали Спасибо Taugeshtu за это полезное сообщение:
Adrax (05.04.2014), Кирпи4 (05.04.2014), Fatalix3d (11.04.2014), Harter (08.04.2014), impersonalis (05.04.2014), KCEPOKC (05.04.2014), mr.DIMAS (11.04.2014), Nex (05.04.2014), Randomize (05.04.2014), St_AnGer (07.04.2014), tirarex (13.04.2014), Wegox (06.04.2014)
Старый 07.04.2014, 20:07   #4
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Ответ: Rooftop

Парам
Состояние на понедельник, 7 апреля 2014:
Поиск пути внутри чанка работает. Вроде быстро, но надо будет ещё замерить и установить лимит.
Поиск пути по нескольким чанкам - тут пока решаю, как лучше будет. Или просто прикинуть, исходя из соединённости/несоединённости чанков, какой путь был бы логичным и по этим чанкам уже строить реальный путь, или делать честно и перебирать много-много данных... Наверное первый вариант, всё равно никто не заметит)

Да, кстати, я много чего перевёл со списков на массивы, должно быть быстрее. Ну и запилил кэширование путей между точками входа/выхода чанка. Обновление происходит по команде с общего контроллера, поэтому можно будет ограничить нагрузку в пределах одного цикла Может даже динамически, например "чтоб не больше 5 мс вот на это всё!".

Чего там ещё... А, лестницы! Я научил генератор генерить лестничные колодцы внутри зданий! Они даже ЛОГИЧНЫ! Следующий шаг в этом направлении - поломать парочку лестниц из сгенерированных :D

Набросал каркас для общего контроллера ("крыша", она же Rooftop.boo, рулит поселением, общий контроллер - декорациями) и обёртки над вводом игрока.

В качестве скриншота принёс демонстрацию колодцев и поиска пути:
Миниатюры
Нажмите на изображение для увеличения
Название: LocalPaths.png
Просмотров: 1456
Размер:	61.9 Кб
ID:	20371  
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Эти 11 пользователя(ей) сказали Спасибо Taugeshtu за это полезное сообщение:
Adrax (09.04.2014), Кирпи4 (07.04.2014), Fatalix3d (11.04.2014), Gector (13.04.2014), Harter (08.04.2014), impersonalis (09.04.2014), mr.DIMAS (11.04.2014), Randomize (08.04.2014), SBJoker (07.04.2014), St_AnGer (07.04.2014), Wegox (10.04.2014)
Старый 13.04.2014, 14:21   #5
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Сообщение Ответ: Rooftop

Давно не было от меня отчётов о прогрессе, да? Исправляю.
Состояние на воскресенье, 13 апреля 2014:
  • Поиск пути в данный момент умеет искать путь по чанкам, хранить пре-просчитанные пути внутри чанка и искать путь внутри чанка. Собственно, осталось это всё склеить в нахождение общего пути из точки А в точку Б, и поиск пути закончен;
  • Завернул генерацию здания в красивый метод, позволяющий добавить здание слева или справа от общей кучи;
  • Улучшил генератор лестниц, научив его ломать несколько лестниц, имитируя разрушения и постапокалипсис;
  • Ввёл в постройки игрока понятие "построенности", также запилил функционал для раздачи приказов на постройку. Останется завернуть в красивый UI (есть интересные идеи на этот счёт);
  • Вместе с этим начал красиво отделять ввод игрока от игры так, чтобы можно было забивать класс ввода данными как от инпута, так и, допустим, от сети, чтобы реализовать мультиплеер без особых проблем. Кстати, давным-давно с мыслями о мультиплеере я завернул юнитевские функции рандома в один из классов, чтобы можно было потом заменить их на самописный рандом. Мне просто нужен будет рандом с грубо говоря открытым счётчиком выданных значений, чтобы не слать лишний раз по сети всякие результаты симуляций (которых может быть довольно много), полагающиеся на рандом. Для детерменизма).

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


Следующие на очереди - приказы на подбор ресурсов, наверное всё-таки рефакторинг, который я планировал делать после конкурса, и выполнение работниками работы. После этого уже можно будет отлаживать полный цикл геймплея и даже делать какой-то баланс.
Миниатюры
Нажмите на изображение для увеличения
Название: FloorChunks.png
Просмотров: 1323
Размер:	72.8 Кб
ID:	20412  
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Taugeshtu за это полезное сообщение:
Adrax (19.04.2014), impersonalis (13.04.2014)
Старый 25.04.2014, 22:51   #6
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Ответ: Rooftop

После длительного перерыва (порядка 10 дней, занятость, все дела...) вернулся к проекту
В общем, мой слив почти гарантирован, но я всё равно буду стараться.
Состояние на пятницу, 25 апреля 2014:

Путенах в данный момент:

И знаете, сколько времени потребовалось, чтобы найти этот путь 100 раз? 100мс. Отсюда вывод: кэшируйте, посоны! (кэшируется не полный путь, а кусочки внутри чанков внутри зданий, ну да об этом выше написано)

Чего там ещё работает уже...
  • Сбор ресурсов;
  • Перенос ресурсов из здания в здание по потребности;
  • "Тикание" статов у поселенцев. Да, все умирают ;
  • Здания строятся, но пока что в автоматическом режиме (без участия поселенцев, прикрутить должно быть нетрудно).
Всё это сделано с "честным" бэкэндом, т.е. реализация таких штук как количество работников в каждой профессии, лимиты производства, приказы на постройку теперь требуют только интерфейса под это всё.
Из больших геймплейных элементов у меня всё ещё нет:
  • Заселения семей в пустые дома;
  • Использования поселенцами путенаха.
Всё. Дальше надо только запилить UI и графен.
Чувствую, в этот лудум я буду делать не лудум...
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Taugeshtu за это полезное сообщение:
Adrax (27.04.2014), Gector (27.04.2014)
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:24.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com