আপনার নিজস্ব স্ক্রিপ্টিং ভাষা কার্যকর করা কি কার্যকর?


21

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

আপনি কি নিজের স্ক্রিপ্টিং ভাষা তৈরি করেছেন? আপনি কেন একটি বিদ্যমান ব্যবহার না করে নিজের রোল করতে বেছে নিয়েছেন? উন্নয়নের সময় আপনি কোন সংস্থানগুলির সাথে পরামর্শ করেছেন?


43
আমার ব্যক্তিগত থাম্বের নিয়মটি হ'ল: আপনার যদি নিজের লোকেদের নিজের রোল করা ভাল ধারণা কিনা আপনি অন্য লোকদের জিজ্ঞাসা করতে পারেন তবে এটি ভাল ধারণা নয়।
সাম হোচেভার

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

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

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

1
আপনি যদি সি ++ প্রোগ্রামার হন এবং আপনি LUA অপছন্দ করেন তবে পরিবর্তে জাভাস্ক্রিপ্ট চেষ্টা করুন।
জিল

উত্তর:


42

না । কমপক্ষে, সম্ভবত না।

এটি হুইল রিইন্টেভমেন্টের একটি খুব ঘন ঘন কেস গেম ডেভলপমেন্ট, একটি ভুল যা এখনও বেশ জনপ্রিয়।

আপনি যদি এই প্রশ্নটি জিজ্ঞাসা করেন তবে অন্যরা যা করে তার দ্বারা আপনি প্রভাবিত হওয়ার খুব সম্ভবত সম্ভাবনা, তাই এপিক গেমস অবাস্তব ইঞ্জিন দিয়ে কী করেছে তা দেখুন:

  • ইউই 3 এর একটি কাস্টম, অদ্ভুত, অপ্টিমাইজড, হার্ড-টু-ডিবাগ অবাস্তব স্ক্রিপ্ট জিনিস ছিল,
  • গুজবটি যদি সত্য হয় তবে হট-রিলোডোয়েবল সি ++ ডিএলএল পক্ষে, সমর্থন ইউই 4 এ সরানো হচ্ছে

আপনি কি মনে করেন আপনি এপিকের চেয়ে ভাল করতে পারবেন?

প্রোগ্রামিং ল্যাঙ্গুয়েজ তৈরি করা গেম ইঞ্জিনিয়ারদের নয়, প্রোগ্রামিং ল্যাঙ্গুয়েজ স্রষ্টাদের অন্তর্ভুক্ত

কোনও ভাষার সম্পূর্ণ পরিপক্ক হওয়ার জন্য বছর এবং বছর সময় লাগে এবং এর সাথে সংযুক্ত সরঞ্জামসেট (সংকলক, লিঙ্কার, দোভাষী, ডিবাগার ..) ব্যবহারযোগ্য। আজকাল আপনার হাতে অনেকগুলি সহজলভ্য সমাধান রয়েছে সুতরাং স্ক্র্যাচ থেকে কোনও নতুন জিনিস শুরু করার কোনও সত্যিকারের কারণ নেই, লক্ষ্যটি যদি কেবল কোনও গেম তৈরি করা হয় তবে তা নয় not সময়কাল।

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

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

সুতরাং, এই একটি বিট আকস্মিক বা এমনকি কঠোর শব্দ হবে, আমি বলবো যে এক কেস যেখানে এটি পারে জানার জন্য: যদি আপনি শিখতে কিভাবে স্ক্রিপ্টিং ভাষা তৈরি করা হয় না। তবে দয়া করে, আপনি যদি এটি করেন তবে: অন্যকে এটি ব্যবহার করতে বাধ্য করবেন না।

সম্পাদন করা

আপনি কেবল যে গুহা গল্পের কমান্ড তালিকার সাথে লিঙ্ক করেছেন তা একবার দেখেছিলাম। সেকি:

<ECJx:y      [EC?] Jump           @ Jump to event Y if any npc with ID X is present

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

if (npc.id == x) then
    jump_to_event(y)
end

এটি জিনিসগুলিকে এত সহজ করে তুলবে যখন উদাহরণস্বরূপ, আপনার আরও জটিল অবস্থার প্রয়োজন হবে:

if (npc.id == x) or (npc.type == "enemy") then
    jump_to_event(y)
end

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

+1, আমি লুয়া বা কাস্টম স্ক্রিপ্টিং ভাষা জানি না, তবে লুয়া এবং
থ্যাটে

1
একটি বা অন্য সম্পর্কে জাদুকর কিছুই নেই যা উভয়ই শিখতে অসম্ভব করে তোলে। অবাস্তাল সম্ভবত অবাস্তব স্ক্রিপ্ট অপসারণ করছে তবে তারা সক্ষম এবং সম্পূর্ণ ভিজ্যুয়াল স্ক্রিপ্টিং ভাষা হিসাবে কিসমেটকে প্রচুর পরিমাণে বাড়িয়েছে এবং পূরণ করছে। তারা অবাস্তব স্ক্রিপ্টটি অপসারণ করেনি কারণ এটি একটি ব্যর্থতা, তারা এটিকে সরিয়ে ফেলছে কারণ এটি উল্লেখযোগ্যভাবে আরও কঠিন বৈশিষ্ট্যগুলির (হট-রিলোডিং সি ++, আপডেট কিসমিট) দ্বারা তৈরি হয়েছে। আপনার বক্তব্যটির সাথে আমি একমত নই এই অর্থ গ্রহণ করবেন না: আপনার নিজের ভাষা লেখাই অনেক সময় অপচয়, বাগের উত্স এবং বৃহত শিক্ষার কার্ভ ইত্যাদির কারণ
শান মিডলডিচ

