Думаю лучше начать с самого начала. Я уже пытался работать на с++, однако что-то не пошло. Интересоваться языком c# начал летом, изначально очень помогли видео лекции от Microsoft. После пройденного курса захотелось сделать что-то интересное. Так я и начал работу.
Что хотелось с самого начала:
- Поработать с файлами .txt и .bmp
- Сохранять файлы и удалять их из указанной директории
- Чтобы все работало + чтобы был приятный процесс разработки
Сама система генерации оружия — это что-то вроде паззла. В игре Borderlands создается огнестрельное оружие, и части там соответствующие (Приклад, Цевье, Ствол, и т.д.). Они собираются в одно целое, и готовое снаряжение получает характеристики соответствующие частям. Также у него обязательно есть производитель, название и уровень. Еще есть отдельный список уже созданного «легендарного» оружия с особенными характеристиками и низким шансом на выпадение. Эту систему я и сделал в с#. Только делать захотел холодное оружие. Для начала я решил генерировать мечи из двух частей: лезвие + рукоять.
Что реализовал:
- Считываем txt файлы со списками частей и соответствующими характеристиками.
- Случайно выбираем по каждой части(лезвие + рукоять).
- Соединяем их картинки, берем среднее арифметическое из их характеристик, применяем модификации от производителя, складываем их имена (прилагательное + существительное).
- Несколько вспомогательных методов: «продать оружие», «найти сундук» и «убить противника» (последние два отличаются только шансом получить легендарное оружие).
Текстовые файлы были самым простым пунктом в программе, в них строчки характеристик: имя, скорость боя, урон, шанс критического урона, цена, производитель, уровень и номер изображения для характеристик этой строки.
Вот вид текстового файла для легендарных мечей:
UltraLord 5 100 20 1000 human 11 31.
TitanKiller 6 90 23 1000 orc 11 32.
SoulEater 4 120 21 1000 daemon 11 33.
С картинками было гораздо сложнее. Пришлось редактировать найденные в интернете изображения. Делал пиксельные картинки 200х600. Чтобы все совпало, я расположил части строго по центру. Позже возникла еще одна проблема, отличается цветовая гамма и детализация элементов. Эту задачу можно решить в начальной стадии создания изображений: рисовать в одном цвете, потом раскрашивать уже созданное оружие.
Все возможные варианты обычных мечей:
Три легендарных меча:
Плюсы этой системы:
- Количество готового вооружения растет геометрически с добавлением еще одной части. У меня, например, 2 детали по 5 экземпляров – всего 25 различных мечей. При добавлении еще детали с 5 разными экземплярами, количество вариантов будет равно 125.
- Добавление игрового азарта – стремление получить оружие из лучших частей.
Минусы:
- Все детали должны подходить друг для друга.
- Сложнее реализовать.
Все выложил на GitHub, сделал комментарии в своей программе. Процесс разработки, рисования, изучения был для меня увлекательным. Совместил приятное с полезным. Возможно добавлю еще видов оружия: луки, топоры… Также думаю про перенос этого проекта в Windows Forms с добавлением интерактива, чтобы сам мог выбирать из каких частей собирать. Если есть вопросы или замечания пишите, постараюсь ответить. Новым идеям буду особенно рад.
Комментарии (16)
Xandrmoro
15.09.2017 14:16Чтобы все совпало, я расположил части строго по центру
Обычно для этого используются пивоты
dfgwer
16.09.2017 05:29В Path of Exile, идейном наследнике диаблы2, 3 суффикса+3префикса+тип меча = тонны и тонны мусора из 1000 мечей юзабельна 0-5 штук, многие игроки не утруждаются подбором заведомого мусора, использую только легендарики с заранее прописанными статами.
Mysterious
18.09.2017 13:58Имхо все хорошо в меру. Так вышло что для меня Диабла стала первой в моей жизни RPG и я потом искренне удивлялся и сокрушался по поводу того что в других играх нет такого разнообразия оружия и доспехов и мир зажат рамками: вот тебе линейка мечей вот доспехов, качайся — получай более крутые, ствой стиль игры зависит от класса и тд. Конечно для подсчета баланса и написания гайдов так проще.
Но вотето чувство когда тебе выпадает новая шмотка и ты примеряешся лучше она или хуже твоей текщей, складываешь в сундук да лучших вреен (пока уровень дорастет), или тестируешь какое-то время. Выбираешь можду скоростью и уроном, модернизируемостью… Или отдаешь наемнику, другу. Это огоромный пласт игры за что её и любил в том числе. Да 90% времени ты бегаешь в отдном и томже, но чтобы найти это что-то под себя — перерываешь тучи хлама и это по своему увлекательно. Это мне кузнец откует в крутую шмотку, а сюда я камень вставлю и тогда огонь! а тут я сделаю дырку и вставлю камень… Интересно же. Жаль что сейчас таких игр почти не осталосьdfgwer
18.09.2017 14:13Path of Exile. Половина игры проводиш в форумах, вики, ауке, калькуляторах, роясь в теорикрафте и мучительно выбирая фишки и особенности своего билда. Игра, где мне понадобилось знание матана и теории вероятности.
Hellsy22
Мне кажется, что статья не совсем по теме сайта.
Автогенерация предметов имеет свои очевидные минусы: несбалансированные характеристики приводят к тому, что игрок выбирает 1-2 главные и придерживается именно их (например — средний урон оружия), игнорируя остальные. Сбалансированные — к тому, что игроку вообще становится безразлично, что у него в руках. В итоге для игрока 99+% предметов оказываются бесполезны. А если еще и выдерживается паритетом между средним уроном оружия, доступном на конкретном уровне, и здоровьем противников, то оружие перестает меняться вообще.
Собственно, это все справедливо для практически любой попытки свалить на компьютер работу геймдизайнеров.
MonkAlex
Ну почему — в бороде я предпочитаю дробовики, и они там разные. Есть с низкой скоростью и большим уроном, есть с периодическим уроном, есть скорострельные. И это абсолютно разная игра.
Nekto_TM
Согласен — разнообразие в оружие это плюс для игрока.
Tremere
Я ходил всегда с револьвером, который стрелял взрывными патронами
undeadi4ek
В той же Борде игра подталкивает менять оружие за счет уязвимостей противников к определенным уронам стихий(электричество выжигает щиты, коррозия съедает роботов). Можно и здесь добавить дополнительные магические параметры, которые определяются вставленным в лезвие камнем, например. Или зачарованные некоторой школой магии(огня, молний и т.п.). данный параметр искусственно увеличит разнообразие.
Hellsy22
Да-да, синяя винтовка против синих слонов, красная винтовка против красных слонов. Ключевое слово — «искусственно», игрок довольно быстро осознает, что его просто заставляют использовать одно и то же оружие, но разного цвета.
Malligan0
Наоборот. Игрок сможет выбрать приятное себе без ущерба своей эффективности. Отсутствие баланса как раз таки делает выбор остальных 99% сомнительным удовольствием, в зависимости от важности эффективности оружия.
Hellsy22
Я немного о другом. Реальное разнообразие оружия достигается особенностями его использования, и я не имею в виду костыль из уязвимостей или проков. Разницы в среднем уроне у SMG и снайперской винтовки может не быть вовсе, однако сами паттерны их использования отличаются радикально, что дает игроку как ситуативный выбор, так и общий выбор оружия.
bro-dev
Мне вообще сложно играть в игру где много генерации игрового мира, то есть подбор силы противников под игрока, генерация карты и предметов, разрабы думают что добавляют этим реиграбельности, но имхо приятнее играть в знакомую игру и уже в ней каждый раз находить что то новое. Типичный пример диабла и фалаут, фалаут нечего не генерируется, и я его прошёл раз 100, а диабло тока 1 раз.
diwnisos
Ну а я диаблу 2 раз 10 гонял все 3 акта) Это все вкусовщина.
ZurgInq
В диабле2 актов 4(оригинал) + 1 (аддон LoD)
Spruts
я думаю тут акты перепутаны с уровнями сложности.