vlkamov: Рембрандт. Автопортрет с широко открытыми глазами. (Default)
[personal profile] vlkamov
Это не прославленный свод законов шумерского царя Хаммурапи (Hammurabi Code), а код некогда популярной игры Hamurabi. Одна буковка m выпала из-за того, что до нашей эры имя файла состояло максимум из 8 букв.

Собственно код программы под катом. Захотелось посмотреть что это было, но перловой версии под руку как-то не попалось. Чаще всего выложены коды для Бейсика, видел джавовый, С и даже действующий Джаваскрипт - можно поиграть онлайн :-)
Перловку пришлось варить самому. Взял топор код на Бейсике и тупо-построчно заменил на соответствующие операторы Perl'а. Благо, что в Perl'е тоже есть оператор goto :-) Бейсиковые строчки я не удалял, а только закомментировал - можно сравнить при желании.

Все прелести "макаронного" программирования налицо. В давние-давние времена в книжном магазине попалась мне книжка про то, что программы должны быть похожи на моделируемые процессы. Я тогда не понял, что имелось в виду, но ознакомившись с этим листингом понял, с чем предлагали бороться авторы. Например, прямо посередение рутинного годового отчета в управляемом поселении случается эпидемия чумы - это действительно мало на что похоже.

#!/usr/bin/perl
#hamurabi.pl

#10 REM *** CONVERTED FROM THE ORIGINAL FOCAL PROGRAM AND MODIFIED
#20 REM *** FOR EDUSYSTEM 70 BY DAVID AHL, DIGITAL
#30 REM *** MODIFIED FOR 8K MICROSOFT BASIC BY PETER TURNBULL
#80 PRINT "TRY YOUR HAND AT GOVERNING ANCIENT SUMERIA"
#85 PRINT "SUCCESSFULLY FOR A 10-YR TERM OF OFFICE.":PRINT
#90 REM RANDOMIZE REMOVED

# режиссер дубляжа - vl.kamov

#95 D1=0:P1=0
$D1 = 0; $P1 = 0;

#110 Z=0:P=95:S=2800:H=3000:E=H-S
$Z = 0; $P=95; $S=2800; $H=3000; $E = $H - $S;

#120 Y=3:A=H/Y:I=5:Q=1
$Y = 3; $A = $H / $Y; $I=5; $Q=1;

#210 D=0
m210:
$D = 0;

#215 PRINT:PRINT:PRINT "HAMURABI: I BEG TO REPORT TO YOU,":Z=Z+1
m215:
print "\n\nХамураппи: прошу отчитаться.\n"; $Z = $Z+1;

#217 PRINT "IN YEAR"Z","D"PEOPLE STARVED,"I"CAME TO THE CITY."
print "В ", $Z, " году ", $D, " человек умерло от голода, ", $I," прибыли в город.\n";

#218 P=P+I
$P = $P + $I;

#227 IF Q>0 THEN 230
goto m230 if $Q>0 ;

#228 P=INT(P/2)
$P = int ($P / 2);

#229 PRINT "A HORRIBLE PLAGUE STRUCK! HALF THE PEOPLE DIED."
print "Ужасная чума ! Половина народу умерло.\n";

#230 PRINT "POPULATION IS NOW"P
m230:
print "Сейчас население составляет ", $P, " человек\n";

#232 PRINT "THE CITY NOW OWNS"A"ACRES."
print "Город владеет ", $A, " акрами.\n";

#235 PRINT "YOU HARVESTED"Y"BUSHELS PER ACRE."
print "Вы собрали ", $Y, " бушелей с акра.\n";

#250 PRINT "RATS ATE"E"BUSHELS."
print "Крысы съели ", $E, " бушелей.\n";

#260 PRINT "YOU NOW HAVE"S"BUSHELS IN STORE.":PRINT
print "Сейчас ", $S, " бушелей в амбаре.\n\n";

#270 IF Z=11 THEN 860
goto m860 if $Z==11;

#310 C=INT(10*RND(1)):Y=C+17
$C = int (10* rand()); $Y = $C + 17;

