8 заметок с тегом

игра

«Гопник» возвращается

Скомпилированный «ФриПаскалем» примитивный клон игры «Гопник», запущенный на макОСи

Три вещи наполняют душу всегда новым и все более сильным удивлением и благоговением — это звездное небо надо мной, моральный закон во мне и моя необъяснимая любовь к двум досовским играм серии «Гопник». Обе части представляют собой текстовый квест, в обеих частях центральный персонаж — пацанчик, идущий к успеху.

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

Но с годами в выдаче «Гугла» ничего не менялось, пока сегодня в результатах не попался клон игры «Гопник», написанный в 2014 году на примитивнейшем Паскале «коллективом GalAndGames».

К сожалению уже по исходнику было видно, что это — не более, чем чья-то проба пера, к которой автор или авторы полностью потеряли интерес. Но для интереса скачал «ФриПаскаль», попробовал скомпилировать. С элементарными правками получилось — у трёх переменных надо было указать другой тип.

Сюжет явно взят из первой части оригинальной серии — пацан, отчисленный лично ректором, жаждет мести. Игра начинается с момента отчисления и заканчивается битвой с ректором. В начале игры можно выбрать собственную специализацию — «гопник», «вор» или «маньяк», но этот выбор ни на что не влияет.

Увлекательнейший процесс битвы с ректором, я победил и немудрено — в игру вставлены читы

В игре есть несколько от балды выставленных характеристик, деньги («чирики»), магазин, где можно купить оружие и пиво (аналог аптечек), а так же враги с которыми предстоит драться — «коп», «маньяк», «вор», «гопник», ну и босс — «ректор».

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

17 ноября   игра

Крестики-нолики на HTML CSS и прокрастинация

Крестики-нолики (38.95КиБ)

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

Я как-то рассказывал в интервью для «5 шотов», что у меня есть способ борьбы с прокрастинацией — я каждый день выделяю по полчаса на самое сложное, неприятное, то, чем заниматься совсем не хочется. Это помогает.

У меня с моими «Крестиками-ноликами» на HTML и CSS такое произошло — не хотелось заканчивать, искать ошибки и так далее. Вроде как проект-то уже сделан, проехали, кому-он-нужен-зачем-баги-править. Но какая-то неудовлетволённость осталась, хотелось доделать. В итоге я около недели по полчаса тщательно искал ошибку и вносил улучшения.

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

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

Epic War 4

EpicWar4 (51.74КиБ)

Подсел на флеш-игрушку Epic War 4.

Но медленно наращивать мощность очень уж скучно, сделал патч, который увеличивает количество денег до двух миллионов, применив его 2-3 раза, можно купить всё что только есть в игре.

Для того, чтобы применить патч, найдите SOL-файл игры (где такие файлы обычно лежат в разных операционных системах можно посмотреть в «Википедии») — там содержится её сохранённое состояние. И укажите программе при запуске полный путь и имя этого файла.

Программа написана сразу на трёх языках — PowerShell (для Windows) и PHP с Python (для всех), запускайте любым из этих трёх интерпретаторов:

#!/usr/bin/env python
########################################################
# Written by Evgeny Stepanischev (//bolknote.ru)  #
# Epic War 4 money patch (for PowerShell, Python, PHP)  #
#<?/*
"""*/
echo str_repeat('#', 55), chr(10);

if ($_SERVER['argc'] > 1) {
    
    $fp = @fopen($_SERVER['argv'][1], 'r+b');
    if ($fp) {
        $content = fread($fp, 655350);
        $content = preg_replace('/(?<=stat_money).{5}/s', pack('H*', '0480C584B4'), $content);

        rewind($fp);
        fwrite($fp, $content);
        echo 'Done.';
    } else {
        echo 'Invalid file.';
    } 

    fclose($fp);
} else {
    echo 'Usage: ', $_SERVER['argv'][0], '<filename>';
}

__halt_compiler();

""" + """ " | out-null

If ($args) {
    [char[]] $binary = Get-Content -encoding byte $args[0]

    $binary = [string]::join('', $binary) -replace`
              'stat_money.{5}', `
              "stat_money$([char]0x4)$([char]0x80)$([char]0xC5)$([char]0x84)$([char]0xB4)"

    Set-Content $args[0] ([byte[]][char[]] $binary) -encoding byte

    "Done."

} Else {
    "Usage: " + $MyInvocation.MyCommand.Name +" <filename>"
}

"""
from sys import argv
from os.path import basename

