www.mudconnector.su
https://forum.mudconnector.su/

Nereal
https://forum.mudconnector.su/viewtopic.php?f=7&t=779
Страница 1 из 3

Автор:  Pacifist [ Сб окт 18, 2014 9:00 pm ]
Заголовок сообщения:  Nereal

На досуге, «бороздя просторы интернета», случайно наткнулся на один малоизвестный, но очень интересный проект Нереал (http://nereal.ru, или блог автора http://my.nereal.ru/), успешно функционировавший с 2003 по 2008 года. Он был создан Тхэнном Эраннором из города Кирова, бывшим игроком MUDа Арда. Арда Тхэнну очень понравилась, но со временем его стали напрягать элементы игры, которые, по его мнению, отвлекали игроков от отыгрыша ролей (например, строка состояния персонажа). Тогда он решил написать собственную игру, лишенную этих недостатков.

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

Несмотря на столь жесткие правила и отсутствие рекламы, Нереал был довольно популярным, в нем было зарегистрировано несколько сотен игроков, а максимальный онлайн доходил до 40 человек. Это обеспечивалось удивительной атмосферой царившей в игре, ведь в ней нельзя было встретить всяких «васянагибаторов» и т.п.
Хотя первоначально Нереал был лишь программой для общения, постепенно он оброс множеством элементов, знакомых нам по MUD: появились бои, смена дня и ночи, погода, голод, жажда, жара, голод, многослойная одежда, возможность садиться не только на пол, но и на мебель и много еще чего. В игре даже была возможность играть на музыкальных инструментах (с набором нот в команды), и реальным звучанием на специальном клиенте (для Нереала были написаны два клиента).
Игровая система Нереала отличалась отсутствием классов, был набор умений доступный каждому, но чтоб выучить все, просто не хватит очков, которые давались за повышение уровня. В игре была создана интересная система магии, так вышло, что школы магии стали организациями конкретных игроков (что-то типа гильдий или кланов в других онлайновых играх). Для того, чтобы нормально изучить ту или иную школу магии, надо было вступить в ее школу. Заклинания, которые можно изучить, записывались игроками в книги, а книги были доступны в библиотеке школы. В общем, эта система выглядела примерно так: ищешь магистра школы, просишь, чтобы тебя в нее приняли, становишься учеником, учишься, сдаешь экзамен, и только после этого начинаешь владеть этой школой магии в полной мере. Также была возможность создать свое заклинание, а потом уже самому решать, передавать ли его другим, или остаться единственным его мастером.

Мир игры создавался под влиянием произведений Дж.Р.Р. Толкиена и цикла «Сага о копье». Локации в основном были личными, дома и пространство около них, но были и «дикие земли», населенные разными животными. Скриптование осуществлялось посредством паскаль-подобного языка. Зоны были статичными, без автоперезагрузок, сначала хранились в текстовых файлах, потом было организовано что-то типа базы данных.

В процессе работы над Нереалом у Тхэнна Эраннора накопилось множество новых идей, выполнить которые, старый сервер был уже не в состоянии. Тогда началась работа над новым сервером на C# — Нереал-3 (http://sourceforge.net/projects/nereal/?source=directory). Старый сервер, лишенный на время былого внимания, начал терять игроков, а новичкам становилось все труднее выйти из школы (как помните, им нужно было для этого одобрение трех «старичков»). Так, через некоторое время, на старом сервере не осталось игроков, а новый сервер не был закончен. Проект был закрыт.
Автор проекта доступен для любых вопросов и предложений, координаты можно найти на указанных в начале сайтах. В новом сервере даже среди уже реализованного столько концептуальных заделов, что Тхэнн будет рад обсудить их.

Другая статья про Нереал доступна по адресу: http://my.nereal.ru/nereal/other/tkhenn-interview.

Вложения:
nereal.png
nereal.png [ 105.12 KIB | Просмотров: 20021 ]

Автор:  Тхэнн Эраннор [ Сб окт 18, 2014 9:15 pm ]
Заголовок сообщения:  Re: Nereal

Спасибо за публикацию, сам бы я вряд ли не то что собрался написать, но и не подумал бы об этом вовсе...
Готов ответить на любые вопросы по Нереалу и около него.

Автор:  ArtistSpb [ Сб окт 18, 2014 11:58 pm ]
Заголовок сообщения:  Re: Nereal

Ого, я даже не знал о проекте.
Вопросы автору :
1. Почему не публиковал данные о проекте, на коннекторе, например, хотя бы ссылку ?
Было бы больше игроков и может даже разработчиков.
2. Почему закрылся проект ?
3. Что с версией 2 ?
3. И почему был выбран именно C# для 3 версии ?
4. На сервер Нереала можно как-то попасть сейчас и какой клиент нужен для этого ?

PS. Сам фанат ZX и писал под него :) , эхх, ностальгия.