2
@ অট-- আমিও ভীত নই, আমার বক্তব্যটি হ'ল এই স্বরলিপিটি প্রসারিত করা আরও বেশি জটিল করে তুলবে, অন্যদিকে প্রথম স্থানে যথাযথ ভাষা ব্যবহার করা দীর্ঘমেয়াদে সহায়তা করবে। আইএমএইচও, সেই ক্ষেত্রে ব্যবহারের সহজতার তুলনায় ওভারহেড প্রাসঙ্গিক নয়।
লরেন্ট কুইভিডু

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

9

আপনি কি নিজের স্ক্রিপ্টিং ভাষা তৈরি করেছেন এবং কেন আপনি একটি বিদ্যমান ভাষা ব্যবহারের পরিবর্তে নিজের রোল করতে বেছে নিয়েছেন?

আমার কাছে রয়েছে, যদিও আমি অন্য ভাষা থেকে বাক্য গঠন ধার নিয়েছি। সব মিলিয়ে এটি একটি দুর্দান্ত শিক্ষার অভিজ্ঞতা ছিল এবং আমার ক্ষেত্রে তেমন কঠিন ছিল না কারণ ভাষাটি সহজ ছিল।

আমি এটি মূলত করেছি কারণ আমি আমার স্ক্রিপ্টগুলির জন্য নিয়মিত সি-স্টাইল সিনট্যাক্স ব্যবহার করতে চেয়েছিলাম, কারণ দলের প্রত্যেকেই এটির সাথে পরিচিত ছিল।

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

উন্নয়নের সময় আপনি কোন সংস্থানগুলির সাথে পরামর্শ করেছেন?

আমার মূল সংস্থানটি ছিল এই বই:

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

প্রয়োগ করার জন্য আমি এই বই থেকে যথেষ্ট শিখতে পেরেছি:

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

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

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

পুরো প্রক্রিয়াটি শূন্য জ্ঞান থেকে প্রায় 2 সপ্তাহ সময় নিয়েছিল এবং অনেক মজার ছিল :)

পিএস: শেষে আমি আমাদের সরঞ্জামগুলিতে আমার কাস্টম ভাষার জন্য সিনট্যাক্স হাইলাইটিং এবং ইন্টেলিজেন্স যুক্ত করতে চেয়েছিলাম। সিন্টেলা এই ক্ষেত্রে জীবন রক্ষাকারী ছিল। আমি নিম্নলিখিত র‍্যাপারটি ব্যবহার করেছি:

http://scintillanet.codeplex.com/


5

আমি এটি প্রস্তাবিত দেখেছি তবে বেশিরভাগ পোপল লুয়ার পরামর্শ দেয় তবে এটি আমার ধরণের প্রোগ্রামিংয়ের সাথে মানায় না।

ঠিক আছে, আসুন এটি অন্য একটি কোণ থেকে চেষ্টা করুন: এটি আপনার পছন্দ নয় এমন লুয়া সম্পর্কে কী? এটি এমন কিছু যা সহজেই স্থিরযোগ্য, বা এটি মৌলিক কিছু?

উদাহরণস্বরূপ, then/do/endভাল সি / সি ++ - স্টাইলের কোঁকড়া ধনুর্বন্ধনীগুলির চেয়ে কোড ব্লক বোঝাতে যেমন কীওয়ার্ড ব্যবহার করুন । যদি এটি আপনার সমস্যা হয় ... তবে এটি এমন কিছু যা আপনি ঠিক করতে পারেন আপনাকে যা করতে হবে তা হ'ল লুয়ার নিজস্ব সামান্য উপভাষাকে সংজ্ঞায়িত করা এবং একটি সাধারণ রূপান্তর সরঞ্জাম লিখুন যা আপনার কোঁকড়ানো-ব্রেস সিনট্যাক্সটিকে আসল লুয়ায় রূপান্তরিত করবে।

আপনি কি + = কিছু ফর্ম চান? এটি একটি প্রাক-প্রক্রিয়াকরণ সিস্টেমে সহজেই কিছু করতে পারেন। কেবলমাত্র ফর্মের বিবৃতিগুলিকে expr1 += expr2রূপান্তর করুন expr1 = expr1 + expr2

