Для конвертации в HTML/JS/Canvas на Хакатоне была выбрана игра, написанная под ДОС.
Он имеет две особенности
- С точки зрения пользователя:
Можно играть вчетвером (или меньшим количеством) за одной клавиатурой. Причем игроки зарабатывают очки обычным образом, и тратят их в магазине, покупая разнобразные товары и услуги, которые затем в процессе дальнейшей игры по отдельной клавише запускаются в действие. Услуги эти разные: замедлить себе скорость или повысить скорость товарищу, купить себе фигуру "палка" или инвертировать левое Г на правое, поменять на время товарищу левую и правую кнопки, чтобы помучался итд. - С точки зрения архитектуры:
Программа написана не в едином цикле, как все нормальные игры, а с использованием кооперативной многозадачности. Например, на каждый "стакан" (штука, куда падают фигуры) заводится отдельный цикл (while true), в котором опрашиваются клавиши именно того игрока к которому стакан принадлежит. Появляющиеся в процессе игры персональные для игрока меню (магазин) тоже ничего ни о чем не знают, крутятся себе в цикле "пока пользователь не закроет". Разлетающаяся в куски фигура (есть такой пункт в магазине) разлетается несколько кадров, а разлет реализуется маленьким тредом (потоком), покуда основной поток остановлен.
В самой игре работает около 20 потоков одновременно в пике. Каждый имеет свой стек, самый настоящий, и всё управление потоками написано на ассемблере. После того, как супервизор был написан, написание игры превратилось в сплошное удовольствие. Получилось, как будто ерланг 8), с тем отличием, что я вставлял вызовы функции PleaseYield во все циклы, которые могли долго работать, имея в виду, что каждый поток от одного PleaseYield до следующего PleaseYield отработает 1 раз в кадр, потому что в одном из потоков дожидалось начала кадра, так было задумано.
Недостатком игры является несбалансированность цен, и криволинейное увеличение скорости игры, т.к. это не было для меня особо интересным тогда.
Игра в то время обитала в Харьковском FidoNet, а может и дальше, и я не знаю о ее судьбе. Наверное в нее игрывало несколько людей вне ХПИ, не знаю. Тогда не было ни твиттера, ни распространения email.
Тетрис был написан, поигран, и жил на дискетах в шкафу, откуда я его и спас с появлением интернета, и тех пор он болтался за мной в моем архиве. Как и всякий умственно усталый человек, я жалел его выбросить и с теплотой вспоминал о днях далекой юности.
Картинки или читать дальше:
1. About page:
2. Final scroller (во время выхода в ДОС):
3. Главное меню:
5. Турбо паскаль, вид на Task Manager:
7. Загрузка игры a-la Doom.
No comments:
Post a Comment