MUD des questions de programmation
-
13-09-2019 - |
Question
Je l'habitude de jouer MUD basé sur la . Il était très personnalisé, mais était même au cœur. J'ai le code source de ce MUD, et je suis intéressé par écrit mon propre (Juste pour un projet amusant). J'ai quelques questions cependant, la plupart du temps sur les aspects de conception. Peut-être que quelqu'un peut me donner un coup de main?
- Quelle langue dois-je utiliser? Interprété ou compilé? Est-ce que cela fait une différence? Smaug est écrit en C. Je suis à l'aise avec beaucoup de langues, et ont pas de problème d'apprentissage plus.
- Y at-il une approche particulière, je devrais suivre pour ne pas nuire à la performance? Orienté objet, fonctionnel, etc?
- Quel moyen dois-je utiliser pour stocker des données? fichiers plats (ce que Smaug utilise), ou quelque chose comme SQLite. Quels sont les avantages de performance / inconvénients des deux?
- Y at-il des guides que tout le monde connaît sur la façon de commencer un projet comme celui-ci?
Je veux à l'échelle pour permettre en ligne 50 joueurs à la fois sans diminution des performances. Si je Ruby 1.8 (très lent), serait-il une différence par rapport à l'utilisation de Python 3.1 (plus rapide) ou compilé C / C ++?
Si quelqu'un peut donner un coup de main et donner quelques informations ou des conseils, je serais éternellement reconnaissant.
La solution
Je vais vous donner un coup de feu ce:
- En 2009, pour un jeu de 50 joueurs, peu importe. Vous voudrez peut-être choisir une langue que vous connaissez des outils de profilage pour, si vous voulez pousser plus loin, mais étant donné que la RAM est si pas cher de nos jours, les contraintes de conduite au début LPMUD (que j'ai l'expérience avec) et DikuMUD (qui votre Smaug est dérivé) ne sont pas applicables. (LPMUD pourrait gérer ~ 10-15 joueurs sur une machine avec 8 Mo de RAM)
- Le style de programmation ne conduit pas nécessairement à des difficultés de performance, de grands sites comme d'Amazon Óbidos Óbidos le serveur web sont écrits en C, mais les sites juste en-grands comme les magasins Yahoo originales ont été écrites en Lisp, StackOverflow est écrit dans ASP.NET, etc. I'D / personnellement / utilisation C, mais beaucoup de gens me appeler un sadique.
- Fichiers plats sont un peu inutile dans la journée d'aujourd'hui et de l'âge pour un bon nombre de stockage de données, il y a des exceptions propres à chaque cas (grandes mailservers utilisent parfois « maildir » qui est structuré fichiers plats, par exemple). La taille de votre jeu signifie probablement que vous ne serez pas en cours d'exécution en grande lenteur entraîné par les retards de récupération de données, mais l'intégrité des données en cas de plantage-vont probablement faire l'argument le plus convaincant.
- Je ne sais pas d'un guide, mais ce que je ferais est d'essayer d'obtenir le jeu a commencé comme un serveur de chat stupide pour commencer, assurer que les utilisateurs peuvent se connecter et faire quelque chose (prendre leur entrée et vider à tous d'autres utilisateurs), puis construire que jusqu'à permettre des connexions spécifiques, de sorte que vous commencerez à faire face au défi du nom d'utilisateur / gestion de mot de passe et réglage de l'option d'utilisateur / stockage / récupération ... puis commencer à ajouter les éléments de gamedriver (obtenir les jeux de tic tac toe travailler dans le jeu), puis aller un peu plus complexe (obtenir une configuration 5 salle de travail avec des objets que vous pouvez ramasser / déposer / bash autre avec), puis ajouter quelques personnages non-joueurs, puis vous soucier de siphonage dans le Diku châteaux de Smaug dérivée de / etc et travailler avec eux. :)
Ceci est un peu hors du brassard, je suis sûr qu'il ya des opinions dissidentes. :) Bonne chance!
Autres conseils
Ceci est un jeu basé sur le texte, non? Dans ce cas, avec le matériel actuel, il semble tout ce que vous auriez à vous soucier de ne crée pas accidentellement un O (n ** 2) algorithme. Même que, probablement, ne serait pas trop mal avec 50 utilisateurs.