четверг, июня 12, 2008

Первые отчёты

Запущена новая версия моего сайта http://oreolek.net.ru.
PerlBlog себя абсолютно дискредитировал,потому что выяснилось,что он теряет сообщения.Поэтому мне придётся переписывать блог заново...пока буду писать сюда.
Первые отзывы о сайте очень,очень благодарные.Постоянно на мой почтовый ящик приходят письма "Это круто!","Хочу еще!" и "Почему так мало?".Логи команд говорят о том,что все читатели разделились на две части - которые не смогли пройти в гостиную и те,которым оказалось мало.:-)
Пока что я занят пропатчиванием сайта (дыры в версии 1.1 закрыты,но ещё не работают блог и перевод регистра команд).Так как еще идёт сессия,то версия 2.0 выйдет не раньше июля,я думаю.
Пока что - отрывки из логов команд.То,что вводили пользователи.
  • посмотреть на себя
  • Лук
  • Бык
  • открыть мозг
  • рассмотреть внутренности
  • ват зе фак? (стартовая страница)
  • делать ноги
  • спать
  • спать дальше
  • поджечь шкаф
  • пнуть шкаф головой
  • пнуть шкаф ногой
  • пнуть шкаф конечностью
  • пнуть стену
  • поковыряться в носу
  • спать
  • сесть
  • умереть
  • подумать

вторник, июня 03, 2008

Мой сайт

Вскоре на http://oreolek.net.ru будет обновление.
Готовится новая,третья версия сайта.1
Она вся выполнена в стиле текстового квеста.Управление с помощью ввода команд.
Блог также переезжает туда.Текстовое управление,к счастью,на него не распространится.
Движок исполняется на Perl,блог построен на модифицированном и исправленном мною PerlBlog.
В моих планах сначала построить рабочий сайт,а затем уже расширять его,поэтому одна надпись "В разработке" всё-таки еще осталась.
В настоящее время идёт прилаживание блога к сайту и оформление.


1 Вторая версия так и не вышла в свет по техническим причинам.

понедельник, марта 24, 2008

Новости игроделания

Только что скомпилил и запустил аркадный бой.
Такая дрянь...А ведь я его еще не доделал!
Когда-то,я основывал его на модели D&D боёвок.Даже тогда это было неприглядно.Сейчас же я понял всю кошмарность подобного подхода.
Привожу,что оно мне выдало,когда я ее запустил:

Начнем битву.
Меч скользит по броне противника.
Меч противника скользит по вашей броне.
Меч скользит по броне противника.
Противник вонзает свой меч вам в живот..
Вы видите противника.Но медлите.
Меч противника скользит по вашей броне.
Вы видите противника.Но медлите.
Меч противника лежит у ваших ног.В лучах солнца вы поднимаетесь над трупом.Вы победили.Игра окончена.
Press any key to continue

Полный тупняк.Конечно,генератор случайных чисел мог бы быть и получше,но всё же тупняк происходящего ясен.Даже если я введу user interaction...все равно.

суббота, марта 22, 2008

Судьба "Понедельника"

Сегодня утром я решил отказаться от написания продолжения квеста "Понедельник".
Я делаю его в течение полутора лет.Полтора года я не могу написать нормальный сценарий "Понедельник.Эпизод 2".
Сценарий пережил бесконечное количество правок.Квест был почти написан,но я перечеркнул всё и переписал заново.Сценарий был слишком туп.
Уже полтора года я пытаюсь написать нормальный и интересный сценарий.Полтора Года.Ни на шаг не продвинулся.
Технические проблемы теперь,по-видимому,уже почти решены.Но сценария нет.
Я официально объявляю,что я больше не занимаюсь "Понедельником-2".Тем не менее,в моих планах выпустить несколько эпизодов,которые,хотя и были написаны специально для игры,достаточно самостоятельны.Первым будет аркадный бой...остальные,может быть,я включу в свои другие квесты.Я отказался от одного квеста,но не собираюсь бросать всё - это будет означать пустую трату полутора лет.
А.Яковлев.

