>>
|
No. 14676
Давно хотел запилить рогалик с программируемой магией. Раз уж тред сомхау релейтед, то предлагаю сорт оф дискач. Собсно идея создаваемой игроком магии не раз обсасывалась на всяких там рогуелайк клабах и девах, но результатов видеть мне не доводилось.Вангую что и тут их не будет.
??так, я сходу вижу пару подводных камней:
1) Развитие персонажа, от левел апов, до характеристик шмоток. Нужно как-то сделать их нужными, чтоб они что-то давали или улучшали. Тут есть следующие варианты: объем памяти(кол-во спелов, и просто пзу для хранения промежуточных результатов для спелов типа mark-recall), скорость создания(кол-во ходов между окончанием написания, и готовностью каста, для противодействия написания новых спелов прямо между ходами, под конкретного врага). Хотелось бы еще регулировать скорость каста и размер спела, но тут я не вижу приемлемых решений. Если ограничивать размер строками, то это будет провоцировать на создание нечитабельных однострочников, если ограничивать скорость кол-вом вызовом внешних функций(строки снова мимо, по тем же причинам - быдлокод), то базовые функции(вроде math.*) будут копипастить в каждый спел. Артефакты\книжки можно сделать чтоб давали import whatever;, вроде того-же math, но сходу не я не вижу что помешает их просто скопипастить в спелл, если не ограничивать его размер. Ну или import magic.fire, тогда польза будет, но вот на тыщу рандомно генерируемых артов этого не хватит. Да и параметров 3.5 явно мало. В общем, цельной картинки у меня пока нет.
2) Сама механика магии. Тут я вижу сходу три варианта, и не один мне не нравится.
а) Самый правильный. То же апи и неймспейс что и у всей игры. Слишком имбово, не хотеть спелов foreach(Unit u : Map.getUnits()) {if(!u.isPlayer) u.setHP(0)}.
б) Костыльный. Своё высокоуровневое апи. Теряться весь цимес создания магии если она будет составляться из вызовов enemy.burn() - то все чем будут различаться спелы это лишь область поражения, а список эффектов так и останется ограниченным.
в) Сорт оф физика. Своё апи, но воздействие косвенное. Поднимаем температуру юнита для зажжения, снижаем температуру воды для создания ледяного моста, размягчаем стены, левитируем в кучу получившееся говно, создаем обьект юнит и пишем ему аи и тело из этого говна для создания голема. Все бы охуенно, еслиб не сложность реализации. Это нужно придумать 9000 эффектов, и предусмотреть все способы их взаимодействия.
Дискач?
Знаю что для разработки есть отдельный тред, но тут скорей рассуждения о механике, чем вопросы конкретной реализации.
|