#312 PRINT "LAND IS TRADING AT"Y"BUSHELS PER ACRE."
print "Земля торгуется по ", $Y, " бушелей за акр.";

#320 PRINT "HOW MANY ACRES DO YOU WISH TO BUY";
m320:
print "Сколько акров вы намерены купить ? ";

#321 INPUT Q:IF Q<0 THEN 850
$Q = <STDIN>; goto m850 if $Q<0;

#322 IF Y*Q<=S THEN 330
goto m330 if $Y*$Q <= $S;

#323 GOSUB 710
m710();

#324 GOTO 320
goto m320;

#330 IF Q=0 THEN 340
m330:
goto m340 if $Q==0;

#331 A=A+Q:S=S-Y*Q:C=0
$A = $A + $Q; $S = $S - $Y*$Q; $C = 0;

#334 GOTO 400
goto m400;

#340 PRINT "HOW MANY ACRES DO YOU WISH TO SELL";
m340:
print "Сколько акров вы намерены продать ? ";

#341 INPUT Q:IF Q<0 THEN 850
$Q = <STDIN>; goto m850 if $Q<0;

#342 IF Q<A THEN 350
goto m350 if $Q < $A;

#343 GOSUB 720
m720();

#344 GOTO 340
goto m340;

#350 A=A-Q:S=S+Y*Q:C=0
m350:
$A = $A - $Q; $S = $S + $Y*$Q; $C = 0;

#400 PRINT
m400:
print "\n";

#410 PRINT "HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE";
m410:
print "Сколько бушелей вы намерены скормить вашим людям ?";

#411 INPUT Q
$Q=<STDIN>;

#412 IF Q<0 THEN 850
goto m850 if $Q < 0;

#418 REM *** TRYING TO USE MORE GRAIN THAN IN THE SILOS?
# попытка использовать больше зерна чем есть в хранилище

#420 IF Q<=S THEN 430
goto m430 if $Q <= $S;

#421 GOSUB 710
m710();

#422 GOTO 410
goto m410;

#430 S=S-Q:C=1:PRINT
m430:
$S = $S - $Q; $C = 1; print "\n";

#440 PRINT "HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED";
m440:
print "Сколько акров вы намерены засеять ?";

#441 INPUT D:IF D=0 THEN 511
$D = <STDIN>; goto m511 if $D == 0;

#442 IF D<0 THEN 850
goto m850 if $D < 0;

#444 REM *** TRYING TO PLANT MORE ACRES THAN YOU OWN?
# Пытаетесь засеять больше акров чем у вас есть

#445 IF D<=A THEN 450
goto m450 if $D <= $A;

#446 GOSUB 720
m720();

#447 GOTO 440
goto m440;

#449 REM *** ENOUGH GRAIN FOR SEED?
# хватит ли семян ?

#450 IF INT(D/2)<S THEN 455
m450:
goto m455 if int($D/2) < $S;

#452 GOSUB 710
m710();

#453 GOTO 440
goto m440;

#454 REM *** ENOUGH PEOPLE TO TEND THE CROPS?
# хватит ли людей ухаживать за урожаем ?

#455 IF D<10*P THEN 510
m455:
goto m510 if $D < 10*$P;

#460 PRINT "BUT YOU HAVE ONLY"P"PEOPLE TO TEND THE FIELDS. NOW THEN,"
print "Но у вас только ", $P, " человек чтобы обрабатывать поля. Итак, \n";

#470 GOTO 440
goto m440;

#510 S=S-INT(D/2)
m510:
$S = $S - int($D/2);

#511 GOSUB 800
m511:
m800();

#512 REM *** A BOUNTYFULL HARVEST!!
# обильный урожай !

#515 Y=C:H=D*Y:E=0
$Y = $C; $H = $D*$Y; $E=0;

#521 GOSUB 800
m800();

#522 IF INT(C/2)<>C/2 THEN 530
goto m530 if (int($C/2) != $C/2);

#523 REM *** THE RATS ARE RUNNING WILD!!
# крысы идут !

#525 E=INT(S/C)
$E = int($S/$C);