понедельник, марта 17, 2008

Горячая линия: заповеди программиста

Вот мои 10 правил.Им я следую неукоснительно в любой своей программе.
В ответ на некоторые нападки в мою сторону я решил сформулировать и опубликовать их здесь.
Надеюсь,меня поймут и мне найдется поддержка.
1. Чем труднее программисту,тем легче пользователю.И наоборот.

Чем больше труда вкладывает программист в программу,тем удобнее ею пользоваться.Так,если писать програмы на Java - это удобно для программиста.Пользователь же должен сначала скачать JRE последней версии,затем - саму программу (а java-бинарники довольно увесисты).Потом эта программа будет много занимать в памяти и на диске.Аналогично, если писать программы на GTK+ - это будет кошмаром для пользователя Linux,если у него старая версия библиотеки и нет подключения к Интернет;в Windows это тоже не будет идеалом.Если писать программы на Ассемблере - они будут быстры,малы и мощны.Впрочем,я всегда выбираю "золотую середину".
Это же правило можно прочитать и как "лучше продумать всё заранее,чем исправлять потом".Это правило по-своему универсально.
2. Каждая программа должна занимать не более 1.44 Мб места на диске

По статистике,самый используемый в России способ соединения с Интернетом - это диалап.На втором месте - GPRS.Люди,которые сидят через модем или сотовый телефон,не будут скачивать "увесистую" программу.Поэтому вторым правилом для меня всегда был размер программы.В качестве точной границы я взял 1.44 Мб - этот размер знаком многим.Впрочем,даже эта рамка очень высока.
3. Программа должна работать на максимально возможном количестве платформ

Это - основное правило кроссплатформенности.Программа,написанная для одного компьютера,не нужна никому.Пользователь не должен иметь проблем с запуском программы из-за того,что он поставил не ту систему.Можно решать эту проблему по-разному: не использовать платформо-зависимые решения (что снижает оптимизацию,но повышает универсальность),делать порты на другие системы (что повышает оптимизацию,но занимает много времени)...Можно также считать,что,если есть Wine,то нет необходимости писать программы для Linux...Кстати,отсюда идет следующее правило.
4. Никогда не использовать сторонние библиотеки,не поняв досконально их устройства

Каждая сторонняя библиотека - это дополнительные зависимости.Она приносит в программу свои баги,она снижает кроссплатформенность и переносимость.Принимая в свою программу стороннее звено,вы наследуете все его баги,зависимости и оптимизации (чаще - их отсутствие).Часто проще написать функцию самому,чем подключать ее откуда-либо.Программы с 20+ зависимостями - это пример ужасного программмирования,когда не программа пишется для пользователя,а пользователь должен настраивать всю систему для одной программы.Этим грешит подавляющее большинство программ для Linux,кстати.Мой лимит для подключения библиотек - 1-2.Часто я не подключаю чьи-то библиотеки в чистом виде,а урезаю и перерабатываю их (сохраняя копирайты,конечно),удаляя все ненужные мне функции.Минимализм - значит,минимализм во всём.
5. "Никому не требуется памяти больше 1 Мб"

Фраза знаменитого Б.Г.,немного в извращенном виде,прекрасно иллюстрирует это правило.Минимизация использования памяти - вот как можно это назвать.Опять же,пути решения абсолютно различны.Но можно точно сказать,что все интерпретируемые языки справляются с этой задачей плохо a priori,что надо всегда иметь в виду.
У меня несколько компьютеров.На том,на котором я работаю ежедневно в данный момент,стоит 512 Мб памяти.На том,на котором я работал два месяца назад,стояло 16 Мб памяти.Стандартный блокнот Windows XP занимает в памяти 2 256 Кб.Минимальный объем памяти для запуска Windows XP - 64 Мб.Теперь представьте,что 3,44% всей памяти компьютера уходит на БЛОКНОТ!!!Мне даже не хочется это комментировать.
6.Неважно,какое сейчас железо считается современным.