if len(argv) > 1:
    name = 'stat_money'

    f = open(argv[1], 'r+b')
    binary = bytearray(f.read())

    try:
        index = binary.index(name) + 1 + len(name)
        binary[index:index+4] = '\x80\xc5\x84\xb4'

        f.seek(0)
        f.write(binary)
        f.close()
        print('Done.')
    except:
        print('Invalid file.')
else:
    print('Usage: %s <filename>' % basename(argv[0]))

# " | out-null

python patch.ps1 DEF4_SAVE.sol или powershell -Command .\patch.ps1 DEF4_SAVE.sol или php patch.ps1 DEF4_SAVE.sol

Жаль расцветить три языка в одном файле можно только вручную.

DEFENDER в favicon

DEFENDER (2.86КиБ)

Трюк с подменой favicon используется в вебе довольно редко, впрочем, этому есть причина: он не работает в Internet Explorer (даже в 9-й версии). Я его использовал в первый раз года четыре назад — в таск-менеджере, который мы писали для внутренних целей в фирме L., он использовался для того, чтобы сигнализировать, что на вкладке таск-менеджера есть срочная задача.

Но есть способы использовать его более впечатляющим (хотя и более бесполезным) способом — дать возможность играть внутри favicon в игры. Существуют несколько таких игр, одна из них, например — DEFENDER.

Работает в «Опере» 9.2+ и Firefox 2.x (в FF 3 проблемы). Под WebKit работает выборочно, новые версии (где реализован метод CANVAS API «toDataURL()») игру поддерживают, правда, в шестом «Хромиуме» тормозит безбожно.

Управление простое: «N» — новая игра и стрелять, «WASD» (или клавиши курсора) — управление корабликом, «Enter» — чтобы выбрать куда вывести игру (на страницу или favicon).

P.S. На сайте с этой игрой есть ещё несколько таких игр.

2010   игра

«Гопник» и «Гопник-2»

На «PyCamp Kyiv», на тех немногочисленных докладах, которые мне были не интересны, играл в текстовые игры «Гопник» и «Гопник-2». Наверное многим они известны. Если нет,то поиграйте, забавно. Так как в интернетах я с огромным трудом нашёл вторую часть, то попробую наводнить эту заметку ключевыми словами.

Действие первого «Гопника» (автор — V.P, июнь 2003-го, язык — Turbo Pascal) происходит в Новосибирске, сюжет — вы вылетаете из университета и попадаете на улицу, у есть вас выбор какую «специальность» освоить — пацан, отморозок, гопник или вор. У каждой «профессии» свои плюсы (хотя, кажется, проходить проще всего вором): у «пацана» есть девушка и его сразу пускают в клуб, на «отморозоке» всё заживает, как на собаке, «гопник» свой в притоне, а «вор» на короткой ноге с барыгами и, как следует из названия, хорошо умеет воровать.

Вам придётся (в текстовом режиме) шататься по окрестностям, воровать, покупать и продавать, ходит в качалку и клуб и так далее, а в конце — разобраться с ректором.

Доступны несколько «локаций» (некоторые открываются не сразу, а после каких-то действий): «базар» (тут можно купить шмотки и еду, а так же воровать кошельки), «больница» (тут поправляют здоровье и лечат переломы), «подруга» (поправляет здоровье), «притон» (тут тусуются пацаны, которые смогут за тебя врубится, если что), «клуб» (можно играть на деньги), «качалка» (улучшение бойцовских навыков) и «барыги» (это «чёрный рынок», им можно продать свой хлам или купить полезного).

В течение игры нужно не забывать прокачивать характеристики: силу (увеличивает урон, даёт больше здоровья), ловкость (увеличивает шансы попасть по противнику), живучесть (так же увеливичает здоровье) и удачу (чем больше удача, тем успешнее воруешь и реже влипаешь в различные неприятности).

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

Гопник (30.01КиБ)

Сюжет второй части «Гопника», «Гопник-2 „Покорение культурной столицы“» (автор другой — d-maxx, из Сургута, ≈2005-й год, использован Turbo C++ 3.00): вы из Новосибирска отправляетесь в Санкт-Петербург поступать в университет, вам это с трудом удаётся, но через какое-то время вас выгоняют из общаги на улицу за постоянные пьянки и нарушение общественного порядки.

На улице надо выбирать, кем вы будете: «потсан» (есть девушка), «отморозок» (пускают качалку на Петроградской), «гопник» (разводит лохов на деньги) и «нефор» (бесплатно проходит в клуб на Сенной).

