আমি কীভাবে আমার গেমটিতে এমন একটি প্রোগ্রামিং সিস্টেম বাস্তবায়ন করব যা কোডে অ্যাক্সেসযোগ্য, শক্তিশালী এবং দ্রুত উভয়ই?


15

আমি বর্তমানে একটি স্পেস-ভিত্তিক স্যান্ডবক্স গেমের সাথে কাজ করছি যা আপনার সিস্টেমগুলিকে কাস্টম প্রোগ্রাম করার দক্ষতার ভারী বৈশিষ্ট্যযুক্ত করবে। আমি এটি উভয় ক্ষেত্রে এমনভাবে বাস্তবায়ন করতে চাই

  1. অ্যাক্সেসযোগ্য
  2. শক্তিশালী (বেয়ার ন্যূনতম টুরিং-সম্পূর্ণতা হবে)
  3. দ্রুত কোড ইন।

পাঠ্য-ভিত্তিক ভাষাগুলি সাধারণত কেবলমাত্র দ্বিতীয় দুটি প্রয়োজনীয়তা পূরণ করে এবং প্রথম দুটিটিকে সন্তুষ্ট করে এমন ভিজ্যুয়াল ভাষার নকশা করা কঠিন নয়, তবে বিস্তৃত ভাষাগুলি মাউসের বিস্তৃত ব্যবহারের প্রয়োজনে প্রোগ্রামে ব্যথা হয়। কিছু খুব অ্যাক্সেসযোগ্য পাঠ্য-ভিত্তিক ভাষা রয়েছে তবে আমি চাইছি সম্পূর্ণ নন-প্রোগ্রামাররা প্রোগ্রামিংয়ে নিজেকে স্বাচ্ছন্দ করতে সক্ষম হোক।