Автор:  Тхэнн Эраннор [ Вс окт 19, 2014 12:18 pm ]
Заголовок сообщения:  Re: Nereal

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

А я и не знал о том, чтоб где-то что-то публиковать. Это раз.
Во-вторых, старую версию (1/2) считал не готовой к наплыву и нигде не сообщал. Все игроки что были, это чисто сарафанное радио да частично яндекс. Но на 90% точно сарафанное радио.

ArtistSpb писал(а):
2. Почему закрылся проект ?

Старый — потому что сервер начал регулярно слетать, а держать и руками перезапускать его ради пары ностальгирующих игроков было уж слишком. Других игроков не осталось. Теперь я знаю причину слетания, надо одну зону отрубить и почистить там всех наплодившихся мобов, но пока не было на то стимула.
Новый — потому что тянул я его в одиночку и в некий момент меня сманили на другой проект, где хоть не в одиночку был... А за прошествием времени продолжать было уже не очень. Да и слишком ударился в концепции вместо собственно геймплея. Тот Нереал-3, что есть сейчас, это скорее проба кучи концепций, нежели игра. Но полагаю, весьма интересных концепций.

ArtistSpb писал(а):
3. Что с версией 2 ?

Я называю «старыми» обе версии, и 1 и 2. Разница между ними в реалтаймовой модели боя, вместо пошаговой. Серьезно повысило динамику и интерес.

ArtistSpb писал(а):
3. И почему был выбран именно C# для 3 версии ?

Потому что на тот момент (да и по сей день) это был мой основной и любимый язык. Да и объектную модель строить, в сравнении с дельфи, намного проще.

ArtistSpb писал(а):
4. На сервер Нереала можно как-то попасть сейчас и какой клиент нужен для этого ?

Сейчас никак, так как не запущен ни один вариант, но я могу при желании в любой момент.
Клиент либо любой мадовский, либо специальный нереаловский, они есть в разделе Файлы на форуме проекта.

ArtistSpb писал(а):
PS. Сам фанат ZX и писал под него :) , эхх, ностальгия.

:) Да, ZX это целый период, еще больше чем Нереал... Кстати, первые нереальщики были как раз наши кировские спектрумисты.

Автор:  Тхэнн Эраннор [ Вс окт 19, 2014 12:30 pm ]
Заголовок сообщения:  Re: Nereal

Пока вспомнил, решил добавить: кроме внутриигровых концепций, в Нереале-3 было реализовано обновление сервера прям без потерь подключений игроков. Просто админ в самой игре вводит команду «!сервер обнов», и он обновляется. :) Позволяло очень быстро что-то править или дополнять. И при этом не заставляя игроков заново входить, лишь пауза на несколько секунд.

Автор:  ArtistSpb [ Вс окт 19, 2014 1:51 pm ]
Заголовок сообщения:  Re: Nereal

Почему спросил про C#, так по причине того, что я тоже задумываю новый сервер под мады,
и поэтому изучаю вопрос - насколько тот или иной язык подходит для этой задачи в наше время.

Я вот люблю С++, на нем можно написать все что угодно, но на это уйдет много времени,
чего не хочется, поэтому смотрю и на другие языки.

Основными камнями преткновения, при выборе технологии, являются :
1. Необходимость встроенного скриптового движка, причем с изоляцией от основного кода, дабы скрипты не порушили сервер.
Скриптовый движок должен быть очень простой, чтобы его могли изучить все желающие, даже не программисты.
2. Необходима реальная многопоточность, так как иначе ошибки и баги в скриптах будут влиять на весь сервер - тормозить будет у всех.
3. Нужен профайлер для скриптов, чтобы находить самые тормозные из них и исправить.
4. Желательно чтобы все это взлетело не только на Windows, но и на Linux/FreeBSD, так как однозначно, что под хостинг игрового сервера
придется либо ставить свой комп дома, что не есть гуд, либо пользоваться VDS, а там по умолчанию всегда Линух, а винда стоит значительно дороже.
5. Хотелось бы наличие горячей перезагрузки (без отключения игроков).

