Es posible que desee examinar el diseño orientado a objetos . Python tiene un buen soporte para eso.
Se escriben libros gruesos sobre esto que pueden dar miedo cuando eres nuevo, pero los principios principales son bastante fáciles.
El punto principal es que identifique con qué tipo de objetos está trabajando. No dices en qué tipo de juego estás pensando, pero cosas como Jugador, Monstruo, Objeto, Equipo, Arma, Armadura, etc. son objetos típicos.
Si quieres diferentes tipos de juego, probablemente quieras un objeto de juego que se encargue de la condición de victoria y demás. ¿Quizás un objeto Map también?
A veces no está claro si algo merece ser un objeto o no, por ejemplo, daño. Si no hace daño a un objeto, el código será más simple, pero convertirlo en un objeto facilita la personalización.
Subclases: tanto las armas como las armaduras son equipos. Los equipos son artículos. Probablemente hay otros tipos de artículos. Probablemente le resulte útil definir una clase Combatiente de la que tanto los Jugadores como los Monstruos sean subclases.
La idea es que, por ejemplo, las armas tendrán muchas cosas en común con todos los demás tipos de artículos, tienen un peso, tamaño y otras propiedades como esa.
Entonces, la subclasificación le da una forma de decir que "las armas son como otros artículos, pero además puede manejarlas, afectan el daño que usted hace, etc."
La subclasificación también permite a tus constructores de mods decir "Mi nuevo tipo de arma es como las armas estándar, excepto que ..."
Luego tienes que decidir qué objeto es responsable de qué. Esto no es tan fácil como parece y debes pensarlo un poco. Tomar las decisiones equivocadas no afectará mucho el juego básico, pero hará que sea más difícil personalizarlo.
Mientras solo juegues por tu cuenta, puedes cambiar las cosas, pero en el momento en que lanzas algo al público, ¡hacer cambios se vuelve mucho más difícil! La gente hará modificaciones que dependan de que las cosas sean como son ahora. Incluso bichos. La gente escribirá modificaciones que dependen de los errores que permanecen en el código. Si cambias las cosas, esas modificaciones se romperán y aparecerán monstruos linchadores en tu casa.
Por ejemplo:
Un jugador que empuña un arma ataca a un monstruo con varias armaduras. Esto tiene lugar en un modo de juego particular y en un mapa determinado.
Ambos combatientes pueden tener habilidades como golpe crítico y esquivar.
Ahora, ¿qué objeto es responsable de qué?
No hay una respuesta correcta para esto. Mucho depende de qué tipo de personalización desea permitir.
Si nunca llama a un objeto (por ejemplo, el Mapa), ese objeto no puede cambiar el ataque de ninguna manera.
Después de tomar todas estas decisiones, documentarlas . Escriba un "Manual de Modders" que enumere exactamente qué métodos modificables tiene cada objeto, qué parámetros toman, qué deben devolver, y así sucesivamente ...
¡Buena suerte!