#530 S=S-E+H
m530:
$S = $S - $E + $H;

#531 GOSUB 800
m800();

#532 REM *** LET'S HAVE SOME BABIES
# деторождение

#533 I=INT(C*(20*A+S)/P/100+1)
$I = int($C*(20*$A + $S)/$P/100 + 1);

#539 REM *** HOW MANY PEOPLE HAD FULL TUMMIES?
# сколько людей накормлено ?

#540 C=INT(Q/20)
$C = int($Q / 20);

#541 REM *** HORRORS, A 15% CHANCE OF PLAGUE
# ужас, 15% вероятность чумы

#542 Q=INT(10*(2*RND(1)-.3))
$Q = int(10*(2*rand() - 0.3));

#550 IF P<C THEN 210
goto m210 if $P<$C;

#551 REM *** STARVE ENOUGH FOR IMPEACHMENT?
# голод достаточен для импичмента ?

#552 D=P-C:IF D>.45*P THEN 560
$D = $P - $C; goto m560 if $D > 0.45*$P;

#553 P1=((Z-1)*P1+D*100/P)/Z
$P1 = (($Z - 1)*$P1 + $D*100/$P)/$Z;

#555 P=C:D1=D1+D:GOTO 215
$P = $C; $D1 = $D1 + $D; goto m215;

m560:
#560 PRINT:PRINT "YOU STARVED"D"PEOPLE IN ONE YEAR!!!"
print "Вы уморили ", $D, " людей за год !!!\n";

#565 PRINT "DUE TO THIS EXTREME MISMANAGEMENT YOU HAVE NOT ONLY"
#566 PRINT "BEEN IMPEACHED AND THROWN OUT OF OFFICE BUT YOU HAVE"
#567 PRINT "ALSO BEEN DECLARED 'NATIONAL FINK' !!":GOTO 990
m565:
print "Из-за чрезвычайно плохого управления вы не только\nподвергнуты импичменту и выброшены из резиденции, но также\nвы объявлены \"Предателем нации\" !!"; goto m990;

#710 PRINT "HAMURABI: THINK AGAIN. YOU HAVE ONLY"
#711 PRINT S"BUSHELS OF GRAIN. NOW THEN,"
#712 RETURN

sub m710{
print "Хамурапи: думайте снова. У вас только \n", $S, " бушелей зерна. Итак, \n";
}

#720 PRINT "HAMURABI: THINK AGAIN. YOU OWN ONLY"A"ACRES. NOW THEN,"
#730 RETURN

sub m720{
print "Хамурапи: думайте снова. У вас только \n", $A, " акров земли. Итак, \n";
}

#800 C=INT(RND(1)*5)+1
#801 RETURN

sub m800{
$C = int(rand()*5) + 1;
}

#850 PRINT:PRINT "HAMURABI: I CANNOT DO WHAT YOU WISH."
#855 PRINT "GET YOURSELF ANOTHER STEWARD!!!!!"
m850:
print "\nХамурапи: я не могу сделать то, что вы хотите.\n";
print "Замените себя другим управляющим !!!!!";

#857 GOTO 990
goto m990;

#860 PRINT "IN YOUR 10-YEAR TERM OF OFFICE,"P1"PERCENT OF THE"
m860:
print "За время вашего 10 летнего пребывания на посту в среднем ", $P1, "процентов\n";

#862 PRINT "POPULATION STARVED PER YEAR ON AVERAGE, I.E., A TOTAL OF"
print "населения ежегодно умирали от голода, т.е. всего \n";

#865 PRINT D1"PEOPLE DIED!!":L=A/P
print $D1, " человек умерли !!\n"; $L = $A / $P;

#870 PRINT "YOU STARTED WITH 10 ACRES PER PERSON AND ENDED WITH"
print "Вы начали с 10 акров на человека, а закончили \n";

#875 PRINT L"ACRES PER PERSON.":PRINT
print $L; "акрами на человека.\n\n";

#880 IF P1>33 THEN 565
goto m565 if $P1 > 33;

#885 IF L<7 THEN 565
goto m565 if $L < 7;