Я часто слышу высказывания вроде "Сейчас на каждом компе стоит 512 Мб памяти,крутые процессоры под 4 гигагерца и жесткие диски на 40 гигов".Мне становится тошно.Никакое современное железо не может служить оправданием корявому программисту.Опять же,подобные цитаты часто используют как контраргумент правилу 1.Один из моих компьютеров был куплен в 1997м году.На нем стоит Celeron 600 и 64 Мб оперативной памяти.Я не собираюсь проводить его апгрейд.Я не собираюсь проводить апгрейд компьютера,чтобы на нем запускалась новая версия того же Блокнота.Я понимаю,что новые возможности техники хороши и нрех ими не пользоваться,выжимая всё из системы.Но я не собираюсь отдавать всю вычислительную мощность моих компов на торрент-клиент или интернет-браузер.Современное железо нужно только играм и программам для обработки видео.Даже обработка аудио уже не требует максимально мощных компов.
7. Украшения не являются обязательными.

Программа может быть лучше другой,если она хорошо выглядит.Но определяющим значением всегда останется функциональность.Я опять же не собираюсь ставить на компьютер красивую,но медленную программу - я буду довольствоваться псевдографической быстротой.Более того - украшения украшениям рознь.Даже в псевдографике возможно создать шедевр.Когда я увидел Doom Roguelike и Cheops,я влюбился в эти игры.Хотя по современным меркам их графика даже графикой не называется (к Cheops это относится в полной мере).Красота не должна мешать работоспособности.Украшения не являются обязательными.На то они и украшения.
8. Не стоит перекладывать на автоматику то,что можно сделать самому.

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

Я часто наталкиваюсь на нападки против каких-то языков программирования.В частности,Сишники очень не любят Дельфишников,называют Дельфи "детским языком","языком для учёбы".PHPшники не так рьяно,но тоже достаточно систематично нападают на сторонников Perl.Наконец,у многих вызывает одинаковое ощущение словосочетание "Visual Basic".:-) Это не очень верно.Выбор языка зависит только от программиста.Можно сделать на perl программу лучше,чем на Ассемблере.Можно сделать на Дельфи программу лучше,чем на Си.Всё зависит от мастерства программиста.
10. Всё,что сделано,может быть взломано.

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

За сим кланяюсь.
Ваш
Oreolek.

воскресенье, марта 02, 2008

Смешные приколы из D&D

Решил вспомнить то смешное,что было у меня или мне рассказывали в D&D:

Надо было пересечь реку.Моста нет.течение сильное.
Плот делать не хочется.
Что сделали.Общей Силой пригнули к земле ель.Дварф-файтер взобрался на верхушку,держа в руках шелковую веревку.Так как течение бурное,то река узкая.
Мы отпускаем ель,она выпрямляется,файтер по параболической траектории летит на другой берег,где врезается в дерево и привязывает свободный конец веревки.Партия играет в канатоходцев.
***
(Персонаж)-вы умеете обращаться с оружием?
(Игрок)-Слушай.На мне кожаная броня,два меча на поясе и колчан стрел за спиной.Как ты думаешь,я обычный лекарь или все-таки я знаю, зачем ношу все это?
***
(игрок-девушка)-Так..я буду Мастером Цепей и Мастером Плетки...а еще можно мне скиллы для наручников?
***
-Зачем ты утащил его,когда его укусила змея?
-Чтобы...его не укусила вторая змея.
***
(в таверне)-Что будете пить на утро?
-Ёрш,пожалуйста.
(ДМ)Хозяйка мешает водку,ром,спирт и пиво,дает тебе.Прокинь спас.
(выпадает 5)
(ДМ) Ну короче тебе очень плохо,ты зеленеешь,временно -1 к Харизме.
Входит Маг.
-Маг!Помогите мне,мне плохо!
Маг молча ставит ведро перед персом и уходит.
***
-Слушай,Стёпа.Скажи мне как простому ДМу:как человек с Интеллектом 3 может поработить мир?
-Ну...у него же есть Дубина +6..
***
Маг тонет.Он хочет выпрыгнуть из воды и бегом по воде добраться до берега.
Он кидает Прыжок - 20.Он взлетает над поверхностью воды на метр.
Он кидает на бег по воде - 1.Он тонет.
Он кидает Прыжок - 20.Он взлетает над поверхностью воды на метр.
Он кидает бег по воде - 3.Он снова тонет,солдатиком опустившись в воду.
Он кидает Прыжок - 20.Со скоростью пушечного ядра он вылетает из воды в воздух.
Он кидает бег по воде - 20.Практически не касаясь воды,он бежит к берегу и спасается.

