Система оружия
Как бы сделать, чтобы было легко добавлять бесконечно много нового оружия в игру.
Кто какие варианты видит? У кого-нибудь был опыт в этом? |
Ответ: Система оружия
Придумать систему для оружия, определится заранее что можно, что нельзя.
Составить универсальный, а возможно и расширяемый список параметров оружия: скорострельность, перезарядка, тип снаряда (пули), шанс критического повреждения, эффект кровотечения (отнимает здоровье по времени) какой вид повреждений может нанести, например пуля не только пронзает но и взрывается. Игра в списке оружия будет натыкаться на название пушки, которое отсылает к её описанию. А там уже, моделька оружия, икона в интерфейсе, файл анимации, параметры пушки и т. д. По крайней мере я бы сделал как-то так :dontknow: |
Ответ: Система оружия
Хорошо сделано в серии action RPG "Borderlands".
Там, насколько я понимаю, за вычетом сотни уникальных пушек каждый ствол делается из "запчастей", каждая запчасть модифицирует базовые параметры оружия определённого типа. Следим за руками: 1. Тип оружия (снайперка, автомат, пистолет, гранатомёт, etc.) 2. Производитель (тебе может и не подойдёт; в борделе у каждого вендора был свой "flavor") 3. Собственно, запчасти: приклад, коробка, ствол, рукоятка, прицел, магазин. 4. Уровень пушки (опять же, тебе может не подойти) По байту на каждый кусочек паззла - вот и получили "код" пушки. Дальше комбинируем как понравится/делаем генератор. Расширение арсенала: сделал новый приклад - сразу получил много-много новых возможных комбинаций. В "запчасти" можно ещё докинуть паттерн выстрелов (как временной, так и пространственный - одиночные/burst/очередь; в одну точку/дробовик/линией/крестиком), какие-нибудь эффекты типа упомянутых кровотечения/сжигания/взрывов/кислоты. P.S. Помню, как развлекался с редактором сейвов во втором борделе, подгоняя запчасти на понравившуюся мне снайперку, чтобы сделать себе идеальное оружие)) Было бы круто, конечно, если бы в игре была возможность запилить пушку "на заказ"... |
Ответ: Система оружия
не, я наверное неправильно задал вопрос.
Меня интересует реализация системы оружия в коде (абстрактный пример). Т.е как правильно написать базовую систему, чтобы она получилась простой и гибкой. Создать класс болванки и потом только подменять модель оружия и параметры? |
Ответ: Система оружия
Цитата:
Если по говнокоду, то создаешь класс Weapon и в нем описываешь все возможные варианты оружия. Далее если ты на Unity3d можно при помощи enum задавать допустим тип "пуль" - пуля, лазер, ракета, гранаты. Добавляешь методы Fire(), Reload(), Drop(), etc. Можно более правильно. Создаешь базовый класс Weapon и описываешь общие методы и поля у всего оружия (например скорость перезарядки, урон, ссылка на модельку/анимацию). Далее для каждого типа оружия/стрельбы (обычное, лазерное, ракетницы, гранотометы) создаешь свой класс, перезаписываешь базовые методы override Fire, Reload, Drop, etc., в которых уточняешь конкретные тонкости для данного типа оружия/стрельбы (например если пули, то пули летят прямо и может быть имеют некоторую скорость полета. Если лазер, то моментальный урон после выстрела. Если гранатомет, то гранаты вылетают по некоторой траектории., etc). Далее в скрипте игрока делаешь поле public Weapon weapon. И тебе будут доступны методы weapon.Fire(), weapon.Reload(), weapon.Drop(), etc не зависимо каким способом сделал. Вызывая эти методы оружие будет стрелять, перезаряжаться, падать, etc. Если бы ты уточнил что ты именно хочешь от системы оружия, то можно было бы конкретней написать абстрактный код. А так возможных способов создания мильен. В любом случае должен быть некий класс WeaponManager например, который будет при старте загружать конфиг оружия из файлов. |
Часовой пояс GMT +4, время: 22:41. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot