আমি কখন মূল ভাষার বিপরীতে কোনও খেলায় "স্ক্রিপ্ট" বা "স্ক্রিপ্টিং" ব্যবহার করব?


13

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


4
সম্ভাব্য প্রতারিত: gamedev.stackexchange.com/questions/2913/...
Tetrad

@ টেট্র্যাড এই লিঙ্কটির জন্য আপনাকে ধন্যবাদ, তবে আমি মনে করি যে অন্য প্রশ্নটি "কেন" এর মৌলিক আর্কিটেকচার প্রশ্ন সম্পর্কে আরও আলোচনা করে, কী এবং কখন এর বিরোধিতা করে।

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

উত্তর:


15

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

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

এটির বিকাশকারী দলের বেশ কয়েকটি বিশাল সুবিধা রয়েছে যার মধ্যে কয়েকটি আপনি পরবর্তী তালিকাভুক্ত দেখতে পাবেন:

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

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


9

"মূল ভাষা" এর চেয়ে স্ক্রিপ্টিং ব্যবহারের অনেক সুবিধা রয়েছে। এর মধ্যে কয়েকটি অন্তর্ভুক্ত:

  • মূল বিকাশকারীদের থেকে শিল্পীদের কাছে কন্টেন্টের (আরও) সরানো, মূল বিকাশকারীদের গেমপ্লে কার্য থেকে ইঞ্জিন কার্যগুলিতে মুক্ত করে
  • স্ক্রিপ্টগুলি স্যান্ডবক্সযুক্ত হওয়ার প্রবণতা রয়েছে, এতে সত্যিই বিপজ্জনক কিছু করতে পারে না
  • স্ক্রিপ্টগুলি সংশোধন করতে গেমটির পুনঃসংশোধন এবং পুনরায় প্রয়োগের প্রয়োজন হয় না

আপনার প্রথম বুলেট পয়েন্টের জন্য আপনি কার্যকারিতার এক টুকরো উদাহরণ প্রদান করতে পারেন যা শিল্পীদের সম্পাদনা করার জন্য কোনও স্ক্রিপ্টে স্থানান্তরিত হবে?

@ ব্রায়ান রেইনডেল উদাহরণগুলি অস্ত্র / এনপিসি পরিসংখ্যান, এআই এবং মানচিত্র / স্তর হতে পারে।
হ্যাকওয়ার্থ

1
@ হ্যাকওয়ার্থ আপনি কি বলছেন যে এআই প্রোগ্রামিংটি শিল্পীরা করেন? কোনও শিল্পী যে স্ক্রিপ্টিংটি করবেন তাতে অ্যানিমেশন এবং 3D উপকরণ এবং এর জন্য রেকর্ডিংয়ের জন্য স্ক্রিপ্ট অন্তর্ভুক্ত থাকবে।
কেআরবি

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

1
@ জেমস ভাল, মূল কথাটি: তারা "হালকা" প্রোগ্রামিং করে তবে তারা "সামগ্রী" শিবিরে থাকে। সুতরাং পরিভাষা জটিল। =)
জারি কম্প্পা

6

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

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

উদাহরণস্বরূপ (সম্পূর্ণ নির্বোধ উদাহরণ, তবে কেবল পয়েন্টটি পেতে) আপনার গেম কোডটিতে এমন একটি পাবলিক ফাংশন থাকতে পারে যা জম্বিদের কোথাও ছড়িয়ে দেয়:

void SpawnZombie(int x, int y, int hp /* whatever else */)
{
   //...
}

আপনি এখন যে স্ক্রিপ্টিং ভাষা ব্যবহার করেন তা আপনাকে এই ক্রিয়াকলাপটি চলমান স্ক্রিপ্টিং পার্সারে প্রকাশ করতে সক্ষম করে। এর কার্যকরভাবে অর্থ হল যে আপনি একটি পাঠ্য ফাইল খুলতে পারেন, "স্পোনজম্বি (200,300,1337)" লিখতে পারেন এবং আপনার ইঞ্জিনটি কোডটি কার্যকর করার পরে, একটি স্থান একটি জ্যাম্বো সেই জায়গাটিতে ছড়িয়ে পড়বে।

অন্যান্য উত্তরগুলি ইতিমধ্যে এটি কীভাবে ব্যবহৃত হয় তার বেশ কয়েকটি ভাল উদাহরণ তালিকাভুক্ত করে তবে তারা একটি বিষয় রেখে যায় যা আমি খুব গুরুত্বপূর্ণ বলে মনে করি:

এই জাতীয় স্ক্রিপ্টগুলি রানটাইমের সময় গেমপ্লেটি ডিবাগ করা বা পরীক্ষা করা খুব সহজ করে তোলে।

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

স্ক্রিপ্টিং সমর্থন সহ (রানটাইমের সময় আপনার কাছে ইতিমধ্যে পাঠ্য প্রবেশের কিছু পদ্ধতি রয়েছে যেমন সরবরাহ করা যেমন উদাহরণস্বরূপ একটি ডিবাগ কনসোল), আপনি কেবল "স্পোনজম্বি (333,444,555)" টাইপ করুন এবং দেখুন এটি কেমন দেখাচ্ছে।

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

এটি আরও জটিল গেমগুলিতে আপনাকে অনেক সময় সাশ্রয় করবে।


2

1) স্ক্রিপ্টগুলি কোডের চেয়ে প্রায়শই পরিবর্তন করা সহজ are

2) স্ক্রিপ্টগুলি প্রায়শই ক্ষেত্র-পরিবর্তনযোগ্য। এটি গেমটি পরিবর্তনের অনুমতি দেয়।


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

@ ব্রায়ান রিইনডেল: সাধারণভাবে, হ্যাঁ।
লরেন পেচটেল

2

বেশিরভাগ স্ক্রিপ্টিং ভাষাগুলি মূল ইঞ্জিনের ভাষার চেয়ে অনেক বেশি অভিব্যক্তিপূর্ণ। প্রায়শই ইঞ্জিন পারফরম্যান্সের কারণে তুলনামূলকভাবে নিম্ন-স্তরের ভাষায় (যেমন। সি ++) লেখা হয় তবে গেমপ্লে কোডটি পারফরম্যান্ট হওয়ার প্রয়োজন হয় না এবং তাই অগ্রাধিকারগুলি সহজেই কার্যকারিতা প্রকাশ করতে সক্ষম হওয়ার দিকে অগ্রসর হয়।

উদাহরণস্বরূপ, গতিশীল বনাম স্থির টাইপিং। আরেকটি উদাহরণ: আবর্জনা সংগ্রহ বনাম ম্যানুয়াল মেমরি পরিচালনা।


0

স্ক্রিপ্টিং আপনাকে উচ্চ স্তরে যুক্তি লেখার অনুমতি দেয়। অন্য কথায়, আপনি আরও কার্যকারিতা সহ কম কোড লিখুন।

সুতরাং একটি উদাহরণ হিসাবে, নিম্নলিখিত কোডে কিছু লেখার এবং এটি একটি স্ক্রিপ্ট ভাষায় লেখার মধ্যে পার্থক্য দেখায়।

গেম কোড

Update Loop
{
    if (CarExplodeAnimation.FinalFrame == true)
    {
        SceneGraph.Remove(Car);
        Message("You have destroyed the car.";
    }
    else
    {
        CarExplodeAnimation.AdvanceToNextFrame();
    }

}

স্ক্রিপ্ট কোড

PlayAnimation(ShipExplode)  // blocks until animation completes
Message("You have destoryed the car.")

দেখুন আপনি কোনও স্ক্রিপ্টিং ভাষা ব্যবহার করলে ডিজাইনারের কোডিং কতটা কম করতে হবে?

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

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

পরিবর্তে, আপনি চান তার পরিবর্তে আপনার ডিজাইনার কিছু করুন: মানচিত্র সম্পাদকে একটি গাড়ীতে ডান ক্লিক করুন, স্ক্রিপ্ট সন্নিবেশ করুন ক্লিক করুন, স্ক্রিপ্ট কোডগুলি টাইপ করুন। সমালোচনামূলক গেম ইঞ্জিন উত্স কোডগুলির সাথে কোনও গোলযোগ নেই।

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