Игра несколько отличается от первой части, но самые большие отличия — есть метро, на котором можно ездить в другие районы города, а так же возможность сохраняться и загружаться. Кстати, сохраняться можно только 60 раз, небольшой намёк — счётчик расположен в 68-м (считая с нуля) байте файла сохранённой игры.

Впрочем, вот вам небольшая строка, которая работает в Windows NT/2000/XP/Vista, которая установит счётчик в значение 255:

CMD /C "(ECHO e144 ff && ECHO w && ECHO q) | DEBUG GOP2_1.SAV > nul"

Для Windows 7, из которой, оказывается, удалили утилиту DEBUG, я команды написал на PowerShell (в каталоге, где расположен файл сохранения нужно запустить powershell и выполнить следующие команды):

$var=Get-Content -Encoding Byte gop2_1.sav
[byte[]]($var[0..67] + 255 + $var[69..134]) | Set-Content gop2_1.sav -Encoding Byte

Как всегда, в случае с PowerShell, расскажу что здесь происходит в этой небольшой програмке.

Файл читается в переменную $var, читается побайтово как массив чисел. Далее я формирую массив из элеметов с нуля до 67, значения 255 и элементов с 69 до 134-го.

Получившийся массив разношерстных элементов (добавленное мною число «255» имеет тип Int32, остальные — byte) преобразуется к типу «массив байт» и записывается в тот же файл. Set-Content преобразует эти данные в бинарный вид, он знает как их трактовать, так как я явно задал это в параметре.

Так как мне хотелось продемонстрировать как происходит добавление элемента к массиву, преобразование типа массива и передача его по конвееру, я не стал заменять значение одного элемента, что было бы проще и нагляднее.

2010   игра

Verbatim Game

Verbatim Moster (32.04КиБ)

У Экслера подсмотрел игрушку «全日本バーベイタム選手権» («Японский чемпионат Verbatim») — из флешек составляется монстр, которым потом можно драться с другими монстрами. От каждого боя достаётся немного гигабайт, увеличивается рост и улучшаются различные характеристики: мощность, оборона, скорость и живучесть. Скорость после 35 у меня больше так и не выросла. Если вам удаётся победить большую часть своих соперников, можно попробовать победить боссов — The IQ, The Captain, The Tank, The Queen и The Verbatim.

Характеристики прокачитаются довольно быстро, так что и на монстров можно идти где-то уже через полчаса. На скриншоте я как раз победил самого сильного босса — The Verbatim (справа).

Обратите внимание, что ваш монстр, конечно, дерётся сам, но есть три кнопки, которые вы можете, по одному разу, нажать в любой момент боя — «кулак» (удар гигантской флешкой), «плюс с ключом» (добавить себе немного энергии) и «ракета» (выпустить в соперника флешку-ракету). Очевидно, что есть удачные моменты, когда кнопки можно нажать и неудачные. Например, если противник подпрыгнул и приземляется, лучше ударить его гигантской флешкой, а когда он пытается вас достать своей флешкой — выпустить ракету, ну и так далее.

P.S. Моего монстра зовут HIW.

2010   игра

The Sims2

The Sims 2 Mobile (38.97КиБ)

Sims2, похоже, уже всюду запускается. Для PSP тоже есть какая-то версия, я даже пытался в неё играть. Теперь вот есть «The Sims2 Mobile», написана в виде мидлета, т. е. будет запускаться на любом телефоне, где поддерживается Java. Мне кажется, что так играть — удовольствие сомнительное, для маньяков, впрочем, я на Siemens S55 книжки читал, а экранчик у него, по нынешним временам, смешной.

Управление простое: 4 и 6 — выбор объекта, 2 и 8 — перемещение по меню, правая функциональная клавиша — выбор или использование объекта, левая — открыть виртуальный мобильник. Так же работает джойстик (на тех моделях, где он есть).

2007   mobile   sims2   игра

.kkrieger

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

За столь скромный размер приходится платить — игра требует Pentium III (или Athlon) 1.5GHz или быстрее, 512 мегабайт памяти (которую занимает целиком), GeForce4Ti (или лучше) или Radeon8500 (или лучше).

Вся графика, использованная в игре генерируется в процессе загрузки, которая даже на Athlon 64 3GHz занимает весьма существенное время — несколько минут.

kkrieger (48.46КиБ)
2005   игра