স্ক্রিপ্টিংয়ের জন্য ডোমেন-নির্দিষ্ট ভাষা [বন্ধ]


12

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

সুতরাং আমার প্রশ্নগুলি নিম্নরূপ:

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

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

উত্তর:


6

আমার পরামর্শ "না" হবে।

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

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

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

আমি ডিএসএল-এর বিরুদ্ধে দৃ strongly়তার সাথে সুপারিশ করতে পারি না।


এর, কেন না? আপনি কি স্রেফ লিস্প ব্যবহার করেছেন, এটি আমার মনে হয় আরও অনেক আনন্দদায়ক অভিজ্ঞতা হতে পারে। :) দ্বিতীয় স্টারক্রাফ্টের স্ক্রিপ্টিং ভাষা গ্যালাক্সি রয়েছে যা প্রকৃতপক্ষে একটি ডোমেন নির্দিষ্ট ভাষা নন-টেক লোক / গালকে লক্ষ্য করে।
জ্যাকোমে

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

2

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

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

  1. গেমটি পুনরায় সংকলন এবং পুনরায় লোড না করে স্ক্রিপ্টগুলি পরিবর্তন করার ক্ষমতা।
  2. নন-প্রোগ্রামারদের স্ক্রিপ্ট লেখার ক্ষমতা।

দুর্ভাগ্যক্রমে, ডিএসএল আপনাকে তা দেয় না।


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

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

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

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

2

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

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

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


2

আমার পরামর্শ হবে: না !

তবে এটির জন্য যদি আপনার কোনও ব্যবহার থাকে।

অভ্যন্তরীণভাবে যদি আপনি কেবল এটি ব্যবহার করতে চলেছেন তবে কোনও ডিএসএল তৈরি করার দরকার নেই।

গ্যালাক্সি হ'ল স্ক্রিপ্টিং ভাষা যা স্টার্টক্রাফ্ট দ্বিতীয় সম্পাদক ব্যবহার করছেন। এটি কোনও ডোমেন নির্দিষ্ট ভাষার একটি প্রধান উদাহরণ।

এটি প্রোগ্রামারদের চেয়ে গেম ডিজাইনারকে লক্ষ্য করে:

Timer - Start Raise Lava Timer as a One Shot timer that will expire in 20.0 Game Time seconds
Variable - Set Raise Lava Timer = (Last started timer)
Timer - Create a timer window for (Last started timer), with the title "Lava will raise in: ", using Remaining time (initially Visible)
Variable - Set Lava Timer Window = (Last created timer window)
Timer - Show (Last created timer window) for (All players)
Variable - Set Lava Death? = false

নমুনা টিউটোরিয়াল

লিসপ হ'ল ডোমেন নির্দিষ্ট ভাষা তৈরি করতে সঠিক ভাষা, তবে অবশ্যই অন্যান্য বিকল্প রয়েছে। বু মত।

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

সম্পাদনা: আমাকে যুক্ত করতে দাও যে কোনও ডিএসএল একটি স্ক্রিপ্টিং ভাষায় প্রয়োগ করা যেতে পারে - এটি কোনও স্ক্রিপ্টিং ভাষা ব্যবহার না করার সমার্থক নয়। বিশেষত যদি আপনি লিস্প বা অনুরূপ ব্যবহার করে থাকেন, যেহেতু এটি ডোমেন নির্দিষ্ট ভাষাগুলি তৈরির জন্য নিজেকে খুব ভাল leণ দেয়।


1

অভ্যন্তরীণ ডিএসএসএলগুলি একটি ভাল এপিআই-তে কেবল সিনট্যাকটিকাল চিনি। এপিআই হ'ল সবচেয়ে গুরুত্বপূর্ণ। আপনার ডিএসএল তৈরির একটি ভাল এপিআই করার পরে এটি তুচ্ছ এবং এটি গুরুত্বপূর্ণ নয়।


0

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

গেমের বিকাশ আরও রূপক-বান্ধব ভাষা, যেমন বু-র দিকে এগিয়ে যায় বলে আপনি কি এটি আরও সাধারণ হয়ে উঠছেন?

আমি মনে করি না যে কোনও ভাষার পক্ষে সমর্থনকারী মোটামুটি একটি নতুন ইঞ্জিন গেম বিকাশের একটি প্রদত্ত দিকের দিকে এগিয়ে যাওয়ার প্রমাণ। এখনও প্রথম দিন।


0

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

তবে আপনার যা প্রয়োজন তা বেশিরভাগ ক্ষেত্রে ডেটা সংজ্ঞায়নের বিষয়ে; আবশ্যক না হয়ে সম্ভবত ঘোষণামূলক; সম্ভবত রাজ্য এবং নিয়ম সংজ্ঞায়িত করে (জিডিএলের মতো); এবং জিপি ভাষা ভালভাবে কাজ করে তার বেশিরভাগের প্রয়োজন নেই, তবে ডিএসএল বিবেচনা করুন।

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.