Обновить
123
0
Дмитрий Толмачёв@beetleinweb

Пользователь

Отправить сообщение
Это не «неудачная калька», это «удачная не калька» :) По-русски это звучит может и не так, как по-английски, но не менее, если не более удачно.

Дело в том, что в русском языке слово «такой» вполне сочетается с существительными. Например, вполне равнозначны такие выражения: «ты такой тупой» и «ты такой дурак» (без намёков).

Фразы типа «ну ты блин художник», подразумевающие, что художник совсем не художник, также были в ходу задолго до появления этого мема.

В общем, блюстители чистоты языка слишком часто выплёскивают с водой и ребёнка. Да и вообще, это не грязь, это почва. На ней язык растёт и развивается, без грязи не будет роз, чьи корни из неё растут.

Безжалостное время в прах обратит засохший лепесток,
из праха семя прорастёт… Так и слова.


Ваш Grammar Freeman :)
Увлекаюсь фантастикой, иногда мелькала идея написать что-нибудь самому, но так как литературными талантами обделён, то хватило здравого смысла не начинать. Тем не менее, пока готовился, записывал наброски.

Помимо прочего, была там сценка перестрелки в недалёком будущем. Антигерой распахивает полы пальто, подмышками две кобуры скрытого ношения. Но там не банальные пистолеты, а парочка подобных складных вертолётов…

В общем, каждый сам себе авианосец. Дуэль начинается задолго до того, как противник покажется в поле видимости. Начинается с дальней разведки, и ей же и заканчивается, по сути. В прямой видимости даже нужды не возникает. Разве чтобы только убедиться, что сигнал с видеокамер соответствует действительности… впрочем, не будем углубляться в сюжет :)

Похоже, это будущее окажется ещё более недалёким, чем я предполагал.
По поводу психологии. Надеюсь, переломный момент настанет тогда, когда 20 процентов (плюс-минус) населения будет создавать виртуальный продукт.

До тех пор даже самим создателям подобной продукции иногда неудобно получать за это деньги. Сам знаю таких — пашут и на работе, и после, чуть ли не по ночам, а потом выдают перлы «хочется делать что-то настоящее». Будто программный код — это так, виртуальность, ничего не стоящий выверт сознания, а не эквивалент вложенного труда, природного дара, образования, многолетнего опыта и искры таланта.
В смысле не на DroneSoft.com? Он пока на консервации до НГ. Если окажется что постновогодняя активность не превысит предновогоднюю, то закрою проект или перепрофилирую под что-нибудь другое.
На самом деле я немного смухлевал. Но не больше чем вы :) Просто вы добавили Message, я сперва хотел это использовать, а потом подумал: ведь если юниты могут обмениваться любыми сообщениями, это так или иначе объединит их в одну систему. Так зачем тратить время на протоколы? Я дал им что-то вроде условной спутниковой связи (так уже ближе к дронам) через статические мемберы.

Но система по-прежнему распределённая в том что касается зрения. Нет какого-то вида сверху, когда центр всё видит.
Комментарий-то однострочный :)
Ответный ход: G1_20091228_Tolmachov.zip
(и четыре кадра с мест боёв: #1 #2 #3 #4, COMRADE 1.1 выигрывают 230-280 на поле 1920х1200 при количестве юнитов 1000 на 1000).

Главное отличие: режим Collapse, при котором все юниты стягиваются к центру группировки.
Не то что бы совсем всем не до кодинга. Вот Pinguin модифицировал и среду, и Комрадов, которые теперь бьют моих с небольшим, но стабильным преимуществом.

Вернее били. Сегодня мне это надоело, и я выпустил прошивку Tolmachov.COMRADE 1.1, которые побеждают Pif.COMRADE с преимуществом 230-280 юнитов. Кадры последней битвы: #1 #2 #3 #4
Пока непонятно. После НГ загляните на DroneSoft.com. Если там соберётся несколько человек, можно будет у них спросить. А сейчас всем не до кодинга — НГ на носу.
Поначалу так и думал, что там посоревнуемся. Туда полтыщи человек заглядывало, но самоорганизоваться не смогли — просто постеснялись, надеюсь :)

После НГ многие обещали вернуться. Посмотрим.

А пока можете зарегаться там и писать в личный блог топики, первым будете. А то здесь мы уже слишком развесистое дерево комментариев написали.

Мне ещё предлагали выложить код в репозиторий. Чуть разгребу дела, и подыщу. Тогда не придётся вам больше архивы паковать, будете просто коммитить.
Можно и дрейфовать всей толпой, но есть другие варианты и подварианты. Разведка: отдельные юниты, автономные отряды, или цепи юнитов, отстоящих друг от друга на грани видимости. Зачистка — растягивать рой в «колбасу» :) и зигзагами проходить поле. Или цепью от стенки до стенки, но тут можно и на прорыв линии фронта нарваться, если противник ходит роем.

Танцевать — только когда враг ещё далеко.

Память в зародыше уже есть. Юнит ведь помнит случайное направление. Помнит и место схватки (понаблюдайте — бой закончился, враги уже мертвы, а друзья спешат на помощь в ту точку, которую помнят).

Не трусость, а разумная осторожность :)
Скачал, тоже пару партий прогнал. Преимущество за говорящими, да, но немые проигрывают совсем немного, примерно 50 в партии 1000х1000. В одной, правда, была «техническая ничья» — сформировалось несколько роёв, и они друг к другу не приближались. Но в вашем рое было больше. Всё равно надо решать проблему инертности роёв для юнитов типа Комрад.