Учитывая требования, возможные варианты:
1. Чистый C++ - долго делать, что делать со скриптами ?
2. Чистый C#- сделать можно быстрее, но что на счет Линухов? Есть конечно mono, но это значит что надо сразу на нем писать. Опять, что делать со скриптами ?
3. NodeJS - язык хороший и кроссплатформенный, но он не многопоточный, а работает по принципу коротинов, и заточен под Web, а не реал-тайм поток данных. Опять же вопрос скриптов.
4. Lua - очень хороший язык, как скриптовый, но он не самостоятельный язык, к нему нужно все добавлять ручками. Многопоточности нет, есть коротины.
Его можно встроить в п.1-3, но вопрос многопоточности придется решать ручками все равно. Что получится - не понятно.
5. Java - тоже хороший язык, кроссплатформенный, только не стыкуется ни с чем, кроме Java (без костылей), т.е. приложение на Java и ничего более.
6. Erlang - очень хорошая штука для сетевого кода, но синтаксис языка мозгодробительный, будут проблемы с программистами.

Из всего этого, у меня пока только такие варианты вырисовываются :
- Lua как основной язык разработки + модули на C++.
- Возможно Erlang + модули на С++ и Lua как скриптовый, но это нужно изучать.

Еще есть способ решения многопоточности (синхронизация) за счет базы данных.

Автор:  Pacifist [ Вс окт 19, 2014 2:27 pm ]
Заголовок сообщения:  Re: Nereal

ArtistSpb писал(а):
1. Необходимость встроенного скриптового движка, причем с изоляцией от основного кода, дабы скрипты не порушили сервер.
Скриптовый движок должен быть очень простой, чтобы его могли изучить все желающие, даже не программисты.


Сейчас на западе набирает популярность подход, чтобы использовать в качестве скриптового языка упрощенный язык самого движка. Это позволить выстроить цепочку игрок->билдер->кодер. По моему, такой подход если и не самый удачный, то один из самых удачных.

Автор:  ArtistSpb [ Вс окт 19, 2014 2:48 pm ]
Заголовок сообщения:  Re: Nereal

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


Это сомнительно, так как чтобы упростить язык движка, нужно переписать компилятор/интерпретатор существующего языка, что не под силу рядовому разработчику, даже группе
разработчиков. Скорее всего пишется свой интерпретатор языка по синтаксису похожему на язык движка, но более простого в возможностях, как, например, это сделано в LP-мадах.
Хотя, есть языки которые в принципе позволяют это, но язык не упрощается, а ограничиваются доступные функции для вызова (песочница).

В нашем случае, свой скриптовый движок, это сложная работа, для решения которой требуется очень высокая квалификация разработчиков и время. Писать свой скриптовый движок
сейчас - это похоронить проект прямо на старте. Я кроме Lua, больше не вижу более подходящего языка, который можно просто взять и использовать.

Кстати поэтому я и рассматриваю Lua как основной язык разработки - и для движка и для скриптов (с изоляцией скриптов). Язык очень простой и
легко встраивается куда угодно и как угодно.

Автор:  Тхэнн Эраннор [ Вс окт 19, 2014 3:08 pm ]
Заголовок сообщения:  Re: Nereal

Нереал-3 под моно и писался, более того, у меня на тот момент и дома линукс был единственной системой. И МоноДевелоп был основной IDE.
С тех пор прошло 7 лет... Оно явно всё в развитии на месте не стояло, хотя и несомненно уступает VisualStudio+ReSharper.

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

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

В любом случае, это всё чисто технические вопросы. И они легко решаемы. А какова основная идея у вашего проекта? Или это секрет? :)
Моя основная идея Нереала как такового описана в начале статьи. Основная идея Нереала-3 - в целой огромной статье на моем сайте, ныне может и не особо актуальной. Плюс в куче концепций, дополняющих игровой процесс или делающих его более реалистичным.
Это, кстати, и есть преграда на моей мечте возродить Нереал. Не могу найти ту основную идею, что и меня вдохновит, и в нынешние реалии впишется. Чисто из ностальгии повторить старое — не только не хочется, но и бесполезно.

Автор:  Тхэнн Эраннор [ Вс окт 19, 2014 3:17 pm ]
Заголовок сообщения:  Re: Nereal

Pacifist писал(а):
ArtistSpb писал(а):
1. Необходимость встроенного скриптового движка, причем с изоляцией от основного кода, дабы скрипты не порушили сервер.
Скриптовый движок должен быть очень простой, чтобы его могли изучить все желающие, даже не программисты.


Сейчас на западе набирает популярность подход, чтобы использовать в качестве скриптового языка упрощенный язык самого движка. Это позволить выстроить цепочку игрок->билдер->кодер. По моему, такой подход если и не самый удачный, то один из самых удачных.

А еще я только что подумал, чего все уперлись в скрипты как таковые? Может вам и виднее, раз вы похоже билдеры, но... может вложить в сам движок все возможности, напрочь избавив билдеров(и иные категории игроков) от надобности в скриптах?
В Нереале да, скрипты были, но только для избранных. А между тем строить локации и творить вещи могли все, и не только шаблонные, но и уникальные.

Страница 1 из 3 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/