আমি একটি মোডেডেবল গেম করতে চাই এটি কীভাবে আমার প্রোগ্রামিং ভাষার পছন্দকে প্রভাবিত করে? [বন্ধ]


26

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

সুতরাং, কোন প্রোগ্রামিং ভাষার বৈশিষ্ট্যগুলি কোনও ভাষাকে মোডেডেবল গেমগুলির পক্ষে আরও উপযুক্ত করে তোলে?


3
আপনি যদি একটি moddable খেলা করতে চান, তাহলে PhysicsFS সম্পর্কে জানতে খুব দরকারী গ্রন্থাগার হতে পারে। (পদার্থবিদ্যার সাথে এর কোনও যোগসূত্র নেই, নামটি আপনাকে বোকা বানাতে দেবেন না :) :))
পল মান্টা

10
"তবে কেউ আমাকে বলেছিলেন যে যদি আমি গেমটি পরিবর্তনযোগ্য করে তুলতে চাই তবে আমাকে জাভা দিয়ে আটকে রাখা দরকার" এটি, বিএস।
রে দে

উত্তর:


18

এটি নির্ভর করে আপনি কীভাবে আপনার মোড সিস্টেমটি ডিজাইন করতে চান। আমি তাদের দুটি অন্বেষণ করব।

SDK এর

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

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

দ্বিতীয় সমস্যাটি হোস্টিংয়ের। লোকেরা সত্যই পছন্দ করে না যে তাদের সিস্টেমে কোনও স্যান্ডবক্স নেই foreign সবচেয়ে খারাপ পরিস্থিতি হিসাবে আপনি একটি মোড লিখতে পারেন যা একটি সিডবক্স সেট আপ করে; এটি কোনও আইএসপি-তে ইনস্টল করা থাকলে এটি তাদের খ্যাতির জন্য মারাত্মক ক্ষতি করতে পারে।

স্ক্রিপ্টিং

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

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

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

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

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

উপসংহার

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


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

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

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

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

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

16

আমি বলব যে ভাষাটি এখানে কোনও সিদ্ধান্ত নেওয়া ফ্যাক্টর নয়, এটি আপনার গেমটিকে সংজ্ঞায়িত করে এমন কতটা নমনীয় এবং ডেটা-চালিত।

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

এটি যদি আপনি নিজের ব্যক্তিগত ব্যবহারের জন্য উদাহরণগুলি তৈরি করেন (উদাহরণস্বরূপ, আপনার নিজের স্তরের সম্পাদক) এবং পরে সেগুলি নিখুঁত করেন এবং সেগুলি আপনার ব্যবহারকারীদের সাথে ভাগ করেন তবে এটি অর্ধেক পথও রয়েছে। সুপার মাংস বয় স্তর সম্পাদক প্রায় কাছাকাছি যে সরঞ্জামের একটি উন্নত verision খেলার উন্নয়নে সময় ব্যবহার করা হয়েছে।

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


5

আপনি যে ভাষাটি চয়ন করেছেন তা কোনও গেমটি কতটা মোডেটেবল তা নির্ধারণ করতে পারে না, আপনি যেভাবে ভাষাটি ব্যবহার করেন তা গুরুত্ব দেয়।

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

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

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


1

মোডেডেবল গেম লেখার জন্য জাভা পুরোপুরি উপযুক্ত।

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

বিবেচনা করার জন্য কিছু গতিশীল ভাষার পছন্দ:

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

-2

জাভাতে এটি করার একটি উপায় সহজ উপায় যদিও এটি কিছুটা opালু। আপনার যা কিছু করা দরকার তা হ'ল ফোল্ডারে ডট জাভা ফাইলগুলি নিয়ে তারপরে এই ব্যাচ ফাইলটি ফোল্ডারটি দিয়ে রাখুন, নামটি রান করুন:

জাভ্যাক / এসআরসি / জাভা জাভা / এসআরসি /

দ্রষ্টব্য: আপনি যতগুলি ক্লাস চান তা যোগ করতে পারেন। দ্রষ্টব্য: শেষ লাইনে নিশ্চিত করুন যে কোনও এক্সটেনশন ওরফে। জাভা,। এক্সে, .বাট, ect রাখবেন না।

এটি মূলত প্রতিবার গেমটি চালানোর সময় কোডটি পুনরায় সংকলন করবে, সুতরাং গেমের উত্স পরিবর্তন হলে এটি এটি সংকলন করে এবং তারপর নতুন সংকলিত গেমটি চালাবে ... দুঃখের বিষয় আপনি গেমটিতে অন্য লোকের মোডগুলি যুক্ত করতে পারবেন না।


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