tourney.ru форумЪТрепещите, смертные! |
Вы не зашли.
Invisible написал:
Без познаний в програмировании возможно играть или нет?
И еще, Корвин, все что ты написал - это твое или просто цитаты достижений и тп?
Без познаний в программировании играть сложно, так как задача игрока - написать программу (АИ для жуков).
Это всё моё. И, кстати, я ещё не закончил рассказывать эту историю.
Offline
FlyingBoxEffect написал:
Corwin чё то клиент нифига не видит сервера...
Может фаервол?
Описываемые события происходили иирк 3 года тому назад. С тех пор даже пару новых версий вышло. Я уже даже не знаю, что там и как сейчас.
Попробуй почитать фак или задать вопрос на форуме Игры.
Offline
На чём я остановился? А, вот.
Других хищников в системе просто не осталось.
Почти одновременно со мной (на несколько часов позже) другой российский программист запустил в Экосистему своих травоядных. Так уж получилось, что им лучше остальных удавалось убегать от моих хищников. В результате мои хищники поедали в первую очередь другие виды. Его травоядные вытеснили все остальные виды.
Народ на форуме сильно расстраивался и возмущался. Некоторые даже говорили, что теперь Игра потеряла смысл, у новых видов просто нет шансов и т.п. Это буржуи. Но наши (СНГ) программисты так просто не сдаются! Они детально изучали моих хищников и тех травоядных - поведение, повадки, уязвимости - и готовили своих жуков. Тем более, что был стимул - новый, современный, мощный пентиум (с монитором и всем прочим). Где-то через неделю в России начинался конкурс, организованный компанией Майкрософт.
Так получилось, что наша компания предоставляла сервера для этого конкурса. И фактически я выполнял всю техническую (то есть, связанную непосредсвенно с игрой) работу по проведению конкурса. Моё участие в конкурсе даже не обсуждалось - нельзя, а то поднимут шум о подтасовке результатов и т.п. Но в последний момент, когда я разговаривал с сотрудником Майкрософт, ответсвенным за проведение конкурса, он сказал: "А почему нельзя? Участвуй." (Естественно, он знал об успехах моих жуков на международном сервере).
Да, поздновато я об этом узнал. Во-первых, я уже раскрыл все свои секреты - выпустил жуков в Экосистему. Во-вторых, у меня совершенно не оставалось времени что-то переделать. Вобщем, я побыстрому слепил из своих хищников травоядных. Существа получились довольно убогие .
Травоядные достаточно сильно отличаются от хищников. Хищник в каждый момент охотится за одной выбранной жертвой, а травоядные убегают от кучи опасностей. Кроме того, бодаются за кусты (еду) со своими конкурентами - другими травоядными. Поэтому для написания хороших травоядных требуется другой подход.
На конкурсе победил среди Хищников - парень из Прибалтики, среди травоядных - парень, по-моему, из Воронежа. Правда мои жуки умудрились занять призовые места в обоих номинациях.
Про убогость своих травоядных я уже писал. Мои хищники тоже вымирали, как динозавры. Дело в том, что новые травоядные (победителя, мои и некоторых других игроков) бегали довольно шустро и разумно. А травоядные победителя обладали ещё и стадным инстинктом - "все побежали, и я побежал". То есть, на них не удавалось выскочить неожиданно из-за спины убегающих сородичей. Для всех хищников наступили тяжёлые времена. Вот тут то и сказались в полной мере размеры моих хищников. Кроме того, будучи сделанными на скорую руку, они обладали рядом других недостатков. Так что попадание на призовое (второе) место для них было уже хорошим результатом.
Сразу после окончания российского конкурса животные победителей были выпущены в Мировую Экосистему. Естественно, они вытеснили живущих там уже 2 недели моих хищников и тех травоядных. Тем самым они на примере показали, что и доминирующий вид можно выжить. Народ с ещё большим интузиазмом начал писать жуков. Тем более, что вскоре начинались локальные конкурсы в других странах - Англии, Японии и т.п.
Продолжение следует.
Offline
Corwin
Респектище тебе, жаль что раньше об игре я не знал=(((((((
Offline
После конкурса у меня появилась идея сделать нормального травоядного, а не переделанного за несколько часов из хищника. Дело в том, что принципы, которые я использовал для хищника плохо (с моей точки зрения) подходили для травоядных.
Для перемещения хищник использовал "объектную" модель (чтобы упростить вычисления пути). То есть, он перемещался не "по точкам", а "между объектами". Если ему нужно было подойти к какому кусту, то он шёл к центру куста, пока на не натыкался на этот куст (препятсвия он огибал - по касательной к этим препятсвиям). Он не мог занять конкретную точку около куста. А для травоядного имеет значение, какую именно точку около куста занять (с какой стороны от куста стоять).
Для принятия решений хищник использовал "приоритетную" модель. С каждым объектом была связана задача. Например, "подойти и сожрать". Каждой задаче выставлялся приоритет, который зависил от расстояния и параметров обэекта. Затем выбиралась задача с максимальным приоритетом и выполнялась. Хищник в каждый момент времени охотился за одной жертвой. А для травоядного такой подход не годился. Ему желательно выполнять несколько задач. Во-первых, убегать сразу от всех хищников. Во-вторых, желательн убегать в сторону кустов. И так далее.
Идея была неплохая, но возиться с этим было лень. Но через 1-2 месяца начался конкурс в США и Канаде, который проводился во Всемирной Экосистеме. Этот конкурс вызвал всплеск интереса к Террариуму, мне стали задавать много вопросов на форумах. И все эти разговоры на тему Террариума реанимировали мой интерес к игре. Я решил таки написать своего травоядного.
Offline
Лирическое отступление на тему успешности травоядного.
Успешность - это размер популяции. Размер популяции - это рождаемость минус смертность.
Несколько слов о рождаемости - как это происходит.
Изначально жук рождается размера 11. Первую половину жизни он растёт, пока не достигнет взрослого размера. То есть, через определённые промежутки времени его размер может увеличиться на 1 - для этого жук должен быть сытым. Голодные жуки не растут. Как только жук стал взрослым (достиг взрослого размера), он может рожать - один раз на каждую (примерно) треть своей взрослой жизни.
Продолжительность жизни напрямую зависит от размера (прямо пропорционально). То есть, жук размером 24 живёт в два раза дольше, чем жук размером 12. Соответсвенно, ему требуется в два раза больше времени, чтобы вырасти. Надо отметить важный факт - жук 12 растёт (увеличивает размер) один раз, а жук 24 - 13 раз. Если в какой-то из этих 13 моментов, когда он готов подрасти, он будет голодным, то увеличение размера откладывается до тех пор, пока он не наестся. Чтобы всегда быть сытым, нужны благоприятные условия, поэтому жуки большого размера вполне могут умереть от старости, так и не повзрослев и не родив. Маленьким жукам проще - им нужно подрасти всего 1, а не 13 раз. Но даже в идеальных условиях жук размером в 12 взрослеет в два раза быстрее и рожает в два раза чаще, чем жук размером в 24 из-за разницы в продолжительности жизни.
Теперь несколько слов о смертности.
Напомню:
- насильственная смерть
- голод
- болезнь
- старость
Насильственная смерть:
Тут всё зависит от того, как хорошо программист научил своего жука убегать/избегать опасности.
Голод:
Тут всё зависит от того, как хорошо программист научил своего жука находить пищу.
Болезнь:
А вот этот фактор не подвластен программисту. Смертность от болезни прямопропорциональна численности. И НИЧЕГО НЕ ЗДЕЛАТЬ!
Среда сама решает, сколько жуков какого вида убить болезнью на этом ходу. Решает и тут же убивает - начиная с самых старых представителей твоего вида. И НИЧЕГО НЕ ЗДЕЛАТЬ!
Старость:
Если популяция твоих жуков в банке велика, то до старости они не умирают - они умирают от болезни.
Теперь давайте представим два очень умных вида травоядных разного размера.
Пусть их в банке поровну. Умирать их будет равное количество (идеальные жуки умирают только от болезни - то есть, пропроционально численности). А вот рождаться маленьких будет в два раза больше, чем больших. Думаю, дальше можно не продолжать - и так всё ясно.
А если маленьких в три раза больше? Теперь болезнь выкосит в три раза больше маленьких. Но родится то их в шесть раз больше! То есть, численность мелких будет расти до максима (общее население банки ограничено). Численность больших будет падать до 10 (болезнь не поражает виды, численность которых в данной банке ниже 10).
Offline
Лирическое отступление будем считать законченным.
Ситуация в Экосистеме сильно изменилась по сравнению с тем, что было 2 месяца тому назад.
Если раньше животные редко умирали от болезней (больше от хищников и от голода), то сейчас это стало основной причиной смерти.
Все травоядные имели минимально размер - 12. Увеличение размера даже до 13 приводило к уменьшению рождаемости на 1/12 - такие животные просто не могли расплодиться.
90% смертей, если не больше, приходилось на болезнь. Тот вид, который добивался небольшого улучшения (на полпроцента) по данному показателю (грубо говоря, уменьшал смертность от остальных - кроме болезни - факторов на 1%), начинал постепенно доминировать. Авторы животных постоянно выпускали новые модификации своих видов, специально заточенные под борьбу против вида, который доминирует. Если им удавалось выжать этот процентик, то числинность их вида медленно росла.
На форуме все ругались на "долбаную болезнь, с которой нельзя бороться". Критиковали создателей игры. Опять указывали на бесполезность такого параметра, как размер.
Вот в таких условиях я начал писать своего травоядного. Основной моей целью было - научить их выполнять несколько задач одновременно. Чтобы, убегая от хищников, они не забывали про еду (соответсвенно выбирали маршрут). Чтобы могли прятаться от хищников за кустами и т.д.
Я думаю, что уже все догадались, какой размер я задал своим травоядным? Естественно, максимальный - 24.
Успешность (предполагаемый рост численности) животных можно было оценить по формуле:
Успешность = <Рождаемость %> * <Смертность от болезни %>
По рождаемости мои жуки уступали в два раза. Это если они будут расти и размножаться идеально - без задержек, связанных с недостатком энергии в нужные моменты.
Смертность по болезни у остальных видов была 90%. Даже, если мои жуки будут идеально выживать, и мне удасться добиться результата 100%, это не покроет гандикапа по рождаемости.
Решение очевидно. Раз я не могу влиять на смертность от болезни МОИХ жуков, то мне нужно влиять на смертность от болезни ЧУЖИХ жуков. То есть, увеличивать их смертность от голода и убийств. Поэтому я сделал своих жуков злыми. Очень злыми.
Если кто помнит, травоядные могут драться только если они голодные. С другой стороны, расти и размножаться могли только сытые животные. Поэтому я задал алгоритм питания так, чтобы они балансировали на грани между "голодный" и "сытый". Подошло время расти - поел - ровно столько, сколько требуется энергии на рост (и так 13 раз за первую половину жизни). Подрался - поел - ровно столько, сколько требуется энергии на лечение ран. Ну и так далее.
Основной целью моих жуков было - убивать или хотя бы отгонять от еды (растений) других травоядных.
Offline
Corwin написал:
Успешность = <Рождаемость %> * <Смертность от болезни %>
Так- чегото я неосилил
Offline
В день окончания конкурса (для США и Канады - как я уже писал) я выпустил своих жуков во Всемирную Экосистему. Они, вроде, начали чуть-чуть плодиться, но очень медленно. Сначала я следил за их численностью, потом мне надоело (почти не меняется) и я забил.
Дело в том, что для того чтобы получить перевес по росту численности, нужно убивать врагов как минимум столько же, сколько их умирает от болезни (рождаемость у меня в два раза ниже). Эксперименты показали, что необходимое для этого соотношение численности - примерно 1 к 3 или 1 к 5 (не в мою пользу).
Маленькую банку с максимально возможным населением в 50 захватить было можно. Сначала размножаемся до численности 10 - болезнь ещё не действует. Ну а потом 10 моих кабанчиков начинают вырезать всех вокруг. Но таких маленьких банок практически не было (размер банки зависел от мощности компа).
С большой банкой возникали проблемы. Если макс численность 100+ животных, то враги (размер 12 ) плодились быстрее, чем мои кабаны их убивали. Ведь нельзя постоянно драться. После каждой драки нужно лечиться. Переодически нужно подрастать или рожать. Кроме того, враги убегают - хрен догонишь. Моих мало - чужих много.
Вобщем, через несколько дней я даже заглядывать туда перестал.
Offline
CMEPTb_POPce написал:
Corwin написал:
Успешность = <Рождаемость %> * <Смертность от болезни %>
Так- чегото я неосилил
Напишу по другому:
Успешность = <Рождаемость %> * (100% - <Смертность от остальных факторов, кроме болезни %>)
Смертность от остальных факторов, кроме болезни - это та цифра, которая зависит от мозгов животного (его способности спасаться от врагов, находить пищу и т.п.).
Offline
внимательно слежу за ходом повествования
Offline
Corwin Как я сразу не догадался
А вот такой вопрос- есть ли в интерфейсе игры механизм по которому можно идентефицировать конкретный вид? или хотябы хищник/травядный? и вобще получать инфу о статах других жуков?
Опиши поподробней интерфейс плиз
Отредактировано CMEPTb_POPce (08-09-2006 16:38:28)
Offline
Corwin Хуйасе, ты ебашишь, сколько дали за второе место?
Offline
Ну и спрошу напрямую- есть ли принципиальная возможность реализовать хотяб простенький командный аи?
Offline
Через несколько недель вспомнил - и заглянул. ВСЯ Экосистема была занята моими кабанами. Это захватить банку тяжело - нужно чтобы численный перевес соперника был 4, а не 10 раз. А уж удержать банку - когда численный перевес на нашей стороне - это как нефиг делать.
Конечно, любой пользователь на своём компе хозяин и в любой момент может очистить (обнулить) банку на своём компе. Но не все же одновременно . А так - через небольшое время телепортер опять накидает кабанов с других компов.
Вобщем, чужие банки доставались с трудом. Нужно было благоприятное стечение обстоятельств. Но уж раз захватив, они оставались в ней на всегда.
Вобщем, кроме моих кабанов никого в экосистеме не было (количества в несколько десятков я в расчёт не беру). Хищников, кстати, тоже. Хотя нет, был один вид хищников. Какая-то мелюзга шныряла. Они ждали, когда мои кабаны умрут от болезни, и пожирали трупы .
Заглянул на форум. Все ругают моих кабанов. Все дружно обсуждают варианты борьбы с ними, тонкости их поведения и т.п. Некоторые уже дизассемблировали длл с кодом моих жуков - это тоже не сильно им помогло.
Моим кабанам опять приписывали какие-то фантастические свойства. Например, некоторые утверждали, что они (кабаны) общаются между собой, и всё пытались расшифровать язык . А как иначе объяснить такую картину:
Стоит несколько кабанов рядом с кустом. Приближается чужой травоядный. Кабаны сдвигаются плотнее на нужную сторону, отрезая того от куста (при этом они по-прежнему рядом с кустом). Если же подходит свой (другой кабанчик), то они, наоборот, раздвигаются, чтобы он мог подойти к кусту и тоже есть.
Или один кабан затеял драку с другим травоядным. Тот сопротивляется - не хочет от куста отходить. Тут начинают срываться другие кабаны - и тоже на него нападают.
Ну и так далее.
Offline
CMEPTb_POPce написал:
А вот такой вопрос- есть ли в интерфейсе игры механизм по которому можно идентефицировать конкретный вид? или хотябы хищник/травядный? и вобще получать инфу о статах других жуков?
Вид выяснить нельзя. Можно только определить - свой вид (такой же) или чужой.
Все статсы - скорость, размер, количество жизни и т.д. жуки видят.
Offline
Foggy4 написал:
Corwin Хуйасе, ты ебашишь, сколько дали за второе место?
Нормальный приз - комп - давали только за первое место.
За второе - хуета в виде коробочных программных продуктов Майкрософт.
Offline
CMEPTb_POPce написал:
Ну и спрошу напрямую- есть ли принципиальная возможность реализовать хотяб простенький командный аи?
Есть.
Проблемы:
- каждый экземпляр думает (принимает решения) сам по себе
+ при этом он может учитывать параметры/сигналы от других особей - своих и/или чужих
- зона видимости не очень велика, даже если большую часть баллов вложить в зоркость
- рождается жук в случайной точке банки, а не рядом с "мамой"
- код жёстко ограничен по размеру (длл 100 кб) и по времени исполнения (не успел отработать - пропусти ход)
з.ы. В следующей версии специально для общения добавили усики. Жук может установить каждый из своих двух усов в любом из 10 положений - фактически передавать "в эфир" (тем, кто тебя видит) число от 0 до 99.
Offline
Ну и в качестве итога этой истории:
Моих кабанов так никто и не вытеснил. Через какое-то время Майкрософт выпустило новую версию Террариума и запустило для неё новый сервер. Игра переместилась туда. (А мои кабаны продолжали хозяйничать на старом сервере).
Offline
Вот описание интерфейса:
http://www.windowsforms.net/Terrarium/d … none).aspx
Offline
Corwin
Offline