Ruby RL
Модераторы: Sanja, Максим Кич
Ruby RL
В забугорном 7DRL я участвовать как-то не решаюсь, свою попытку стартую здесь.
Недавно начал искать идеальный язык ООП, пока недостатков не нашел только у Ruby. Ну кроме того очевидного недостатка, что это интерпретатор.
Сегодня дочитал руководство.
За пару часов смог настроить ncurses (точнее под 1.9 так и не смог настроить, так что скачал скомпилированный пакет для 1.8 ) и заставить бегать @ по экрану .
Следующие задачи: добавить цвета( и мышь?), интегрировать туда реализации LOS и A* с roguebasin, придумать в чем же будет состоять игра. Ни на что играбельное не претендую, просто хочу оценить Ruby.
-----
Залил последнюю версию на SourceForge: http://sf.net/projects/rubyrl
Недавно начал искать идеальный язык ООП, пока недостатков не нашел только у Ruby. Ну кроме того очевидного недостатка, что это интерпретатор.
Сегодня дочитал руководство.
За пару часов смог настроить ncurses (точнее под 1.9 так и не смог настроить, так что скачал скомпилированный пакет для 1.8 ) и заставить бегать @ по экрану .
Следующие задачи: добавить цвета( и мышь?), интегрировать туда реализации LOS и A* с roguebasin, придумать в чем же будет состоять игра. Ни на что играбельное не претендую, просто хочу оценить Ruby.
-----
Залил последнюю версию на SourceForge: http://sf.net/projects/rubyrl
Последний раз редактировалось kipar 19 апр 2012, 08:21, всего редактировалось 2 раза.
Re: Ruby RL
Ruby хорош. Но есть один существенный недостаток - из популярных скриптовых языков он самый медленный.
Я когда с ним баловался, у меня некоторые тесты были в десятки раз медленнее перла!
С одной стороны для RL не так важно, но с другой стороны тот же fov может притормаживать, если в лоб всё делать.
Я сейчас присматриваюсь к Falcon (www.falconpl.org).
Он правда еще в разработке, и модуль по работе с консолью еще не готов.
Язык мультипарадигменный. Куча всяких удобных штучек в языке. VM весьма шустрая.
Написан на С++, и модули писать на С++ очень удобно.
Возможно я займусь libtcod биндингами для фалькона.
Кстати SDL биндинги там уже есть. Но кому нужен голый SDL?
Я когда с ним баловался, у меня некоторые тесты были в десятки раз медленнее перла!
С одной стороны для RL не так важно, но с другой стороны тот же fov может притормаживать, если в лоб всё делать.
Я сейчас присматриваюсь к Falcon (www.falconpl.org).
Он правда еще в разработке, и модуль по работе с консолью еще не готов.
Язык мультипарадигменный. Куча всяких удобных штучек в языке. VM весьма шустрая.
Написан на С++, и модули писать на С++ очень удобно.
Возможно я займусь libtcod биндингами для фалькона.
Кстати SDL биндинги там уже есть. Но кому нужен голый SDL?
Re: Ruby RL
Нда, если он такой медленный это печально. Как раз сейчас и проверю, как там с фовом дела обстоят. За ссылку спасибо, посмотрю, но по Ruby по крайней мере есть много инфы.
Идею игры уже придумал: Бои мехов (аля МехВарриор&GearHead). Правда задумка черезчур амбициозная, так что упростим до максимума:
есть три типа оружия:
- ракеты (большой урон, неограниченный радиус, но медленно летят, так что можно успеть спрятаться или сбить)
- лазеры (низкий урон, средний радиус, идеальны для сбивания ракет)
- пушки (большой урон, минимальный радиус).
Если успею - сделаю модификации, отличающиеся по весу\потреблению энергии\урону\перезарядке\количеству боеприпасов, считываемые из файла или генерируемые рандомом (смотря что проще). Если нет - обойдемся коэффициентом (СилаПушек\СилаЛазеров\СилаРакет).
Стрелять и идти можно будет одновременно (один раз шагнули - мех продолжает идти, а мы можем стрелять). У АИ будет два варианта поведения - если у него превосходство в ракетах, то он будет стараться убежать, если превосходство в пушках - стараться сблизиться.
Три окна:
- сначала выбираем миссию
- потом на деньги накопленные за предыдущие миссии выбираем оружие (полноценное окно вооружения сделать нереально, надо будет как-то упростить)
- потом собственно бой.
Повторять пока не проиграли.
Генератор карт: поле с полуразрушенными прямоугольниками зданий. Да, по идее карты будут разрушаемые (ракеты уничтожают препятствия, не только мехов).
Ну и система конечностей... есть руки, ноги, голова, тело. На каждой части висит оружие, так что при попаданиях это оружие постепенно выходит из строя. Если уничтожить любую часть кроме руки - мех уничтожен. Ракеты бьют по рандомной части тела, для лазеров и пушек задается режим - либо по рукам, либо по ногам, либо по телу, либо по голове.
Идею игры уже придумал: Бои мехов (аля МехВарриор&GearHead). Правда задумка черезчур амбициозная, так что упростим до максимума:
есть три типа оружия:
- ракеты (большой урон, неограниченный радиус, но медленно летят, так что можно успеть спрятаться или сбить)
- лазеры (низкий урон, средний радиус, идеальны для сбивания ракет)
- пушки (большой урон, минимальный радиус).
Если успею - сделаю модификации, отличающиеся по весу\потреблению энергии\урону\перезарядке\количеству боеприпасов, считываемые из файла или генерируемые рандомом (смотря что проще). Если нет - обойдемся коэффициентом (СилаПушек\СилаЛазеров\СилаРакет).
Стрелять и идти можно будет одновременно (один раз шагнули - мех продолжает идти, а мы можем стрелять). У АИ будет два варианта поведения - если у него превосходство в ракетах, то он будет стараться убежать, если превосходство в пушках - стараться сблизиться.
Три окна:
- сначала выбираем миссию
- потом на деньги накопленные за предыдущие миссии выбираем оружие (полноценное окно вооружения сделать нереально, надо будет как-то упростить)
- потом собственно бой.
Повторять пока не проиграли.
Генератор карт: поле с полуразрушенными прямоугольниками зданий. Да, по идее карты будут разрушаемые (ракеты уничтожают препятствия, не только мехов).
Ну и система конечностей... есть руки, ноги, голова, тело. На каждой части висит оружие, так что при попаданиях это оружие постепенно выходит из строя. Если уничтожить любую часть кроме руки - мех уничтожен. Ракеты бьют по рандомной части тела, для лазеров и пушек задается режим - либо по рукам, либо по ногам, либо по телу, либо по голове.
- Jolly Roger
- Сообщения: 2973
- Зарегистрирован: 27 ноя 2009, 09:10
- Откуда: Minsk, Belarus
Re: Ruby RL
Дальше, лично мне, хотелось бы увидеть продолжение сами знаете какого рогалика.
И если ведьму я ещё стерпел, то сейчас уж написал
И если ведьму я ещё стерпел, то сейчас уж написал
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.
Re: Ruby RL
В RFRL я затеял рефакторинг системы карт, заодно еще раз убедился какой хорошей зарядкой для ума становится отладка при отсутствии нормального отладчика. Так что чтобы развеятся хочу попробовать программировать на чем-то "высокоуровневом", без забот с выделением памяти и соответствием типов.
Уже есть цвета, система тайминга, взрывающиеся ракеты и пуляющие ими враги.
Фов (взятый целиком с rogubasin) кстати не тормозит, но то ли из-за моих кривых рук, то ли из-за ncurses автоповтор клавиш работает очень хреново, поэтому скорость работы ограничена скоростью тыканья по кнопкам.
Уже есть цвета, система тайминга, взрывающиеся ракеты и пуляющие ими враги.
Фов (взятый целиком с rogubasin) кстати не тормозит, но то ли из-за моих кривых рук, то ли из-за ncurses автоповтор клавиш работает очень хреново, поэтому скорость работы ограничена скоростью тыканья по кнопкам.
Скрытый текст: ПОКАЗАТЬ
- Jolly Roger
- Сообщения: 2973
- Зарегистрирован: 27 ноя 2009, 09:10
- Откуда: Minsk, Belarus
Re: Ruby RL
Будем считать, что ты меня убедил.
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.
Re: Ruby RL
ХОТЕТЬ!kipar писал(а):Бои мехов (аля МехВарриор)
Re: Ruby RL
Так, первый день завершен, разобрался с организацией в ncurses окон, сделал режим прицеливания\просмотра, сделал стрельбу. Дело за боевой системой.
Исходники:
Скрытый текст: ПОКАЗАТЬ
Re: Ruby RL
Ехешника нет
Пользователи линукса и макоси по идее имеют Ruby в составе операционки, а для винды можно скачать архив из моего первого сообщения и распаковать его в каталог с исходниками (main.rb естественно оставить новый)
Пользователи линукса и макоси по идее имеют Ruby в составе операционки, а для винды можно скачать архив из моего первого сообщения и распаковать его в каталог с исходниками (main.rb естественно оставить новый)
Re: Ruby RL
Что ж, день 2 завершен.
Разбил мехов на две фракции(друзья\враги),
Сделал базовую боевую систему:
у меха есть части тела. Каждая часть состоит из слотов. В каждом слоте либо броня(А), либо одно из оружий(L\M\C)
При попадании в мех выбираем случайную часть тела, в ней N(=урон) раз выбираем случайный слот. Если в слоте оружие - оно уничтожено, если броня - то уничтожена с шансом 0.5. Если часть тела(кроме рук)уничтожена - мех уничтожен.
Конечно надо будет еще сделать прицельную стрельбу(иначе от всех этих частей тела смысла мало). Видимо сделаю так: лазеры и пушки будут по умолчанию выбирать самую поврежденную часть, ракеты будут как сейчас стрелять по случайной.
Еще надо сделать кулдауны у оружия - сейчас игрок может безнаказанно засыпать врагов ракетами, а враги просто пуляют ракетами один раз из десяти. Да, проверку ЛОС (брезенхема) для врагов я тоже пока не сделал, поэтому лазерами и пушками они не стреляют.
Сделал инициализацию параметров мехов из шаблонов - из текстового файла видимо смысла считывать нет - в случае с интерпретирующем языком отличие хардкода от внешнего файла минимально
Исходники: (да,ехешника нет, и хелпа тоже. играть там пока особо не во что)
Дальнейшие планы: доделать боевую часть (кулдауны для оружия, проверка лос, АИ), возможно сделать генератор карты с разрушенными домами и порядка 10-20 типов мехов (от кастомизации я решил отказаться, поэтому оружие и броня мехов будут жестко заданы. Игрок сможет только покупать\продавать мехи. Хотя потом может и усложню боевую систему). Ну и можно будет переходить к небоевой части.
Да, еще не забыть сделать цветные сообщения в логе и окне информации о цели(вместо Head: AAAAMC писать MC красным\желтым\зеленым).
Разбил мехов на две фракции(друзья\враги),
Сделал базовую боевую систему:
у меха есть части тела. Каждая часть состоит из слотов. В каждом слоте либо броня(А), либо одно из оружий(L\M\C)
При попадании в мех выбираем случайную часть тела, в ней N(=урон) раз выбираем случайный слот. Если в слоте оружие - оно уничтожено, если броня - то уничтожена с шансом 0.5. Если часть тела(кроме рук)уничтожена - мех уничтожен.
Конечно надо будет еще сделать прицельную стрельбу(иначе от всех этих частей тела смысла мало). Видимо сделаю так: лазеры и пушки будут по умолчанию выбирать самую поврежденную часть, ракеты будут как сейчас стрелять по случайной.
Еще надо сделать кулдауны у оружия - сейчас игрок может безнаказанно засыпать врагов ракетами, а враги просто пуляют ракетами один раз из десяти. Да, проверку ЛОС (брезенхема) для врагов я тоже пока не сделал, поэтому лазерами и пушками они не стреляют.
Сделал инициализацию параметров мехов из шаблонов - из текстового файла видимо смысла считывать нет - в случае с интерпретирующем языком отличие хардкода от внешнего файла минимально
Скрытый текст: ПОКАЗАТЬ
Дальнейшие планы: доделать боевую часть (кулдауны для оружия, проверка лос, АИ), возможно сделать генератор карты с разрушенными домами и порядка 10-20 типов мехов (от кастомизации я решил отказаться, поэтому оружие и броня мехов будут жестко заданы. Игрок сможет только покупать\продавать мехи. Хотя потом может и усложню боевую систему). Ну и можно будет переходить к небоевой части.
Да, еще не забыть сделать цветные сообщения в логе и окне информации о цели(вместо Head: AAAAMC писать MC красным\желтым\зеленым).
Re: Ruby RL
Ну хоть основы управления-то напиши...
Да, если зажать 5 или Enter, экран уезжает вверх.
Да, если зажать 5 или Enter, экран уезжает вверх.
Всё вышесказанное - ИМХО, если не указано обратное.
Re: Ruby RL
5 и ентер (и все остальные кнопки) НЕ зажимать
Ходить - нумпадом или стрелками.
L - Стрельба лазерами (повторное нажатие для подтверждения)
M - Стрельба ракетами (-\\-)
С - Стрельба пушками (-\\-).
X - смотреть (-\\-).
Esc - выход из режима стрельбы
Q - сдаться
Вроде пока все.
Для нераспознанных клавиш я вывожу их коды, поэтому экран может уезжать.
Ходить - нумпадом или стрелками.
L - Стрельба лазерами (повторное нажатие для подтверждения)
M - Стрельба ракетами (-\\-)
С - Стрельба пушками (-\\-).
X - смотреть (-\\-).
Esc - выход из режима стрельбы
Q - сдаться
Вроде пока все.
Для нераспознанных клавиш я вывожу их коды, поэтому экран может уезжать.
Re: Ruby RL
Сделай еще по возможности таран\или что-нибудь подобное ближнего боя. Просто будет обидно, если противник почти мертв, а у тебя кончились снаряды на всех пушках. И еще после битвы возможность захватить вражеский мех(если он не сильно поврежден, скажем только ноги перебиты или руки). Это подстегнет игрока рисковать жизнью главным процессором меха, и не надо париться с экраном покупки\продажи мехов... так сказать. Ну это конечно, если время останется.
Кстати, может сделаешь режим атаки\защиты крепости? Ну то есть, кучка мехов сидит в домике, а другая кучка пытается их убить. А значит первая кучка может прикрываться стенками, а другая использует терраморфинг... вот его то не хватает! В оригинальном МехВарриор можно было ракетами "выкапывать" ямки, где можно было прятяться от орудий врага, не знаю правда, как это сделать в рогалике, может банальным разделением высот, ну то есть:
.......................
.......................
.......................
.М....................
.......................
.......................
.......................
Мех стреляет ракетой в землю.
.......................
.......................
.....>OOO<........
.М..>OOO<........
.....>OOO<........
.......................
.......................
Заходя на клетки >, можно спуститься в овраг:
<...>
<M.>
<...>
Здесь <> это не лестницы, а просто направления выхода.
Без этих составляющих битва мехов, имхо, просто рандомная перестрелка вундервафлями. Конечно, в 7DRL эта фича плохо укладывается, но...
Кстати, может сделаешь режим атаки\защиты крепости? Ну то есть, кучка мехов сидит в домике, а другая кучка пытается их убить. А значит первая кучка может прикрываться стенками, а другая использует терраморфинг... вот его то не хватает! В оригинальном МехВарриор можно было ракетами "выкапывать" ямки, где можно было прятяться от орудий врага, не знаю правда, как это сделать в рогалике, может банальным разделением высот, ну то есть:
.......................
.......................
.......................
.М....................
.......................
.......................
.......................
Мех стреляет ракетой в землю.
.......................
.......................
.....>OOO<........
.М..>OOO<........
.....>OOO<........
.......................
.......................
Заходя на клетки >, можно спуститься в овраг:
<...>
<M.>
<...>
Здесь <> это не лестницы, а просто направления выхода.
Без этих составляющих битва мехов, имхо, просто рандомная перестрелка вундервафлями. Конечно, в 7DRL эта фича плохо укладывается, но...
XVs писал(а):ХОТЕТЬ!kipar писал(а):Бои мехов (аля МехВарриор)
Re: Ruby RL
Снаряды не кончаются, так что роль оружия ближнего боя выполняют пушки (у них дальность огня три клетки и минимальное время перезарядки).
Захват мехов однозначно собирался сделать. Планирую примерно так - после боя автоматически подсчитываем сколько собрано уцелевших мехов и уцелевшего оружия, докупаем недостающее оружие\броню, продаем лишнее оружие, даем возможность игроку продать мехов, потом даем возможность купить из случайно выбранного ассортимента. Так как снаряжение мехов фиксированное, то с этим проблем нет.
С атакой\защитой крепости и терраформингом главная проблема - АИ. Сам механизм разных высот я еще могу представить, но вот как его может использовать компьютер? Либо идти напролом через все стены и овраги (тогда оборону крепости им доверять нельзя), либо сидеть тихо пока никто тебя не увидит (но это обороной тоже сложно назвать - подходи и истребляй поодиночке).
Захват мехов однозначно собирался сделать. Планирую примерно так - после боя автоматически подсчитываем сколько собрано уцелевших мехов и уцелевшего оружия, докупаем недостающее оружие\броню, продаем лишнее оружие, даем возможность игроку продать мехов, потом даем возможность купить из случайно выбранного ассортимента. Так как снаряжение мехов фиксированное, то с этим проблем нет.
С атакой\защитой крепости и терраформингом главная проблема - АИ. Сам механизм разных высот я еще могу представить, но вот как его может использовать компьютер? Либо идти напролом через все стены и овраги (тогда оборону крепости им доверять нельзя), либо сидеть тихо пока никто тебя не увидит (но это обороной тоже сложно назвать - подходи и истребляй поодиночке).
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 38 гостей