Читайте также

30 комментариев

Интересная идея)
  • Kaizer
  • 0
  • v
Ага, особенно детей можно завлекать так изучать программирование)
Вряд ли… Чтобы завлекать детей, придется ГТА или КоД в таком формате делать =)))
отдам пред-заказ классика ))
Интересно, самостоятельно эволюционирующие скрипы быстро появятся? :)
Комментарий отредактирован 2014-11-12 15:51:36 пользователем Andre
  • Andre
  • 0
  • v
На сколько я понимаю, сложность скрипта ограничена сверху по объему занимаемой памяти и времени исполнения, так что скорее всего есть определенный лимит «разумности» стратегии, которую можно в этот скрипт запихнуть.
К сожалению, с яваскриптом я знаком весьма поверхностно, так что для начала мне нужно подучить язык :)
С учетом того, что окружение там игровое, то и учить мало что нужно. Си-подобный по синтаксису, но слабо-типизированный и с кучей злобных антиинтуитивных хаков. ;) Которые, правда, можно и не использовать. :)
Для «подучить язык»: Untrusted.
Если они хотят сделать из этого ММО, им надо придумать механизм, который не позволит одному игроку захватить все. Игра сразу же потеряет смысл. :)
А на это ограниченный размер и время скрипта не будут работать.
Скушавший слишком много скрипт просто не успеет по таймеру раздать команды всем.
Вопрос в реализации. Центральные районы можно и не просчитывать. Совершенно не факт, что ограничение на скрипт здесь поможет.
Чего-то не хватает для ММО. Способы взаимодействия между игроками и их «колониями умных роботов»? (кроме лобового уничтожения).
Я полагаю, что ММОшность, как это принято в последнее время, сильно притянута за уши просто потому, что это — модно и звучит круто.
С другой стороны, это однозначно не МОБА. И не «обычная» сетевая стратегия, т.к. тут количество игроков «как бы» не ограничено — мир расширяется при добавлении новых игроков. На сколько это будет «массивно» в реальности — посмотрим, но из опыта Травиана, который тут похоже применим, взаимодействие происходит минимум с десятком соседей, дальше начинаются проблемы «ожидания», хотя это и не исключает полностью возможность «прихода гостей» с другого края карты.
Исходя из одного только описания — вы правы, никакого иного взаимодействия между игроками и их колониями в рамках собственно игры (пока?) не предусмотрено.

И отвечая Рыжебороду: я полагаю, проблема захвата всего решена чисто логистически, как и в Травиане. Т.е. один игрок просто не сможет поддерживать темпы экспансии неограниченно, раньше или позже он столкнется с невозможностью «подвозить скрипов» из центра к границам достаточно быстро, чтобы компенсировать их убыль в постоянных терках. Кроме того, я пока слабо себе представляю скрипт конечного размера, в принципе способный к успешной неограниченной экспансии.
Комментарий отредактирован 2014-11-12 17:07:10 пользователем Avicorn
срипт может решать локальные задачи. А количество спавнов ограничено тремя на комнату, а не вообще. Соответственно, спавны могут быть и на передовой. В любом случае, будет интересно понаблюдать. Про режим наблюдателя ничего не слышно?
Информации очень мало, например только в комментариях из разработчиков вытянули что режим доступа — подписка.
+1 в карму разработчикам за p2p.
Да, но это значит, что «потрогать» не получится.
Потрогать можно будет соло версию, плату он собирается брать от использованного cpu
вышла демка.
з.ы. где ошибка? :)

<code>if(creep.memory.role == 'healer') {
	for(var heal_name in Game.creeps) {
	var heal_creep = Game.creeps[heal_name];
	if(heal_creep.hits < heal_creep.hitsMax){
	    creep.moveTo(heal_creep);
        creep.heal(heal_creep);	}
	else 
	    creep.moveTo(Game.spawns.Spawn1);
    }</code>
делал по типу гуарда из туториала. но видимо что-то сделал не так.
консоль говорит syntax error
Комментарий отредактирован 2014-11-21 13:13:06 пользователем kpu3uc
  • kpu3uc
  • 0
  • v
Насколько я вижу — три открывающих фигурных скобки и две закрывающих.
закрывающая тоже ничего не поменяла.
остальное только если в логике.
хотя, из разряда глупых предположений — надеюсь тэгов code нет в итоговом коде :)

я себе скопировал и добавил в самом конце одну закрывающую фигурную — никаких ошибок в консоли.
Комментарий отредактирован 2014-11-21 14:02:00 пользователем Shauni
нету коде…
даже не знаю…

var harvester = require('harvester');

for(var name in Game.creeps) {
var creep = Game.creeps[name];
if(creep.memory.role == 'guard') {
var targets = creep.room.find(Game.HOSTILE_CREEPS);
if(targets.length) {
creep.moveTo(targets[0]);
creep.attack(targets[0]);
}
else
creep.moveTo(Game.spawns.Spawn1);
}
if(creep.memory.role == 'harvester') {
harvester(creep);
}
if(creep.memory.role == 'healer') {
for(var heal_name in Game.creeps) {
var heal_creep = Game.creeps[heal_name];
if(heal_creep.hits < heal_creep.hitsMax){
creep.moveTo(heal_creep);
creep.heal(heal_creep); }
else
creep.moveTo(Game.spawns.Spawn1);
}
}
if(creep.memory.role == 'builder') {
if(creep.energy == 0) {
creep.moveTo(Game.spawns.Spawn1);
Game.spawns.Spawn1.transferEnergy(creep);
}
else {
var targets = creep.room.find(Game.CONSTRUCTION_SITES);
if(targets.length) {
creep.moveTo(targets[0]);
creep.build(targets[0]);
}
}
}
}
Вообще странно. Сделал тоже хилера. Синтаксических ошибок нет, но не могу сэмулировать ситуацию для хила — сбрасываю хиты в консоли для харвестера, там все ок, но в скрипте почему-то показывает, что хиты полные.
Ок, скопипастил к себе — редактор показывает две ошибки:
for(var name in Game.creeps) — переопределение name, лучше использовать другое название для переменной, например, creepName,
if(creep.energy == 0) — сравнение с нулем рекомендуют делать тройным равно ===

Но это все вроде как не влияет на общую работу скрипта.
Нашел логическую ошибку — хил перебирает всех крипов, и если последний будет здоров, то хил всегда будет возвращаться на базу, даже если есть побитые.
По идее, не нужно его отправлять на базу в else, а нужно завести переменную, которая будет указывать нашли цель для хила или нет. Если не нашли — тогда уже возвращаться.
Кроме того, берут сомнения, что будет делать крип, если он сам окажется побит.

А еще такое подозрение, что в обучалке хиты у крипов восстанавливаются с каждым тиком — я пока не поставил в коде явно в самом начале задание хитов у крипа — хил даже не дергался.
м, значит неправильно задал, я хотел перебирать всех крипов и если у него не полное хп — похилить.
если нет скрипов с неполным хп — идти на базу.
ну там как — все операции асинхронные, т.е. если мы нашли крипа с неполным хп и выполнили moveTo — то крип двинется только на одну клетку, затем отработает попытка хила (если крип еще не рядом, то хил вернет код ошибки -9 — не в зоне действия), потом цикл пойдет проверять остальных. По идее, можно еще break поставить после heal, чтобы даже не перебирать дальше, если пациент найден.
в общем, перезагрузка странички помогла — скрипт откатился назад и когда я его подправил все заработало.
добавил брейк при лечении.
457 очков, первая карта.
Комментарий отредактирован 2014-11-21 21:55:25 пользователем kpu3uc
509

Оставить комментарий