Александр Яковлев a.k.a. Oreolek

24 Март 2008 г.

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

Filed under: текстовые квесты — Александр Яковлев @ 16:52

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

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

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

22 Март 2008 г.

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

Filed under: текстовые квесты — Александр Яковлев @ 17:46

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

17 Март 2008 г.

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

Filed under: Горячая Линия — Александр Яковлев @ 18:08

Вот мои 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

Filed under: Dungeons and Dragons — Александр Яковлев @ 14:01

Решил вспомнить то смешное,что было у меня или мне рассказывали в 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:-(вздох) Ладно.Пошли дальше по списку.Вернемся завтра.Сегодня не наш день.

Powered by WordPress