Кстати, тут кто-то пчёл упоминал. Так вот у них есть такой обычай — «пчелиный танец». Пчела, которая нашла мёд, в миниатюре рисует свою траекторию.

Так что вы, в принципе, могли показывать наличие, и даже направление на врага, выполняя различные телодвижения — два шага вперёд, шаг назад, например. Или наоборот, если врагов в поле зрения больше, чем друзей.

Но это, конечно, сложнее. Тут ведь надо запоминать расположение друзей на 2-3 хода назад во времени. Да и несколько нереалистично такое ограничение на общение. Единственное, в чём пока сомневаюсь — что радиус общения совпадает с полем зрения. Имхо надо больше, типа радиосвязь. Или меньше, если это звук. А сейчас это типа язык жестов :)

P. S. Пока писал, третья партия завершилась вничью (два роя, не приближаются), но на этот раз моих больше чуток.
По-русски enum ECourse already defined означает, что тип enum ECourse уже определён. Очевидно, компилятор два раза включает один и тот же заголовочный файл.

Для предотвращения этой ситуации есть два способа, и тут они оба есть:
#if !defined(AFX_AICOMRADE_H__9CC3A2E8_4BF2_43D9_BDD3_6DD3B8C18483__INCLUDED_)
#define AFX_AICOMRADE_H__9CC3A2E8_4BF2_43D9_BDD3_6DD3B8C18483__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


Вот в верхних строчках меняли длинную-длинную константу? Хотя бы просто COMRADE на СВОЁ? Т.е. я тут тоже часто на грабли наступал. Обычно замену надо делать в нескольких регистрах.

Смущает только жалоба на enum ECourse. Это определение в другом файле, в AIBerserk.h.

В общем, если не поможет, выкладывайте где-нибудь архив с исходниками, посмотрю. Заодно погоняю вашего юнита.
Возможно, я выбрал неудачное время (перед самым НГ), возможно, неудачную область — распределённые системы, искусственный интеллект и т.п. Но итог таков — желающих попрогать практически нет. Ни юнитов, ни среду для них. Кстати, долго не отвечал именно вам, поскольку ждал, чтобы подвести итоги.

Решите самостоятельно продолжить или ещё кого найдёте в партнёры — помогу, чем смогу. Присоединиться не обещаю. Надеюсь поймёте — я несколько разочарован на данный момент :)

Это не первый раз уже так — всем моя идея нравится, многие в восторге. Но желающих доказать интерес на практике — раз-два, и обчёлся. Да и у тех энтузиазм тухнет на глазах.

Обычно так: кто-то может, но уже не хочет. Кто-то хочет, но не может. Уговаривать желания нет, учить — ну не знаю… Вообще-то, мелькнула мысль организовать что-то вроде онлайн-школы практического кодинга, собрать учеников, может быть даже учителей… Но вернусь к этой задумке после НГ.
Да, но если сравнивать с объёмами HD видео… :)
Опять же, объём современных винтов возьмём, и скорость падения цены хранения мегабайта…

Но есть ещё один способ — специфические для данной системы способы сжатия. Например, по биту на соседнюю клетку при движении (8 направлений). Т.е. записываем координаты не каждый кадр, а каждый шестнадцатый, допустим (просто от балды 16). А на промежуточных просто битами ходим от этой начальной точки. Тут есть конечно, тонкости, типа стояния на месте. Но это детали, суть вы ухватили уже, думаю :)

P. S.
И однажды кто-нибудь научит этих однопиксельных тварей ходить строем в конце-то концов. Что сильно положительно скажется на объёме файла сохранения :))
P. P. S.
Если есть возможность перекомпилить, то для малых полей можно сделать зрение похуже, изменив эту строку:
#define UNITDEF_EYESHOT 200
Да-да, когда меня спросили о параметрах и я покопался, нашёл, вспомнил, тогда и сообразил, в чём было дело. Зрение у юнитов сейчас хорошее, 200 пикселов в каждую сторону. Поэтому на маленьком поле (200+200 почти 500) Берсерки быстро добираются до места схватки, кучкуются почти с такой же скоростью, как и Комрады, и преимущество последних минимизируется.

Собственно, вы уже и сами подошли к отгадке вплотную :)

P.S.
Кстати спасибо за задокументированное доказательство, что на Windows 7 игра таки запускается, хоть и не у всех.
Да, примерно так я и хотел реализовать сохранение, не только статику на момент сохранения, но всю динамику, просчитанную от начала игры. Чтобы потом можно было просмотреть любой момент, в т.ч. с ускорением, или обратную перемотку с просмотром сделать.
Не смотрел ещё. А вы уже весь сюжет рассказали :))
Возможно, я стал программистом отчасти благодаря игре Жизнь (http://ru.wikipedia.org/wiki/Жизнь_(игра)). Повозился, бросил, но потом были другие мотивы. И до этого были. Как-то в несколько этапов двигался к цели. Да и цель передвигалась.

Это я к чему — может тех, кто бросил, не надо бросать? :) Показать им что-то ещё.

Информация

В рейтинге
Не участвует
Откуда
Челябинск, Челябинская обл., Россия
Дата рождения
Зарегистрирован
Активность