উদাহরণ হিসাবে, এখানে আমার বর্তমান রগুয়েলাইক প্রকল্পটি কীভাবে কাঠামোগত করা হয়েছে (জাভাতে)। এটি একটি 2 ডি গ্রাফিক্স ইঞ্জিন ব্যবহার করছে তাই প্রচুর রেন্ডারিং কোড ইতিমধ্যে আমার জন্য যত্ন নেওয়া হয়েছিল। সমালোচনা স্বাগত জানানো হয়।
class Game
এই শ্রেণিটি রাষ্ট্রের মেশিন স্থাপন করে যা গেমের বর্তমান অবস্থা পরিচালনা করে। (একটি মেনুতে বনাম একটি নতুন গেম শুরু করা বনাম একটি সংরক্ষিত খেলা খেলতে)
interface State
প্রতিটি রাজ্য শ্রেণিতে দুটি লুপ থাকে: যুক্তি আপডেট করার জন্য একটি লুপ এবং রেন্ডারিংয়ের জন্য একটি লুপ। Game
এগুলিতে ক্লাসে কল করার এবং আলাদা রাজ্যে পরিবর্তনের জন্য অনুরোধ করার কোডও রয়েছে।
class ResourceManager
একটি সিঙ্গলটন যা Game
ক্লাস দ্বারা শুরু করা হয় যা সমস্ত প্রয়োজনীয় সংস্থান লোড করে এবং তাদের অ্যাক্সেসের অনুমতি দেয়। আমি এই নকশাটি পছন্দ করি না কারণ এটি বিভিন্ন স্তরে উত্স লোড / আনলোড করা শক্ত করে তোলে, উদাহরণস্বরূপ। আমি যদি শুরু করতাম তবে আমি সম্ভবত এটি অন্যভাবে ডিজাইন করব would
class Map
একটি মানচিত্রে টাইলগুলির একটি অ্যারে এবং মানচিত্রে সমস্ত প্রাণী এবং আইটেমগুলির একটি তালিকা রয়েছে। এটি একটি সুন্দর বেসিক ক্লাস।
class Creature
জীবের মধ্যে চলাফেরার গণনা সহ তাদের সম্পর্কে তথ্য থাকে (তারা কোন মানচিত্রে রয়েছে তা জানতে এবং বাধাগুলি সম্পর্কে সন্ধানের জন্য এটি অনুসন্ধান করতে সক্ষম হওয়া প্রয়োজন)। এটি করা, বা কোনও প্রকারের পরিচালককে সমস্ত প্রাণীর জন্য যত্ন নিতে হবে কিনা তা সিদ্ধান্ত নেওয়ার সাথে আমি লড়াই করছি।
interface AITask
প্রাণীগুলিতে AITasks এর একটি তালিকা থাকতে পারে, যা প্রতিটিবার প্রাণীর লজিক লুপটি চালানোর সময় কার্যকর করা হয়। এইআইটিস্কের নিজস্ব যুক্তিযুক্ত লুপ রয়েছে যা জীবকে আদেশ দেয় এবং একটি সমাপ্তির শর্ত যা নির্ধারণ করে যে কার্যটি সফলভাবে সম্পন্ন হয়েছে কিনা।
interface UIElement
আমি এই ইঞ্জিনের জন্য আমার নিজস্ব ইউআই প্রয়োগ করেছি। প্রতিটি ইউআইইলেমেন্টের একটি রেন্ডারিং লুপ এবং লজিক লুপ থাকে। কীবোর্ড / মাউস ইনপুট প্রসেস করার জন্য তাদের কাছে একটি লুপ রয়েছে। সমস্ত উপাদানগুলির মধ্যে অনেকগুলি শিশু উপাদান থাকতে পারে, যা তাদের পিতামাতার পরে রেন্ডার করা হয় এবং কীবোর্ড / মাউস ইনপুট নেয়। উদাহরণস্বরূপ, এটি আপনাকে সাবমেনাস সহ মেনুগুলি দেয়।