Вопросы программирования MUD - PullRequest
8 голосов
/ 04 декабря 2009

Раньше я играл в MUD на основе Smaug Codebase . Это было высоко настроено, но было то же самое в основе. У меня есть исходный код для этого MUD, и я заинтересован в написании собственного (просто для забавного проекта). У меня есть несколько вопросов, в основном по поводу дизайна. Может, кто-нибудь может мне помочь?

  1. Какой язык мне использовать? Интерпретируется или компилируется? Есть ли разница? SMAUG написан на C. Я владею многими языками, и у меня нет проблем с изучением.
  2. Есть ли особый подход, которому я должен следовать, чтобы не мешать работе? Объектно-ориентированный, функциональный и т. Д.
  3. Какой носитель мне следует использовать для хранения данных? Плоские файлы (это то, что использует SMAUG) или что-то вроде SQLite. Каковы плюсы / минусы производительности обоих?
  4. Есть ли какие-нибудь руководства, о которых кто-нибудь знает, как начать работу над таким проектом?

Я хочу, чтобы масштабирование позволяло 50 игрокам онлайн одновременно без снижения производительности. Если бы я использовал Ruby 1.8 (очень медленный), это бы изменило ситуацию по сравнению с использованием Python 3.1 (Faster) или скомпилированным C / C ++?

Если кто-нибудь сможет протянуть руку и дать какую-нибудь информацию или совет, я буду вечно благодарен.

Ответы [ 2 ]

11 голосов
/ 05 декабря 2009

Я сделаю снимок:

  1. В 2009 году для игры на 50 игроков это не имеет значения. Возможно, вы захотите выбрать язык, для которого вы знакомы с инструментами профилирования, если вы хотите расширить его, но в настоящее время объем оперативной памяти очень низок, из-за ограничений возникли ранние LPMUD (с которыми у меня есть опыт работы) и DikuMUD (который ваш Смауг получен из) не применяется. (LPMUD может обрабатывать ~ 10-15 игроков на машине с 8 МБ ОЗУ)
  2. Стиль программирования не обязательно приводит к проблемам с производительностью, такие крупные сайты, как веб-сервер Amazon 'obidos * написаны на C, а такие же крупные сайты, как оригинальные магазины Yahoo, были написаны на Лиспе. StackOverflow написан на ASP.NET и т. Д. Я бы / лично / использовал C, но многие бы назвали меня садистом.
  3. Плоские файлы являются бессмысленными в наше время и для большого количества хранилищ данных, есть особые исключения (например, большие почтовые серверы иногда используют 'maildir', который представляет собой структурированные плоские файлы). Размер вашей игры, скорее всего, означает, что вы не столкнетесь с огромной медлительностью, вызванной задержками при извлечении данных, но целостность данных в случае сбоя, вероятно, станет самым убедительным аргументом.
  4. Не знаю ни одного гида, но я бы попытался запустить игру как тупой сервер чата, чтобы убедиться, что пользователи могут войти в систему и что-то сделать (принять свой ввод и сбросить его для всех другие пользователи), затем создайте его, разрешив вход в определенные учетные записи, чтобы вы столкнулись с проблемой обработки имени пользователя / пароля и настройки / хранения / извлечения пользовательских параметров ... затем начните добавлять элементы gamedriver (получите tic tac toe games). работа в игре), затем идите немного сложнее (настройте 5 комнат для работы с объектами, с которыми вы можете подбирать / сбрасывать / ударять друг друга), затем добавлять неигровых персонажей, а затем беспокоиться о том, что они могут ворчать в Diku. -приобретенные замки Смауг / и т. д. и работа с ними. :)

Это немного не так, я уверен, что есть особые мнения. :) Удачи!

1 голос
/ 05 декабря 2009

Это текстовая игра, верно? В этом случае, с текущим оборудованием, кажется, все, о чем вам следует беспокоиться, это не случайно создать алгоритм O (n ** 2). Даже это, вероятно, не будет слишком плохо с 50 пользователями.

...