মঞ্জুর, আপনাকে এক জোড়া কোঁকড়া-ধনুর্বন্ধনী কোনও টেবিল বা একটি do/endযুগলের প্রতিনিধিত্ব করে কিনা তা সনাক্ত করার একটি উপায় খুঁজতে হবে । আর তুমি অ্যাপ্লিকেশন Lua মধ্যে অগ্রাহ্য করে আপনার প্রাক প্রক্রিয়াকরণ সিস্টেম হুক আছে চাই dofile, loadstring, এবং অন্যান্য মান অ্যাপ্লিকেশন Lua গ্রন্থাগার ফাংশন। তবে সব শেষ পর্যন্ত করণীয়।

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

যদি আপনার সমস্যাগুলি এর চেয়ে বড় হয় (গ্লোবালগুলি ডিফল্ট হয়ে থাকে, সুতরাং আপনাকে localসর্বত্র ব্যবহারের প্রয়োজন হয়), এর কয়েকটি পরিচালনা করা যেতে পারে (পরিবর্তিত পরিবেশ এবং মেটাটেবিলের ব্যবহারের মাধ্যমে নতুন বৈশ্বিক ত্রুটি হিসাবে ঘোষণা করা সহজভাবে করা)। যদি আপনি প্রথম শ্রেণীর অবজেক্টস, কর্টিনস, আবর্জনা সংগ্রহ বা লুয়ার অন্যান্য মৌলিক উপাদান হিসাবে ফাংশনগুলি ঘৃণা করেন ... তবে ঠিক তখনই আপনি নিজের তৈরির জাহান্নামে রয়েছেন;)

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


আমার কাছে, দেখে মনে হচ্ছে আমি লুয়া ব্যবহার করতে চাইলে আমি কেবল ফাংশনগুলি কোড করতে পারি। মনে হচ্ছে আমি কেবল কোড চালাচ্ছি।
skiperic

1
@ এসকিপারিক: আপনি কী বলতে চাইছেন তা আমি জানি না। আপনি কি একটি উদাহরণ দিতে পারেন?
নিকল বোলাস

উপরে লরেন্টের উত্তর দেখুন।
skiperic

2
@ এসিপেরিক: আপনার কী সম্পর্কিত তা সত্যই তা ব্যাখ্যা করে না। আপনি লুয়া কোড করতে পারেন? হ্যাঁ। আর সমস্যা হচ্ছে ...?
নিকল বোলাস

1
@ বার্তেকবানাচিউইচ: এমনকি এটি সি সি এপিআই স্বীকার করে নিলেও এটি এখনও অনেক সি ++ ভিত্তিক স্ক্রিপ্টিং এপিআইয়ের চেয়ে উচ্চতর I've এটি একমাত্র স্ক্রিপ্টিং এপিআই যা আমি আসলে কোনও ধরণের স্বয়ংক্রিয় বাইন্ডার ছাড়াই কাঁচা ব্যবহার বিবেচনা করব ।
নিকল বোলাস

3

অন্যান্য উত্তরগুলির পরিপূরক হিসাবে, এটি কোনও কঠোরভাবে বাইনারি বিকল্প নয়। বিদ্যমান স্ক্রিপ্টিং ভাষার মধ্যে আপনি নিজের ডোমেন-নির্দিষ্ট_ভাষাও তৈরি করতে পারেন । এই পদ্ধতির সুবিধা হ'ল:

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

প্রাথমিক অসুবিধাটি হ'ল আপনি নিজের "বেস" ভাষার সীমাবদ্ধতার সাথে ডিএসএল ডিজাইন করবেন।


2

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

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

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


1
লুয়া গেম ডেভলপমেন্টে খুব জনপ্রিয় স্ক্রিপ্টিং ভাষাও।
ফিলিপ

হ্যাঁ, লুয়া পুরো জায়গা জুড়ে ব্যবহৃত হয়, তবে ওপিতে উল্লেখ করা হয়েছিল যে তিনি আসলে এটি খুব বেশি পছন্দ করেন নি। কোডিং শৈলীর পছন্দগুলি গুরুত্বপূর্ণ হতে পারে।
কাতানা 314

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

1
@ কটানা ৩১৪: " কোডিং শৈলীর পছন্দগুলি গুরুত্বপূর্ণ হতে পারে " "সত্যই, প্রোগ্রামাররা" কোডিং স্টাইল "সম্পর্কে উচ্চ ঘোড়া থেকে নামলে বিশ্ব ভাল হয়। আমরা যদি এখানে << পছন্দের ভাষাটি সন্নিবেশ করান> সকলের চেয়ে << পছন্দের ভাষা এখানে সন্নিবেশ করান> এর চেয়ে মৌলিকভাবে ভাল ছিল এমন চিন্তাভাবনা বন্ধ করে দিলে আমরা সকলেই আরও ভাল প্রোগ্রামার হতে পারি। এমন ভাষা ব্যবহার করা যা আপনি বিল্ড চরিত্রের বাক্য গঠন পছন্দ করতে পারেন না এবং এই ধরণের বাগ-চিন্তা এড়াতে সহায়তা করে।
নিকল বোলাস

1

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

শিউর করুন আপনি সহজ শুরু করেন, ঘন ঘন পরীক্ষা করুন এবং আপনার আদর্শকে ধরে রাখুন। তবে সর্বদা মনে রাখবেন, এলইউএ আপনার জন্য রয়েছে।


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