Я уж и не знаю,не мухлевал ли ДМ,когда ему это все надоело...
***
Двое персонажей - вор(1) и маг(2) - скрытно входят в дом жертвы.Их задача - найти,скрытно убить,взять голову и так же скрытно удалиться.
ДМ: - Так. Вы входите в абсолютно тёмную комнату.Окон нет.
1: - У тебя есть факел?
2: - Нет.
1: - Нет,факел здесь нельзя зажигать...Гарь и все такое...Слишком заметно.Жаль,у меня есть парочка.А у тебя нет свеч?
2: - Нет.
1:-А заклинание подходящее?Свет?
2:-Нет.Я его не приготовил.Я..я не думал,что оно нам понадобится.
1:-Зашибись!Ты проспал 8 часов.Затем ты проспал еще 8 часов,сославшись на то,что тебя разбудили и тебе надо проспать 8 часов подряд,чтобы приготовить заклинания.Ты проспал 16 часов...и ты не приготовил СВЕТ??
2:-Нет.
1:-Хорошо.Еще что-нибудь у тебя есть?
2:-Ну вытяни руку.
Шепотом кастует.На кончиках пальцев появляется огонь.
1:-Идиот!Это - фокус,он не дает освещения!
2:-Черт!
1:-Ладно,давай залезем через окно.
Выходят из дома,аккуратно закрывая за собой двери.Подходят к одному из окон.Вор достает стеклорез.
1:-Упс!Я вот подумал:мы как стекло вставлять обратно будем?У тебя есть Mending?
2:-Я его не приготовил.
Пауза.
1:-...Левитация?
2:-Только на неживые объекты.Вверх-вниз.
1:-...Ну что-нибудь?
2:-Change Oneself.
1:-(вздох) Ладно.Пошли дальше по списку.Вернемся завтра.Сегодня не наш день.

пятница, февраля 29, 2008

Проблемы отыгрыша в D&D 3.5

Первая настоящая статья в этом блоге да будет посвящена D&D.
Недавно я встретился с проблемой отыгрыша.
В чем она заключается?Поясню на примере.Игрок берет себе персонажа с Хаотически-Злым отношением к жизни.Но сам игрок (не персонаж) по жизни скорее нейтрал.Он отыгрывает своих персонажей спокойно,его любимая фраза - "Давайте подумаем логически".Он не может и не хочет отыграть чисто злого персонажа,когда надо резать любого,кто тебя обидел.И он просит ДМа,чтобы можно было сохранить возможности Некроманта,но не отыгрывать персонажа как Злого.
Думаю,подобная проблема актуальна.Конечно,такие вопросы могут задавать только опытные игроки,но ведь ДМ и сам может определить,насколько успешен отыгрыш в его партии.Есть несколько вариантов решения подобного вопроса:
  • Оттенки психологии

