オブジェクト指向設計を検討することをお勧めします。Pythonはそれをうまくサポートしています。
厚い本は、これについて書かれており、あなたが新しいときに怖いかもしれませんが、主な原則はかなり簡単です。
主なポイントは、作業しているオブジェクトの種類を特定することです。どのようなゲームを考えているのかはわかりませんが、プレーヤー、モンスター、アイテム、装備、武器、鎧などは典型的なオブジェクトです。
さまざまな種類のゲームが必要な場合、おそらく勝利条件などを処理するGameオブジェクトが必要になります。おそらくMapオブジェクトもですか?
何かがオブジェクトに値するかどうか、例えば損傷などが明確でない場合があります。オブジェクトに損傷を与えない場合、コードは単純になりますが、オブジェクトにすると、カスタマイズが容易になります。
サブクラス化:武器と装甲はどちらも装備です。機器はアイテムです。おそらく他の種類のアイテムがあります。おそらく、プレイヤーとモンスターの両方がサブクラスである戦闘員を定義することは有用でしょう。
たとえば、武器には、他のすべての種類のアイテムと多くの共通点があり、重量、サイズ、その他のプロパティがあります。
したがって、サブクラス化は、「武器は他のアイテムと似ていますが、さらに武器を使用したり、ダメージに影響を与えたりするなど」という方法を提供します。
また、サブクラス化により、MODビルダーは「私の新しいタイプの武器は、それ以外は標準の武器とまったく同じです」と言うことができます。
次に、どのオブジェクトが何を担当するかを決定する必要があります。これは見かけほど簡単ではないので、考えてみてください。間違った選択をしても、基本的なゲームにはあまり影響しませんが、カスタマイズが難しくなります。
あなたが自分でいじくり回している限り、あなたは周りのものを変えることができますが、あなたが何かを一般に公開する瞬間、変更を加えることはずっと難しくなります!人々は、今のように物事に依存するMODを作成します。バグも。人々は、コードに残っているバグに依存するmodを作成します。物事を変更すると、これらのMODが破損し、リンチモブが家に現れます。
例えば:
武器を振るうプレイヤーが複数の鎧を着たモンスターを攻撃します。これは、特定のゲームモードおよび特定のマップで行われます。
どちらの戦闘員も、クリティカルヒットやダッジなどのスキルを持っている場合があります。
さて、どのオブジェクトが何を担当していますか?
これに対する正しい答えはありません。許可するカスタマイズの種類に大きく依存します。
オブジェクト(Mapなど)を呼び出さない場合、そのオブジェクトは攻撃を変更できません。
これらすべての決定を行った後、それらを文書化します。各オブジェクトに含まれるmoddableメソッド、それらが取るパラメーター、返すべきものなどを正確にリストした「Moddersマニュアル」を作成します。
がんばろう!