কেউ যদি সত্যিই আপনাকে একটি উদাহরণ দিতে পারে তবে আমি অবাক হব। কারণ আমি সত্যিই মনে করি এটির জন্য কিছু বিস্তৃত গবেষণা প্রয়োজন (যেমন মানুষ কীভাবে যুক্তি প্রয়োগ করে এবং কী নয়, মনস্তাত্ত্বিক কারণগুলি যা কিছু এবং এই সমস্ত
মানবকেন্দ্রিক

2
কেউ স্ক্র্যাচের কথা উল্লেখ করেনি?
রাসেল

2
আমি নিকটতম ভোটের পরামর্শ দিতে যাচ্ছি না, তবে আমি এটি উল্লেখ করতে চাই যে এটি খুব সহজেই পড়েছে "যদি আপনি একটি পুরো বইটি কল্পনা করতে পারেন যা আপনার প্রশ্নের উত্তর দেয়, আপনি খুব বেশি জিজ্ঞাসা করছেন" জিজ্ঞাসা না করার বিভাগের প্রশ্নগুলি এফএকিউ থেকে; এটি একটি খুব কঠিন সমস্যা, এবং এখানকার লোকেরা যখন পরামর্শ দিতে পারে তবে এটি এমন একটি সমস্যা যা সম্ভবত কোনও এসই সাইটের সীমা ছাড়িয়ে যেতে পারে beyond
স্টিভেন স্টাডনিকি

এটি লক্ষণীয় যে ট্যুরিং-সম্পূর্ণতা কনওয়ের জীবনের গেম , মাইনক্রাফ্ট এবং প্রোগ্রামিংয়ের জন্য তৈরি নয় এমন অন্যান্য সিস্টেমের দ্বারা অর্জন করা যেতে পারে ।
উইল

উত্তর:


10

সত্যই, সমস্ত বৈশিষ্ট্য থাকার একমাত্র উপায় হ'ল একাধিক ইন্টারফেস প্রয়োগ করা। অ্যাক্সেসযোগ্য এবং শক্তিশালী প্রায়শই স্পেকট্রামের দুটি প্রান্ত হয়। এটি করার সহজতম উপায় হ'ল একটি শক্তিশালী সিস্টেম প্রয়োগ করা, এটির একটি অতিরিক্ত ইন্টারফেস রয়েছে যাতে শুরুর দিকে একটি স্বজ্ঞাত উপায়ে সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেয়।

এমন একটি সিস্টেমের জন্য মঞ্জুরি দেওয়া যা প্রাথমিকভাবে দৃষ্টিগোচর প্রোগ্রাম করার অনুমতি দেয়, সম্ভবত লেগো মাইন্ডস্টর্ম প্রোগ্রামিং সরঞ্জামগুলির অনুরূপ :

এখানে চিত্র বর্ণনা লিখুন

যেখানে ড্রাগ / ড্রপ উপাদান রয়েছে। উপাদানগুলির ইনপুট এবং আউটপুট রয়েছে। উপাদানগুলি সাধারণ জিনিস ANDবা ORগেটস বা কাছের শত্রুদের পরীক্ষার মতো জটিল হতে পারে।

আদর্শভাবে ভিজ্যুয়াল উপস্থাপনাটি পটভূমিতে একটি লিখিত ভাষার স্ক্রিপ্ট সংকলন করা উচিত। এটি ভাষা শেখার জন্য একটি শক্তিশালী সরঞ্জাম সরবরাহ করে। যদি কোনও শিক্ষানবিস তাদের প্রোগ্রামটি দৃশ্যত "লিখতে" পারেন, তবে কোডটি পড়ুন এটির ফলে তারা এটি বুঝতে পারে এবং উত্পাদিত কোডটি সংশোধন করতে সক্ষম হয়। অবশেষে ভিজ্যুয়াল সরঞ্জামগুলির চেয়ে আরও শক্তিশালী কোড লিখতে সক্ষম হচ্ছেন। এটি প্রোগ্রামিংয়ে ব্যবহারকারীদের স্বাচ্ছন্দ্যের প্রয়োজনীয়তা পূরণ করে।

সিস্টেমের মেরুদণ্ড অবশ্যই একটি লিখিত ভাষা। ভিজ্যুয়াল সরঞ্জামগুলি কেবলমাত্র ব্যবহারকারীদের দ্রুত দেয় কিছু সহজ কিছু প্রোগ্রাম করার উপায় প্রদান এবং নতুনদের শুরু করার অনুমতি দেয়।

লিখিত ভাষা উন্নত ব্যবহারকারীদের উন্নত জিনিসগুলি করার অনুমতি দেয়। এবং আপনি এমনকি কাস্টম স্ক্রিপ্টগুলি তৈরি করে ব্যবহারকারীদের নিজস্ব উপাদান তৈরি করার অনুমতি দিতে পারেন। তারপরে তারা দ্রুত প্রোগ্রামিংয়ের জন্য একটি দ্রুত এবং সহজ ইন্টারফেসে তৈরি করা উপাদানগুলি পুনরায় ব্যবহার করতে পারে।

শুভকামনা! একটি মজাদার প্রকল্প মত শোনাচ্ছে।


ব্যাখ্যা করার জন্য আপনাকে ধন্যবাদ. আমি নিজে এনএক্সটি-জি এর মতো কিছু করার কথা ভাবছিলাম, কেবল অভিজ্ঞতা থেকেই জানি যে এর মতো ভাষায় জটিল প্রোগ্রাম করা কতটা কঠিন। আমি ভিজ্যুয়াল প্রোগ্রামগুলিকে কোডে রূপান্তর করার ধারণাটি পছন্দ করি, খেলোয়াড়দের আরও অভিজ্ঞ হয়ে ওঠার পরে তাদের প্রোগ্রামগুলি পাঠ্যক্রমে সম্পাদনা করতে দেওয়া হয়, তাই আমি সম্ভবত এটি ব্যবহার করব।
Dimitriye98

1
গ্রাফিকাল উপস্থাপনার বাইরে কিছু স্ক্রিপ্ট কোড উত্পন্ন করা সহজ তবে কোনও স্ক্রিপ্টের বাইরে (অর্থবহ এবং পাঠযোগ্য) গ্রাফিকাল উপস্থাপনা উত্পন্ন করা খুব কঠিন ware সুতরাং আপনি সম্ভবত খুব সীমাবদ্ধ নিজস্ব স্ক্রিপ্টিং সিনট্যাক্স দিয়ে শেষ করবেন।
ইমি

1
আপনি সম্ভবত সঠিক কারণে স্ক্রিপ্ট-> ভিজ্যুয়াল প্রয়োগ করতে চান না এটি অসম্ভব। ভিজ্যুয়াল-> স্ক্রিপ্টের সাথে লেগে থাকুন।
MichaelHouse

ম্যাক্রো ব্লক (ব্লকগুলি যা ইনপুট / আউটপুট এবং অভ্যন্তরীণ ব্লকগুলি রাখার ক্ষমতা সরবরাহ করে) ক্রিয়াকলাপ তৈরি করতে সহজতর করতে হায়ারার্কি, এনক্যাপসুলেশন এবং পুনরায় ব্যবহার করতে ব্যবহার করা যেতে পারে। কেবল নিশ্চিত করুন যে আপনি ম্যাক্রোগুলির ভিতরে ম্যাক্রোগুলি স্থাপন করতে পারবেন না বা আপনি এই জাতীয় কেস সনাক্ত করতে পারেন ... আমি অন্তত একটি প্রোগাম জানি যা এইরকম অসীম লুপ সনাক্ত করতে ব্যর্থ হয়।
এক্সিলিথ

5

আপনি গুগলের অবরুদ্ধভাবে দেখতে চান , এগুলি ভিজ্যুয়াল উপাদানগুলিকে স্বীকৃত প্রোগ্রামিং শর্তাদির সাথে একত্রিত করে যেখানে অ্যাক্সেসযোগ্যতার মোটামুটি শালীন স্তর বজায় রাখে।

এখানে চিত্র বর্ণনা লিখুন

অনুপ্রেরণার জন্য আপনি ম্যাজ ডেমোটিতে একবার নজর রাখতে পারেন , আমার নন-প্রোগ্রামার বন্ধুরা বেশিরভাগ ক্ষেত্রেই এটি ব্যবহার করে ধাঁধাটি ব্যবহার করে কমপক্ষে আপনার কিছু মানদণ্ডকে সন্তুষ্ট করে সক্ষম হয়েছিলেন।


অ্যাক্সেসিবিলিটি দৃষ্টিকোণ থেকে আকর্ষণীয় ভাষা, তবে এতে প্রোগ্রামিং খুব ধীর (আমি চেষ্টা করেছি) ...
পাশা

@ পাশস প্রকৃতপক্ষে, আমি অনুমান করি যে উভয় জগতের সেরা চেষ্টা করার জন্য আপনাকে যে মূল্য দিতে হবে তার একটি অংশ রয়েছে।
কোয়েটজলকোটল

4

আমি অবাক হয়েছি এর আগে এর উল্লেখ করা হয়নি, তবে এমআইটির স্ক্র্যাচ একটি ব্লক ইন্টারফেস ব্যবহার করে যা কোডে দ্রুত হয় users এটি ব্যবহারকারীদের নিজস্ব ফাংশন তৈরি করতে দেয় এবং বাচ্চাদের কীভাবে শিখিয়ে দেওয়ার জন্য তৈরি করা হয়েছিল এমন ভাষার জন্য আশ্চর্যরকম জটিল হয়ে উঠতে পারে কোড।

স্টেনসিল হ'ল ব্লক কোডিংয়ের আরেকটি উদাহরণ যা আপনি যা চাইছেন তার চেয়ে আরও কিছু অনুরূপ করে। লেগো এনএক্সটি ব্যবহার করা ভিজ্যুয়াল প্রোগ্রামিং ইন্টারফেসের চেয়ে এই জাতীয় ব্লকগুলির সাথে কোডিং অনেক বেশি দক্ষ এবং কম সময়সাপেক্ষ। স্টেনসিল ব্যবহারকারীদের অ্যাকশন স্ক্রিপ্ট বা ব্লকগুলিতে কোড করার অনুমতি দেয়।

আমি ছবির অভাবের জন্য ক্ষমা চাইছি, ছবিগুলি পোস্ট করার মতো যথেষ্ট খ্যাতি আমার নেই।


2

বিপিইএল প্রোগ্রামিং ল্যাঙ্গুয়েজে ভিজ্যুয়াল উপস্থাপনা এবং এর সাথে কাজ করে এমন অনেক সরঞ্জাম রয়েছে। এটি একটি কর্মপ্রবাহের ভাষা, কোনও প্রোগ্রামিং ভাষা নয়, তবে এটি টুরিং-সম্পূর্ণ। এটি ভার্ভোজ, তবে প্রোগ্রামার এবং ব্যবসায়ী উভয়ের পক্ষেই এটি সহজে লেখা যায় এবং এটি ভিজ্যুয়াল থেকে পাঠ্য আকারে সহজেই অনুবাদযোগ্য। আমি মনে করি না এটি একটি ভাল গেম-ল্যাঙ্গুয়েজ তৈরি করবে তবে এটি অনুপ্রেরণার উত্স হিসাবে কাজ করতে পারে। এবং বিপিইএল ইঞ্জিন এবং সরঞ্জামের পরিমাণ দেওয়া, কিছু ধারণা এবং / অথবা কোড পুনরায় ব্যবহার করা সম্ভব।

বিপিইএল-এর মতো ভাষা প্রোগ্রামিংয়ের মতো অনুভব করবে না, আরও রাউটিং এবং সংযোগকারী সিস্টেমগুলির মতো। সুতরাং আপনার মধ্যে একটি টার্গেটিং সিস্টেম কোনও বন্দুকের ব্যবস্থার সাথে কিছু যুক্তির সাথে সংযুক্ত থাকতে পারে।


+1: যদিও আমি নিজেই বিপিইএলকে সমর্থন করব না, তার পদ্ধতির ঠিক উত্তরটি আমি সরবরাহ করেছি। উচ্চ নিয়মিত ভাষা যা পাঠ্য বা দৃষ্টিভঙ্গি উভয়ই উপস্থাপন করা সহজ এবং যা ইভেন্টের রাউটিং / প্রতিক্রিয়াকে বেশি "সাধারণ" প্রোগ্রামিং প্যারাডিজমের চেয়ে বেশি জোর দেয়।
শান মিডলডিচ

1

এই পদ্ধতির বিবেচনা করুন:

  1. নিশ্চিত হয়ে নিন, আপনার স্ক্রিপ্ট যুক্তি সাধারণ নিয়ম-ভিত্তিক যান্ত্রিকগুলিতে প্রকাশযোগ্য। উদাহরণস্বরূপ, আপনার কাছে "ট্রিগার" রয়েছে যা "শর্তাবলীর" সাথে যুক্ত গেমপ্লে চলাকালীন ঘটে থাকে যা অবশ্যই পূরণ করা উচিত এবং তারপরে "ক্রিয়াগুলি" কার্যকর করা হবে (স্টারক্রাফ্ট 2 সম্পাদক থেকে নির্লজ্জভাবে চুরি করা হয়েছে)।
  2. তারপরে একটি ইউআই সরবরাহ করুন যেখানে আপনি কিছু পূর্বনির্ধারিত ক্রিয়াকলাপ / শর্তাদি / ট্রিগারগুলি চারপাশে টেনে আনতে পারেন এবং লোকেরা প্রায়শই করতে চান এমন 90% ব্যবহারের ক্ষেত্রে এটি তৈরি করতে পারেন।
  3. এখন কিছু পাওয়ারফুল এবং জনপ্রিয় স্ক্রিপ্টিং ইঞ্জিন লুয়া, পাইথন বা সি # এর মতো সংহত করুন
  4. পরিশেষে এই ক্রিয়াগুলি / শর্তাবলী / নিজেকে সেই ভাষায় ট্রিগারগুলির দু'ধরনের লিখুন। নিশ্চিত করুন যে কাস্টমাইজিং ব্যবহারকারী অনায়াসে আপনার ড্রাগে সহজেই অনুলিপি করতে পারে এবং এগুলি এবং নতুন ক্রিয়াকলাপগুলি অনুলিপি করতে পারে, সম্পাদনা করতে এবং সংহত করতে পারে।
  5. আপনি সম্ভবত আপনার ট্রিগার, শর্ত এবং ক্রিয়াকলাপগুলিকে প্যারাম্যাট্রাইজ করতে সক্ষম হতে চান এবং সুতরাং আপনাকে এই তিনটির চেয়ে বেশ কয়েকটি আদিম প্রয়োজন যেমন, "গেম অবজেক্ট", "অবস্থান", "সংখ্যা" বা "স্ট্রিং"। ইউআইতে, আপনাকে এই পরামিতিগুলি নির্ধারণের জন্য কিছু কথোপকথনের প্রয়োজন হবে তবে আপনি যদি ইউআই ক্রিয়াকলাপগুলির মাধ্যমে পুরো স্ক্রিপ্টগুলি তৈরি করতে সক্ষম হন তবে এটি এখনও অনেক কম কাজ।

এটি অত্যধিক ব্যথা না করে সমস্ত ক্যান্ডি পাওয়ার দ্রুত উপায় সম্পর্কে। আপনি ক্লিক'অনড্রাগ নুবস পাশাপাশি বোর্ডে ভিম-গিক্স পাবেন। এবং যদি আপনি মেকানিক্সকে সহজ রাখেন (যেমন ট্রিগার -> শর্ত -> ক্রিয়া), তবে আপনাকে পাওয়ারফুল এবং এখনও সহজেই ব্যবহারযোগ্য সহজে গ্রাফিকাল স্ক্রিপ্ট সম্পাদকের জন্য ইউআই বিকাশ করতে মনুষ্য-বছর ব্যয় করতে হবে না।

আমার অর্থটি বোঝানোর জন্য কয়েকটি উদাহরণ:

  • ট্রিগারটি হতে পারে: "গেম ফ্রেমওয়ার্ক ইনিশিয়ালড", "গেম লোডেড", "ইউনিট তৈরি হয়েছে", "ইউনিট নষ্ট হয়েছে", "প্লেয়ার ক্ষতিগ্রস্থ হয়েছে" ইত্যাদি। ট্রিগারগুলিতে সাধারণত কিছু প্যারামিটার থাকে (যেমন ইউনিট তৈরি করা গেমবজেক্টটি তৈরি করা হয়েছে)
  • শর্তাদি হ'ল সমস্ত স্ট্যান্ডার্ড বুলিয়ান এবং বুনিয়াদি গাণিতিক শর্তগুলি (এবং / অথবা / না / সমান / বৃহত্তর ...) এবং আপনার খেলায় কিছু সাধারণ পরিস্থিতি যেমন "ইউনিট সম্পূর্ণ স্বাস্থ্যের সাথে রয়েছে" বা "কমপক্ষে দু'জন খেলোয়াড় সংযুক্ত রয়েছে" are শর্তগুলির সাধারণত প্যারামিটার থাকে যা ব্যবহারকারীকে পূরণ করতে হবে (ইউআই ব্যবহার করে)
  • ক্রিয়াগুলি এমন স্ক্রিপ্ট যা কিছু সাধারণ পরামিতিও নিতে পারে। "ক্যামেরায় এক্সএক্সএক্স প্যান করুন", "কিল ইউনিট ওয়াই", "গেম ওভার", "ট্রিগার এক্সিকিউট করুন" এবং "ক্রিয়াকলাপে এক্স, ওয়াই, জেড ... কল করুন"

নোট করুন যে প্রোগ্রামিংটি গেমের কম্পিউটারগুলির জন্য, প্লাগইনগুলির জন্য নয়। যাইহোক আপনাকে ধন্যবাদ।
Dimitriye98

আমি দেখছি .. এটি আকর্ষণীয় গেম পদ্ধতির মতো শোনাচ্ছে;)। আপনি কি "কোড হিরো" বা "গ্যারি'স মোড" এর মতো অনুরূপ গেমগুলিতে সন্ধান করেছেন যা গেম নিমজ্জন না ভেঙে কোডিং ক্ষমতা দেওয়ার চেষ্টা করে? যাইহোক, আপনি এখনও আমার বেসিক পরামর্শটি উদ্ধার করতে পারেন এবং সমস্যাটিকে স্ক্রিপ্টিং এবং ইউআই অংশে বিভক্ত করতে পারেন। আপনার খেলার জন্য শুভকামনা। :)
ইমি

ওয়েল, কোডিং ইন-গেম কম্পিউটার কনসোলগুলিতে করা হবে, যা খুব বেশি নিমজ্জন ভাঙা উচিত নয়। যদিও ব্যবহারকারীরা গেমের বাইরে কোডটি সক্ষম করতে সক্ষম হবেন তারপরে কোডটি তাদের সংরক্ষণ বা তারা যে সার্ভারটিতে খেলেন তাতে আমদানি করে।
Dimitriye98
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.