#890 IF P1>10 THEN 940
goto m940 if $P1 > 10;

#892 IF L<9 THEN 940
goto m940 if $L < 9;

#895 IF P1>3 THEN 960
goto m960 if $P1 > 3;

#896 IF L<10 THEN 960
goto m960 if $L < 10;

#900 PRINT "A FANTASTIC PERFORMANCE!!! CHARLEMANGE, DISRAELI, AND"
#905 PRINT "JEFFERSON COMBINED COULD NOT HAVE DONE BETTER!":GOTO 990
print "Фантастический результат !!! Шарлемань, Дизраели и \nДжефферсон вместе не смогли бы сделать лучше ! \n";
goto m990;

#940 PRINT "YOUR HEAVY-HANDED PERFORMANCE SMACKS OF NERO AND IVAN IV."
#945 PRINT "THE PEOPLE (REMAINING) FIND YOU AN UNPLEASANT RULER, AND,"
#950 PRINT "FRANKLY, HATE YOUR GUTS!":GOTO 990
m940:
print "Ваша тяжелая рука припахивает Нероном и Иваном IV. \nВыжившие люди считают вас плохим правителем и ужасно ненавидят ваши потроха ! \n";
goto m990;

#960 PRINT "YOUR PERFORMANCE COULD HAVE BEEN SOMEWHAT BETTER, BUT"
#965 PRINT "REALLY WASN'T TOO BAD AT ALL. ";
m960:
print "Ваши достижения могли бы быть лучше, но \nдела не совсем плохи. \n";

#966 PRINT INT(P*.8*RND(1));"PEOPLE WOULD"
#970 PRINT "DEARLY LIKE TO SEE YOU ASSASSINATED BUT WE ALL HAVE OUR"
#975 PRINT "TRIVIAL PROBLEMS."
print int($P*0.8*rand()), " человек хотели бы видеть вас убитым, но это обычная проблема для нас.\n";

#990 PRINT:FOR N=1 TO 10:PRINT CHR$(7);:NEXT N
m990:
print "Биииииииииииип\n";

#995 PRINT "SO LONG FOR NOW.":PRINT
print "Пока.\n\n";

#999 END
exit;
#


Как всегда нашелся неисчерпаемый источник ресурсов, он же объект экспансии - земля.
В ходе тестирования у меня два раза подряд случилась чума, так что народу стало слишком мало, чтобы обрабатывать имеющуюся землю и совершенно непроизвольно подумал "А где бы прикупить рабов..."

Даже в полутора сотнях строк программного кода имени древнего шумерского царя нашлось место для обычного для англосаксов черного пиара:
940 PRINT "YOUR HEAVY-HANDED PERFORMANCE SMACKS OF NERO AND IVAN IV."
У британцев были примеры куда как ближе и роднее, не говоря уж о том, что "Васильевичем" Иван IV был прозван отнюдь не за великий голод.

К слову
смотрел британский фильм "Риск Шарпа".
Фишка фильма в том, что там главный злодей наркоторговец - граф Драгомиров. Типичная британская фамилия. Напоминаю, действие в 1818 году, Ост-Индийская кампания.

HTML сбойнул...

Date: 2011-07-05 08:05 am (UTC)
From: [identity profile] http://users.livejournal.com/alkor_/
#342 IF Q
[Error: Irreparable invalid markup ('<a [...] #411>') in entry. Owner must fix manually. Raw contents below.]


И дальше.

Re: HTML сбойнул...

Date: 2011-07-05 09:40 am (UTC)
From: [identity profile] vlkamov.livejournal.com
Поправил -

Date: 2011-07-05 09:12 am (UTC)
eldhenn: (Default)
From: [personal profile] eldhenn
А зачем было построчно переписывать с бейсика на перл, я не понял? Если на перл, то это должен быть однострочник из знаков препинания исключительно. Бейсика что ли не найти? QB45 вроде бы легко гуглится...