Как известно,базовых мировоззрений в D&D девять.Представим их в таблице:
Законно-Добрый Законно-НейтралЗаконно-Злой
Нейтрально-ДобрыйПолный Нейтрал Нейтрально Злой
Добрый ХаотХаот-НейтралХаотически Злой
Самый ужасный - это Хаотически Злой.Самый прекрасный - это Законно Добрый.Наиболее популярен Полный Нейтрал.
Теперь попробуем уточнить наши характеристики.Добавим "оттенков" мировоззрения.То есть,пусть существует,например,нейтрально-законный Злой.
Законно-ДобрыйПочти Добрый ЗаконникЗаконно-НейтралПочти Злой ЗаконникЗаконно-Злой
Нейтрально-законный ДобрыйПочти Законник,Почти ДобрыйНейтральный Почти ЗаконникПочти Злой Почти ЗаконникЗаконно-нейтральный Злой
Нейтрально-ДобрыйНейтрально Почти ДобрыйПолный НейтралНейтрально Почти ЗлойНейтрально Злой
Нейтрально-хаотический ДобрыйПочти Хаот,Почти ДобрыйНейтрально-хаотический Нейтрал (боже мой)Почти Злой Почти ХаотНейтрально-хаотический Злой
Добрый ХаотПочти Добрый ХаотХаот-Нейтрал Почти Злой ХаотХаотически Злой

С названиями,конечно,полный кошмар,но вы меня поняли.
Теперь по существу.В моем примере игроку нужен Почти Злой Хаот.Он сохранит способность к некромантии,но ему не надо будет резать всех и вся.Хотя сорваться он тоже может.
Влияют ли оттенки мировоззрения на что-нибудь еще,кроме отыгрыша?Вряд ли.Во всяком случае,это все оставляю на усмотрение ДМа.Лично мне описывать дополнительные ограничения-бонусы для каждого из 16 дополнительных мировоззрений не представляется интересным.Хотя в этом и есть какой-то резон.
  • Спрятать Мировоззрение

Этот вариант - нечто сходное с заклинанием Conceal Alignment,только он имеет "постоянный" эффект.
ДМ договаривается с игроком,что персонаж будет находиться под постоянным Conceal Alignment (Покровом Мировоззрения).Внешне это выражается в том,что персонаж покрывается слабой фиолетовой пленкой,которая предохраняет его от Detect Evil\Detect Good и прочих.То есть,все будут думать,что он - Злой,но действовать он будет как Добрый.Или наоборот:он будет действовать как Добрый,но мировоззрение сохранять злым.Способ требует хорошего продумывания нюансов,но имеет право на жизнь.Хотя и проигрывает предыдущему,конечно.
  • Раздвоение личности

Очень оригинальный способ решения проблем с мировоззрением.Персонаж объявляется шизофреником (что само по себе уже интересно,т.к. в D&D их нет) и с этого момента имеет две личности в себе:злого Некроманта для вызова падших и доброго гражданина для мирной жизни.Как только на персонажа начинается давление или он оказывается в битве - в ход вступает Некромант.Как только персонаж упокаивается - он снова Законно Добрый,он - порядочный член общества и он абсолютно не понимает,откуда на его блестящем пластинчатом доспехе появились большая вмятина и пятно крови.Самое интересное,что этот добропорядочный гражданин будет определяться заклинанием Detect Evil как Законно-Добрый.Решение,на мой взгляд,не банальное и потому - одно из лучших.
  • Условность

-"Ты,короче,как бы хаот-злой,но играй как хочешь,короче,как нейтрал".
ДМ сам не знает,что делать и оставляет решение на игрока.Это обычно выражается в падении ролеплея и интереса.Хорошем падении интереса к игре.Поэтому этот вариант я считаю худшим

Пока всё.Думаю,позже может появиться пятый или даже шестой вариант.Поживем - увидим.
Желаю поскорее познакомиться с 4й редакцией!
Oreolek.

суббота, августа 25, 2007

Об особенных людях

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

четверг, января 04, 2007

Новый адрес

Новый адрес моего сайта - http://oreolek.net.ru!

Постоянные читатели

Архив