Sanctuary [Разработка]
SANCTUARY
version 0.0.2aЖанр: RPG
Дата выхода: 31.12.17 (?)
Эра мрака наступила…
Должно быть, конец уже близок. Птицы более не поют, вместо них теперь слышны лишь стоны умерших. Солнце более не озаряет путь, ибо небо заволокли серые тучи, что проливали леденящие капли дождя, уносимые порывистыми ветрами. Именно так сейчас выглядит Бри - безжизненный, полупустой и отрешенный от всех. Так продолжалось столетие, сменялись правители, целые города поглощала всепожирающая мгла, а надежда медленно угасала в сердцах отрешенных. Говорят, боги разгневались и решили избавиться от всех нас… Но столь-ли правда это, на самом деле? Наверное. Однако, надежда умирает последней. Быть может, есть еще один шанс, еще одна попытка все исправить…
- Доброго времени суток. Знаю, что так не положено и выпускать топик игры нужно только после реализации, однако. Мне думается, что лучше сделать это сейчас. Почему? Просто потому, что до релиза игры еще очень много времени, а интерес к разработке немного угасает. Пока нет заинтересовавшихся, нет и интереса к разработке.
- Вашему вниманию я хочу представить один свой проект, которым занимаюсь уже в течении полутора лет. Переходя от одного движка, к другому. Сейчас остановился на QSP, он более удобен и имеет необходимые мне функции.
- Искренне надеюсь, что первая рабочая версия выйдет ближе к новому году. Здесь-же я постараюсь информировать вас о ходе работы, а так-же оставлять наработки для всех желающих. Последнюю версию всегда можно будет скачать здесь, в топике.
Файлы теста:
- На данный момент я могу вам показать лишь небольшую часть, а именно: создание персонажа. И то, она еще не до конца не готова, однако прочитать самое основное и ознакомиться с примерным взаимодействие игрока с программой уже можно. Можно пройти самое короткое обучение. Всего пару действий. Однако принцип ведения игры будет уже немного яснее. (Внимание! опции еще нечего не меняют кроме недороботаного анг. языка и отключения/включения музыки. Введя help, выйдет небольшая документация, в ней так же работает только отключение музыки.(При наличии скачанного архива игры с музыкой))
Самая последняя версия всегда тут:
reliz002a.zip (1 075кб) - Версия без музыки
reliz002amusic.zip (26 201кб) - версия с музыкой
- Здесь вы сможете найти дополнительную информацию по игре:
Spoiler
Во времена Великого Переселения представители трех величайших народов путешествовали по миру Бри с целью открытия новых земель, и причин для того было великое множество: нехватка полезных ископаемых, территорий для заселения, жадность, жажда славы - список можно продолжать бесконечно. Существует бесконечно много всевозможных научных трактатов на эту тему, но то, о чем пойдет речь сейчас, навряд ли будет упоминаться в трудах подобного рода, ибо такие знания следует хранить лишь в самых надежных местах сего мира или же не хранить вовсе…
Две сотни лет назад монахи культа Терраниума прибыли на один из островов, что должен был стать местом, где они бы могли вести уединенную жизнь, проводя день за днем в вознесении молитв своим богам за надежными монастырскими стенами. И, тем не менее, все планы монахов пошли крахом, когда они узнали, что на самом деле представляет собой место, которое они хотели сделать оплотом своей веры. Древний храм, чьи создатели видели зарю этого мира, как и тот, для кого этот храм строился. Воплощение великой тьмы, что дремало в глубинах своей обители, накапливая разрушительную мощь и ожидая своего темного часа, который, спустя тысячелетия ожидания, наконец-то пробил…
Огромная тень, желая обрести распространителей своей скверны, начала медленно, но верно впиваться в разум прибывших монахов, разъедая их души и замещая их своей всепоглощающей заразой. Самые слабые приспешники культа Тераниума быстро поддались порче Древнего, тем самым выдав себя - их тела, ровно, как и души, искажались до неузнаваемости, являя этому миру отвратительных тварей, несущих волю своего бога. Более крепкие последователи почувствовали присутствие порчи гораздо раньше, но не предпринимали никаких мер из-за отсутствия весомых причин, которыми нельзя было назвать странные видения, что мучили подавляющее большинство обитателей монастыря. Лишь превратившиеся в мерзких тварей братья дали им понять - они имеют дело с чем-то невероятно могущественным, о чем обитатели Бри давно забыли…
Спускаясь во мрак катакомб, они несли с собой свою веру, что укрепляла их разум и тело, не давая порче Древнего сделать с ними то, что было сделано с их братьями, что были преданы огню, ибо не было для них иного спасения. Большая часть из тех, кто отважился окунуться во мрак этого острова, погибла в неравных боях с перерождениями тьмы, что дремали вместе со своим богом. Дойдя до заброшенного святилища, они отважились предстать перед самой Тьмой, и лишь их вера придала им сил для того чтобы выжить. Выжить, но не победить… Ценою многих жизней, Великое Зло было надежно запечатано, а праведные души тех, кто бросился в решающую битву с господином этого острова, стали вечными стражами его тюрьмы, что сражаются во мраке на протяжении многих веков и по сей день. Те же люди, что пережили кошмар и выбрались на поверхность из глубин этого ужаса, взяли на себя не менее тяжкое бремя, что заключалось в хранении этой великой тайны. Волею судьбы они стали тюремщиками Древнего, тем самым оберегая мир от его влияния. Здесь они рождаются - здесь и умирают. И имя этому месту Sanctuary.
Spoiler
История сотворения:
В начале не было ничего, пустота, изначальная тьма. В ней царил покой и гармония. Пока, в один момент, в одной точке, не зародилась мысль, первая пульсация которая разнесла свою первую волю по изначальной тьме и та услышала…
Мысль обрела свободу…
И эта мысль дала жизнь первым разумным существам, состоящим из чистейшей энергии. Их звали - Конструкторы. Именно они стали исполнять волю мысли. Разлетаясь по пустоте и соединяясь воедино, они создали звезды, планеты и озарили изначальную тьму светом, что озарял бесконечность непроглядной пучины.
Шли века, тысячелетия, а трудолюбивые конструкторы продолжали свою работу, не ведая усталости и не останавливаясь ни на секунду. И вот, наконец, воля мысли была выполнена. Однако, это было лишь начало. На одной из планет зародилась жизнь. Примитивная, одноклеточная, но столь чарующая жизнь. Появились моря, океаны, суша и горы. Зашли первые посевы. Начались первые манипуляции с живыми молекулами. Появлялись более сложные, многоклеточные существа. Мысль и желания конструкторов воплощались в живых существ, наделенных разумом и чувствами. В момент, когда появилась первая жизнь, планета уже имела густые леса, высокие горы и плодородную почву для растений.
Через века, планеты заполонила разумная жизнь, в лице зверей. Великое разнообразие живых организмов боролись друг с другом за право жить. Конструкторы с любовью и заботой взращивали новые поколения своих “детей”, дабы на планете царила гармония. Однако, в скором времени, сил конструкторов стало не хватать, чтобы уследить за всеми. Тогда, они породили титанов, огромных колоссов, следящих за хрупкой гармонией между обитателями планет.
Они веками, верой и правдой служили своим создателям, исполняя их волю. Но гармония никогда не бывает вечной. Вскоре, вместо нее наступил хаос. Пульсар, что породил конструкторов, вновь проснулся и дал новую мысль, что разнеслась по просторам изначальной тьмы, породив при этом новое слово: - “И нету гармонии без хаоса и да будет добро и зло, светлое и темное, жизнь и смерть, и воцарится хаос, и родиться исчадие зла, что заполнит собою все темные уголки, дабы держать баланс.”
И воля мысли заразила конструкторов и колоссов, и разделился мир на светлую и темную сторону, на созидание и разрушение. И породили колоссы падших - существ, обезображенных болезнями и муками. И расползалась зараза по миру, словно порча. Заполнив каждый темный уголок, разрушая и уничтожая все живое. Эра хаоса воцарилась во тьме, грозившая уничтожить все живое… В момент, когда казалось, что надежда угасла и планетам грозила скорая погибель, мысль вновь запульсировала, распространяя свою волю и желание: - “И да не будет света без тьмы, и тьмы без света, и да будут они сменять друг друга, образуя цикл, дабы сохранить баланс добра и зла.”.
И появился день, и появилась ночь, что сменяли друг-друга, дабы восстановить баланс. Но не все конструкторы повиновались воле мысли. Они считали хаос - единственной верной мыслью и да не будет добра, лишь только тьма и зло.
И началась война, что расколола хрупкий баланс. Миры сотрясала война. Шли века, тысячелетия, эра Хаоса сменялась эрой Гармонии и так было, и так есть, и так будет до тех пор, пока существует время и воля. Так было сказано Мыслью…
Spoiler
Место действия: континент Бри
Первая локация: Темница
Главный герой: Заключенный
Доступные расы: Люди | Дворфы | Эльфы | Орки | Тролли | Гоблины | Карлики | Ящеры | Немертвые
Люди - “Это гордые и суровые обитатели мира Бри. Врожденная жажда к жизни и фанатичное поклонение богам делает из них весьма опасных противников. Их воины быстры, а маги сильны.”
Дворфы - “Дворфов, отнюдь, нельзя назвать слабыми и глупыми. Эти подгорные жители славятся своим кузнечным мастерством и даром шаманизма. Они также являются хранителями древних секретов.”
Эльфы - “Как правило, эти длинноухие представители степей и лесов не славятся приветливостью и дружелюбием. Однако, их меткости позавидуют даже самые матерые стрелки.”
Орки - “Многие считают их примитивной расой, способной лишь на войну. Это совершенно не так. Сильные и мудрые орки, хоть и славятся своей кровожадностью, однако на деле…”
Тролли - “Сродни оркам, тролли ведут кочевой образ жизни и славятся как своими охотниками, так и безупречными воинами, вооруженными массивными булавами и тяжелым доспехом.”
Гоблины - “Хитрые и маленькие оркоподобные существа,славящиеся своими убийцами и изощренными темными волшебниками, способными призывать умерших из могил. Самую большую ошибку, которую можно сделать повстречавшись с ними - недооценить их возможности.”
Карлики - “Чем-то схожие с дворфами, однако не славящиеся своей удалью и выносливостью карлики, живут бок-о-бок со своими старшими братьями - дворфами.”
Ящеры - “Хитрые и ловкие ящеры, обитатели болот и засушливых равнин. Их мастерство выслеживания и безупречная тактика помогают им справиться даже с превосходящими силами противника.”
Немертвые - И восставшим из могил не будет покоя. Немертвые посвятили свою жизнь изучению магии и волшебства. Их большая выносливость и невероятный ум компенсирует многие их недостатки.”
Отношения:
Люди: Нейтралитет (дворфов, орки, ящеры, немертвые), Вражда (эльфы, тролли, гоблины, карлики)
Дворфы: Нейтралитет (люди, карлики, гоблины), Вражда (эльфы, орки, тролли, ящеры, немертвые)
Эльфы: Нейтралитет (ящеры, орки, тролли), Вражда (люди, дворфы, гоблины, карлики, немертвые)
Орки: Нейтралитет (люди, эльфы, гоблины, ящеры), Вражда (дворфы, тролли, карлики, немертвые)
Тролли: Нейтралитет (эльфы, гоблины, карлики), Вражда (люди, дворфы, орки, ящеры, немертвые)
Гоблины: Нейтралитет (дворфы, орки, тролли, немертвые), Вражда (люди, эльфы, карлики, ящеры)
Карлики: Нейтралитет (дворфы, тролли, ящеры), Вражда (люди, эльфы, орки, гоблины, немертвые)
Ящеры: Нейтралитет (люди, эльфы, орки, карлики), Вражда (дворфы, тролли, гоблины, немертвые)
Немертвые: Нейтралитет (люди, гоблины), Вражда (дворфы, эльфы, орки, тролли, карлики, ящеры)
Доступные классы: Воин | Волшебник | Разведчик | Авантюрист
Warrior
0 ветка - Воин: Меченосец | Монах | Варвар | Лучник
1 ветка - Меченосец: Дуалист | Мастер | Защитник
1 ветка - Монах: Рыцарь | Паладин | Инквизитор
1 ветка - Варвар: Налетчик | Берсерк | Мастер рун
1 ветка - Лучник: Темный охотник | Часовой | Следопыт
2 ветка - Меченосец - Дуалист: Бретёр | Гладиатор | Наемник
2 ветка - Меченосец - Мастер: Мастер-кузнец | Мастер оружия | Мастер-ремесленник
2 ветка - Меченосец - Защитник: Страж | Соратник | Хускарл
2 ветка - Монах - Рыцарь: Храмовник | Крестоносец | Поборник
2 ветка - Монах - Паладин: Служитель | Экзорцист | Ревнитель веры
2 ветка - Монах - Инквизитор: Терзатель | Палач | Юстициар
2 ветка - Варвар - Налетчик: Охотник за головами | Мародер | Саботажник
2 ветка - Варвар - Берсерк: Кровавый клинок | Дикарь | Метатель топоров
2 ветка - Варвар - Мастер рун: Начертатель | ? | Повелитель крови
2 ветка - Лучник - Темный охотник: Ловец душ | Мститель | Темный служитель
2 ветка - Лучник - Часовой: Арбалетчик | Надзиратель | Снайпер
2 ветка - Лучник - Следопыт: Разведчик | Охотник | Зверовод
Wizard
0 ветка - Волшебник: Элементалист | Призыватель | Жрец | Некромант
1 ветка - Элементалист: Стихийный маг | Боевой маг | Алхимик
1 ветка - Призыватель: Чернокнижник | Демонолог | Шаман
1 ветка - Жрец: Целитель | Культист | Священник
1 ветка - Некромант: Повелитель могил | Лич | Сектант
2 ветка - Элементалист - Стихийный маг: Пиромант | Геомант | Гидромант
2 ветка - Элементалист - Боевой маг: Воин-маг | Чародей | Заклинатель
2 ветка - Элементалист - Алхимик: Мастер алхимик | Зачаровыватель | Трансмутатор
2 ветка - Призыватель - Чернокнижник: Фанатик | Адепт титанов | Колдун
2 ветка - Призыватель - Демонолог: Еретик | Скверноплет | Слуга Серата
2 ветка - Призыватель - Шаман: Тотемист | Ясновидец | Духостранник
2 ветка - Жрец - Целитель: Епископ | Знахарь | Анатом
2 ветка - Жрец - Культист: Отрекшийся | Темный архонт | Глашатай Серата
2 ветка - Жрец - Священник: Иерофант | Проповедник | Оракул
2 ветка - Некромант - Повелитель могил: Привратник смерти | Бальзамировщик | Призыватель мертвых
2 ветка - Некромант - Лич: Архилич | Владыка склепа | Пожиратель душ
2 ветка - Некромант - Сектант: Вестник рока | Осквернитель | Ксенарх
Rogue
0 ветка - Разбойник: Убийца | Диверсант | Бард | Вор
Не доработана…
Svartberg,
Пожалуйста))
Из последних новостей:
Уф, ахаха! Не поверите, только сегодня догнал как реализовать отрисовку локации аля Rogue! Долго смотрел на Серафим и плакал горькими слезами, не вдупляя как это все работает. Зато теперь смогу реализовать всю эту красоту в более простом для себя виде. Сейчас закончил примерную работу.
Теперь я смогу сделать полноценный рогалик!
Стыдно признать, что не смог так долго разобраться со столь простой вещью. Теперь, почувствовав себя еще более уверенным, я смогу вернуться к работе над игрой. Только чуть поиграюсь с отрисовкой локаций)
Svartberg,
Я наверное вообще не пойму, так как даже не подумаю над этим))
Какие вести с полей?
Aleks Versus:
Какие вести с полей?
Доброго денечка)
К сожалению, пока особых новостей нету. Работаю над системой инвентаря, ужимаю и полирую. Пытаюсь реализовать табличный метот выведения предметов с огранечителем в 10 штук на один лист. Чтобы не захламлять экран.
Думаю над тем как будет работать боевая система. Есть некоторые проблемы с искуственным интеллектом. (Точнее весьма большие проблемы.)
Я совершенно не могу понять как заставить объект двигаться по направлению к заданой точке. (Проще говоря, чтобы нпс перемещялся по локациям в определенные места.)
Наладил систему передвижения самого героя, а так-же его спутников.
Стараюсь привести в порядок систему диалогов с персонажами.
И еще весьма много задач стоит. Мои мечты с треском раскололись об реалии мира. Времени не особо хватает, лишь пару часов день, а это очень и очень мало. Однако, я не унываю!
У меня появилось просто огромное количество идей, которые сейчас тестирую паралельно с разработкой)
Очень сожалею, что вновь неудалось предоставить демку.
Но я для себя решил, что не буду выкладывать то, во что нельзя будет поиграть с комфортом и интересом.
))) ты просто время от времени подавай признаки жизни. Объём взял, конечно, огромный. Успехов.
Тоска-печаль…
Ожидаемо :)
Из последних новостей:
Ну, что могу сказать. В связи со сложной фин. ситуацией мне пришлось вернутся к работе. Буквально два дня назад получил новый контракт на разработку и теперь полностью отдаюсь работе (ибо сроки очень уж маленькие).
Из-за это вновь придется затормозить работу над проектом. И мне немного грустно от этого.
Но, я как всегда, не буду унывать и хочу спросить у интересующихся, не желают ли они помочь в разработке и занять достойное место в разработке?
P.S.
Кому интересно, работаю web-дизайнером, пилю дизайн для сайта.
Svartberg,
Я бы принял участие, будь я умнее.
Удачи с работой)
Из последних новостей:
И так, прошло уже достаточно солидное кол-во времени и пора бы уже рассказать, что было сделано за это время.
Честно сказать, не так много, как хотелось бы. Однако, вот, чего удалось добиться:
-
Наконец реализована тестовая версия инвентаря на простой системе ID отклика.
В краце поясню, что это значит: Поскольку в игре есть огромное кол-во предметов которые создаются непосредственно в процессе разработки (еда, напитки, предметы декора и тд.), то было принято решение забить все данные для этой лабуды непосредственно в базу данных. Каждый предмет в игре постоянно идентифицируется при помощи обращения к локации-базе, в которой забиты все уже заготовленные ID, который в свою очередь, при взаимодействии с определенным предметом, уже обращается к второй локации-базе, в которой уже находится вся необходимая информация о предмете.
Зачем это было сделано?
В игре огромное кол-во контейнеров, куда можно положить предметы, было решено структурировать обращения программы к необходимой информации в зависимости от потребностей. Проще говоря, программа обращается к необходимой базе только при необходимости. (Чтобы не забивать память ненужной информацией, ибо на поздних этапах происходит более 500000 операций за ход. Будь то информация о предмете или противнике и тд.)
Сам процесс инициализации предметов в контейнерах весьма прост. К примеру, когда мы получаем новый предмет в инвентарь, к ID предмета приписывается ID контейнера, и затем эта смесь отправляется в специальный массив который хранит все данные о предметах в контейнерах. Предмет отображается в контейнере только при условии наличия необходимого ID в массиве.
Пример:
Допустим, у нас есть Картошка, ее ID выглядит, примерно, так - VEG00PT, где:
VEG - тип предмета;
00 - контрольная сумма;
PT - порядковый номер/определитель предмета.
ID нашего рюкзака выглядит еще проще: ID.HR01, где:
HR - тип контейнера, в данном случае Hero (Герой);
01 - порядковый номер контейнера.
Когда мы поднимаем картошку и добавляем ее в инвентарь, происходит следующее: ID контейнера соединяется с ID предмета и получается такое чудо: ID.HR01VEG00PT и вот уже этот ID отправляется в массив, где и хранится до тех пор пока он не удалится из него.
Когда мы выбрасываем предмет, то, при условии, что кол-во предмета <= 0, универсальный ID удаляется из массива. Это позволяет хранить большое кол-во информации в одном лишь массиве.
А теперь одно очень важное замечание. Чтобы не заставлять обработчик инициализировать весь массив с данными, тем самым постоянно прогонять условия по базе из огромного количества значений, мы обращаемся к данной базе лишь при условии открытия инвентаря контейнера. Когда мы открываем инвентарь, то все остальные действия в игре замораживаются, освобождая стеки памяти для анализа данных для отображения предметов.
Благодаря этому, даже имея более 200000 значений в базе, все операции пройдут менее чем за 500мс. (При условии, что ваша оперативка имеет 2гига или более)
К сожалению, на старых смартфонах эта система будет работать хреново, но игра и не рассчитана на мобильные платформы.
Почему мне пришлось заморозить практически все расчеты в игре, при открытии инвентаря?
Уже говорилось выше, каждый ход программа инициализирует более 500000 расчетов, а с условием и особенностями движка, это довольно много (поскольку у меня всего 2 гига оперативы (+512 мб предоставляет видюха) и все эти расчеты полностью забивают оставшиеся стеки).
Единственная проблема, с которой я столкнулся: вывод предметов происходит строго по тому, в какой последовательности находятся их ID в общей базе.
Но кое-как я смог разбавить эту проблему запилив сортировку. Так-же запилил страничное отображения (на одной странице только 15 предметов, чтобы не пришлось прокручивать экран вниз).
Так-же сделал денежную систему, но из-за некоторых ограничений движка, максимальная сумма в КОНТЕЙНЕРЕ, прошу заметить, может достигать лишь лимита в 2147483647. И это, примерно 247000 золотых. Но я ввел ограничение в 250000 золотых. да, в игре есть медь, серебро и золото, не считая другой валюты. Золото, серебро и медь - основная валюта. Для того, чтобы система монитизации работала, пришлось использовать расчетное количество в медных монетках. А серебро и золото прост для красоты конвертируется. Чтоб у вас не было в инвентаре написано 2147483647 медных монет.
Что-ж, я думаю, что на данный момент это все, о чем я хотел бы вам рассказать. Спасибо за внимание)
Svartberg,
я тоже поначалу пилил трёхмонетную систему. Но у меня было сложнее. Был действительно счёт трёх видов монет и конвертирование. Причём, торговцы вели курс монет. Т.е. если товар стоит серебряную монету, а у тебя только золотые, сначала они “обменивали” тебе золотой на горсть сребреников и медяков, а потом продавали товар за серебряную монету. Т.е. они покупали золото с коэффициентом 0.8 от базовой цены. Чтобы купить золото у торговца, нужно было потратить 1.2 от базовой цены монеты, т.е. дофига меди, если в кармане мешок медных монет. Всё это изначально планировалось для удобства движения по социальной лестнице. Потом я как всегда переделал движок, и отложил вопрос о монетах в долгий ящик, оставив одну валюту.
Насчёт склеивания id. Кажется не очень рациональным. Почему не вести два массива: в одном ай-ди объекта($object_id), в другом ай-ди его местоположения ($position_id)? Чтобы отсеять все объекты, лежащие в сумке, нужно просто получить список ИД всех объектов, чьё $position_id соответствует ИД сумки. arrpos, думаю, работает быстрее arrcomp.
Ну, пока тестил, то время отклика при 500000 было, у твоего варианта: 0,2, у моего, 1,0.
Выбрал же такой вариант, потому, что мне удобнее работать с такими данными (просто учитывая свою систему).
Из последних новостей:
Доброго времени суток!
Вкратце расскажу о том, что готовлю сейчас: В игре появится энциклопедия, которая будет хранить в себе всю информацию об игре. Это касается и найденных мобов.
Пример вывода информации о мобе:

Svartberg,
По артом чувствуеться что будет текстовая версия DarkSouls, очень хочется сыграть
.png)
.png)
.png)