Date: 2011-07-05 09:56 am (UTC)
From: [identity profile] vlkamov.livejournal.com
Во-первых, установка ненужного в остальном бейсика плюс потери времени на пользование забытым языком в сумме составят больше, чем время затраченное на переписывание. Во время переписывания я еще и слегка переводил.

Теперь я могу поупражняться с перловым кодом. Для начала хочу повоевать с "макаронами", урезать количество goto-шек, дать переменным русские имена, то есть сделать код читабельным для непрограммиста. А потом поиграться алгоритмом.

Date: 2011-07-05 07:27 pm (UTC)
eldhenn: (Default)
From: [personal profile] eldhenn
Я не про алгоритм, а как раз про форму. Perl надо использовать на всю мощь, чтобы никто меньше чем за два часа не мог понять, что тут написано :)

Да, Бейсик вспоминается за 15 минут. Проверено.

Date: 2011-07-06 05:14 am (UTC)
From: [identity profile] ping-ving.livejournal.com
Русские имена - как раз отличный способ сделать код нечитаемым.
В именах - строго латиница!

Date: 2011-07-06 04:49 pm (UTC)
From: [identity profile] yarikas.livejournal.com
Помнится, код с "доработками" уместился у меня в калькулятор МК-52, в его 105 шагов программы.
"Переносил" тогда с ЕСок, только там ещё были злые соседи, которые иногда приходили повоевать... от них надо было отбиваться либо своими людьми (bad luck), или нанимать (80 бушелей за наёмника, как щас помню!) - вот войну тиснуть в 105 шагов программы не получилось.

http://yarikas.livejournal.com/54522.html
http://lurkmore.ru/Civilization - тоже где-то в тексте писал...

Date: 2011-07-07 04:58 am (UTC)
From: [identity profile] vlkamov.livejournal.com
А цели варьировали ?

Не понял вопрос

Date: 2011-07-07 06:07 am (UTC)
From: [identity profile] yarikas.livejournal.com
В вар-те Kingdom на ЕСке, с которого передирал, не было ограничения в годах правления - цель была продержаться, как можно дольше. То же было в проге на МК-52. Функции урожайности и прироста населения я не знал - подбирал самостоятельно (тогда ещё в "ТМ" печатали разные другие проги для программируемых калькуляторов - реверс-инжиниринг был не сложен ;)) по прогам а-ля "обслуживание посетителей"...
Кроме чумы была ещё холера (меньше умирало, но чаще случалась); кроме крыс - саранча (уничтожала посевы).

Re: Не понял вопрос

Date: 2011-07-07 06:47 am (UTC)
From: [identity profile] vlkamov.livejournal.com
Вот я и говорю, ненужное усложнение моделей затмевает главное. Самый главный вопрос, а как замаскирован, что даже профессинальные моделисты "не понимают" !

Видимо, не случайно в википедийных статья о кибернетике и теории управления цель даже не упоминается. Только в медицинском словаре я нашел упоминание, что цель - такое же базовое понятие в теории управления как информация.

Неплохо, да ?! Два базовых понятия и одно из них систематически замалчивается.

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

Кстати, погоня менеджмента за сиюминутной капитализацией - именно оно и есть. Потому что цель (критерии) неверные.

From: [identity profile] yarikas.livejournal.com
Откройте "Синергетика и информация" Чернавского (в сети точно есть первые 2 главы) - там указывается, что ценность информации определяется целью - это основа динамической теории информации.

Целью для меня было, как я указал "продержаться подольше" (принцип max T), т.е. в границах некоего коридора параметров (см. также в работах Шамиса "Пути моделирования мышления (http://narod.ru/disk/17585321001/shamis.-.puti.modelirovania.mishlenia.2006.djvu.html)" - тоже 1ая или 2ая глава).

Чуму и холеру уж не помню как накладывал (по какому-то распределению=функции), но это дало понимание катастрофических событий: одно довольно редкая, но крупная "флуктуация", второе - более частая и мелкая.

