Не так давно при очередном о
Так вот, я вас поздравляю: теперь такая ММО есть. Стартует 20-го ноября. Нет, не 18-го.
UPD: судя по всему, игра будет распространяться по подписке, но с различными «тарифными планами», т.е. не исключено, что халявщиков в каком-то виде тоже пустят.
Прямая речь от artch12:
Подписка на объем серверной мощности (CPU и память). Все честно, подробности — на старте.
…
Такты для всех игроков идут одинаково. Просто за такт один игрок с лучшим тарифом может выполнить более ресурсоемкий скрипт, чем другой. Но при этом более грамотно написанный скрипт может быть менее ресурсоемким сам по себе, поэтому преимущество не очевидно.
30 комментариев
К сожалению, с яваскриптом я знаком весьма поверхностно, так что для начала мне нужно подучить язык :)
Скушавший слишком много скрипт просто не успеет по таймеру раздать команды всем.
С другой стороны, это однозначно не МОБА. И не «обычная» сетевая стратегия, т.к. тут количество игроков «как бы» не ограничено — мир расширяется при добавлении новых игроков. На сколько это будет «массивно» в реальности — посмотрим, но из опыта Травиана, который тут похоже применим, взаимодействие происходит минимум с десятком соседей, дальше начинаются проблемы «ожидания», хотя это и не исключает полностью возможность «прихода гостей» с другого края карты.
Исходя из одного только описания — вы правы, никакого иного взаимодействия между игроками и их колониями в рамках собственно игры (пока?) не предусмотрено.
И отвечая Рыжебороду: я полагаю, проблема захвата всего решена чисто логистически, как и в Травиане. Т.е. один игрок просто не сможет поддерживать темпы экспансии неограниченно, раньше или позже он столкнется с невозможностью «подвозить скрипов» из центра к границам достаточно быстро, чтобы компенсировать их убыль в постоянных терках. Кроме того, я пока слабо себе представляю скрипт конечного размера, в принципе способный к успешной неограниченной экспансии.
з.ы. где ошибка? :)
делал по типу гуарда из туториала. но видимо что-то сделал не так.
консоль говорит syntax error
хотя, из разряда глупых предположений — надеюсь тэгов code нет в итоговом коде :)
я себе скопировал и добавил в самом конце одну закрывающую фигурную — никаких ошибок в консоли.
даже не знаю…
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, а нужно завести переменную, которая будет указывать нашли цель для хила или нет. Если не нашли — тогда уже возвращаться.
Кроме того, берут сомнения, что будет делать крип, если он сам окажется побит.
А еще такое подозрение, что в обучалке хиты у крипов восстанавливаются с каждым тиком — я пока не поставил в коде явно в самом начале задание хитов у крипа — хил даже не дергался.
если нет скрипов с неполным хп — идти на базу.
добавил брейк при лечении.
457 очков, первая карта.