Вопрос

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

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

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

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

Это было полезно?

Решение

Я попробую это сделать:

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top