Цель в описанном Вами вар-те (добиться знаковых рез-тов в огранич. срок - ср. задачу "управляющих"=менеджеров - работа по показателям - написал, после чего дочитал Ваш коммент :)) несколько отличается, не находите? Вариантов игры было много - надо отдельно разбираться, кто и где вносил "корректировку целей" (так у Кропоткина описана история с трактовкой теории Даривина Гексли в 1888 году в Оксфорде - занимательная история рождения мифа о "побеждает сильнейший"). В оригинале хотелось бы взглянуть на работу Рашевски - будя случится возможность достать - поделюсь.

Date: 2011-07-07 07:24 am (UTC)
From: [identity profile] vlkamov.livejournal.com
> Откройте "Синергетика и информация" Чернавского

Это как если бы в школьном курсе геометрии не было понятия прямой и желающим рекомендовали бы найти работы Декарта.

> ценность информации определяется целью
Ценность всего определяется целью :-)

"Дьявол в деталях"

Date: 2011-07-07 07:36 am (UTC)
From: [identity profile] yarikas.livejournal.com
Ну, меня другое поразило в результате рефлексии над цивой, что там "человеческий фактор" (ресурс) в модели войн вообще не учитывается (строй юнитов, сколько можно удержать при данном производстве! откуда набор - никого не волнует!)! В Kingdom же приход "друзей" из-вне наносил существенную "пользу" как бюджету (зерно, территория), так и населению.

Отсюда интересный анализ по роли вооружений, войн и т.п. в развитии цивилизации вообще и стабильности существующих образований в частности...

Date: 2011-07-07 08:57 am (UTC)
From: [identity profile] vlkamov.livejournal.com
> Отсюда интересный анализ

Как насчет анализируемого кода ?

Опять не понял вопрос

Date: 2011-07-07 09:20 am (UTC)
From: [identity profile] yarikas.livejournal.com
Вы слишком лаконичны, а я не телепат :)
Вопрос про Kingdom? Кода у меня не было - воспроизводил во наблюдаемым :) Войну смоделировать не удалось. Kingdom на iPhone интересен в плане взаимодействия игроков (войны/перекупка земель). Если бы я писал, то опирался бы на градиенты (прирост земли по отн. к используемой, т.е. к числу населения и т.п.) и богатство государства = возможность нанять по 80 бушелей за человека "миротворческие силы". Т.е. большие и плохо охраняемые (мало людей, мало зерна для найма) территории чаще других бы подвергались нападениям.

Могу поискать в архивах, но код на бейсике калькулятора, боюсь, уже не восстановим: я заглядывал в ППЗУ - там уже мусор - столько память та по времени не держала - это не совр. флешки или винты :(

Re: Опять не понял вопрос

Date: 2011-07-07 09:26 am (UTC)
From: [identity profile] vlkamov.livejournal.com
> Вы слишком лаконичны, а я не телепат :)

Код покажите. Прямую ссылку на листинг.

Re: Опять не понял вопрос

Date: 2011-07-07 09:27 am (UTC)
From: [identity profile] vlkamov.livejournal.com
...

анализируемый код, не вообще сорцы FreeCiv

Re: Опять не понял вопрос

Date: 2011-07-07 09:52 am (UTC)
From: [identity profile] yarikas.livejournal.com
Там в коде вообще каша, когда полез разбираться: до сих пор никто не может переписать именно по этой причине (пока работает - не трогаем). Но тут речь-то про простую возможность "рожать" юниты вне зависимости от населения города (мужской его половины). Кол-во ограничено лишь shields - они расходуются на поддержку юнита. С settlers было адекватней (-1 в население города).

И как этот факт изменился от 1-ой цивы до текущей? Никак!

В то же время, в истории мы читаем: пришло одно племя - мужчин другого порезало, а женщины рожают уже от пришедших. Или как сейчас - все едут искать богатых женихов... куда?

PS: Напомнило анекдот про программеров: "в коде ошибка?" - "где?" - "в ДНК!"

Re: Опять не понял вопрос

Date: 2011-07-07 09:56 am (UTC)
From: [identity profile] vlkamov.livejournal.com
То есть предмет анализа вы показать не можете.

Re: Опять не понял вопрос

Date: 2011-07-07 10:36 am (UTC)
From: [identity profile] yarikas.livejournal.com
Запомню Ваш вопрос, когда вернусь к коду freeciv, обязательно дам линк!
Сейчас, извините. Если хочется проверить (в смысле, не код поглядеть, в котором мало что понятно), то дост. запустить и поглядеть, какие есть ограничения по этому параметру (возможность строить юниты).

Re: Опять не понял вопрос

Date: 2011-07-07 03:01 pm (UTC)
From: [identity profile] yarikas.livejournal.com
>> Отсюда интересный анализ по роли вооружений, войн и т.п. в развитии цивилизации вообще и стабильности существующих образований в частности...

> Как насчет анализируемого кода ?
> анализируемый код, не вообще сорцы FreeCiv
> То есть предмет анализа вы показать не можете.

Интересный разговор, учитывая, что в моём предложении про анализ кода не было ни слова.
К сожалению, природа свои "коды" не раскрывает пока - приходится вести реверс-инжиниринг по наблюдаемым, учитывая ещё и проблему наблюдателя :/

Речь шла об анализе развития существоваших цивилизаций (дада, со всеми проблемами археологии и работы с источниками) - человеческой цивилизации (как она видится от неолита) вообще, а не игры civilization. Хотя история freeciv в этом плане небезынтересна: написал там логику, как я понял из форумов, один человек и весьма непонятно, если заглянуть в сорсы, после чего исчез :)
Чем не модель существующего мира? Создатель забыл про нас ;) Мир ждёт нового героя, способного переписать всё внове на основе более адекватной модели :)

Из истории вопроса

Date: 2011-07-07 03:09 pm (UTC)
From: [identity profile] yarikas.livejournal.com
На самом деле, удивила меня подход Сivilization к военным юнитам значительно ранее - сравнивал тогда, правда, не с столько с kingdom, сколь с Centurio - уж там-то легионеров нельзя было набирать бесконечно много. Где-то тогда же читал Тарле "Наполеон", да. Сейчас с интересом перечитал...

Re: Опять не понял вопрос

Date: 2011-07-09 03:20 pm (UTC)
From: [identity profile] yarikas.livejournal.com
По поводу freeciv пару линков на обсуждения вопроса роли демографии в войне: 1 (http://forum.freeciv.org/viewtopic.php?p=26250) и 2 (http://comments.gmane.org/gmane.games.freeciv.devel/78103) (ждём версию 2.4) - не совсем то, т.к. речь должна идти о скорости воспроизводства, но уж хоть что-то... Обращаю внимание на дату своего поста и даты указанных обсуждений.

Хочу обратить внимание, что рассматриваемое изменение правил (rulesets) задевает AI (о котором была речь, что "всю систему менять надо (http://answerpot.com/showthread.php?330999-AI+Documentation+%26+Tips)"), так что тут простого решения не будет :/

In freeciv there are three rules levels:
  • hardcoded rules
  • rules from the ruleset
  • rules from server options.
(http://freeciv.wikia.com/wiki/Game_Manual)

PS: Это лишь результат беглого поиска в гугле новых наработок. Со времени написания поста у меня остался список замечаний к набору правил и работе AI, достойный отдельного поста: была идея сетевой стратегии по типу MMOG.

Date: 2011-07-07 07:14 am (UTC)
From: [identity profile] vlkamov.livejournal.com
> (повышение площади на душу населения)

строго говоря - удержание не ниже 10 акр/чел

Date: 2011-08-05 07:23 pm (UTC)
From: [identity profile] yarikas.livejournal.com
> print "Фантастический результат !!! Шарлемань, Дизраели и \nДжефферсон вместе не смогли бы сделать лучше ! \n";

CHARLEMANGE = Карл Великий, как я понимаю ;)

Date: 2011-08-07 03:45 pm (UTC)

Profile

vlkamov: Рембрандт. Автопортрет с широко открытыми глазами. (Default)
vlkamov

June 2025

S M T W T F S
1 2 3 4 5 67
8 9 10 11 1213 14
15 161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 17th, 2025 07:14 pm
Powered by Dreamwidth Studios