গো-তে গেমগুলি বিকাশ করছে? [বন্ধ]


40

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

কিছু চিন্তা:

  • Golang.org এর মতে , গো প্রোগ্রামগুলি "তুলনীয় সি বা সি ++ কোডের মতো প্রায় দ্রুত চালায়" - যথেষ্ট দ্রুত?
  • গের আবর্জনা সংগ্রহ কি গেমসের জন্য উপযুক্ত?
  • সাম্প্রতিক গোরোটিনের জমিতে গেম তৈরি করতে কতটা মানসিক পুনরায় সরঞ্জামের প্রয়োজন?
  • উদাহরণস্বরূপ সার্ভার সফ্টওয়্যার সহ গো-কে প্রায়শই "সিস্টেম" -সামান্য ভাষা বলা হয়। এটি শুনে মাল্টিপ্লেয়ার গেম সার্ভারগুলি চিন্তা না করা শক্ত।

আপনার চিন্তাগুলো?


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

1
আপনি যদি গেমস (গেম) এ গেমস তৈরি করতে পারেন তবে আমি অবাক: পি
আরসিআইএক্স

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

@ ডেভিডসি.বিশপ ফানি ...
ব্রায়ান অর্টিজ

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

উত্তর:


34

আপনার প্রশ্নগুলি সম্পর্কে আমার গ্রহণ:

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

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


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

1
বর্তমান গো জিসি সিস্টেমটি কোনও স্থানধারকের কিছু বলে মনে হচ্ছে: "বর্তমান বাস্তবায়নটি একটি সরল চিহ্ন-ও-স্যুইপ সংগ্রাহক তবে একটি প্রতিস্থাপন কাজ চলছে " ( golang.org/doc/go_lang_faq.html#garbage_colલેક્શન )। প্রতিস্থাপন বিকল্পগুলি আলোচনা করা হয়েছে; আমি এই বিষয়ে কোন দৃ decisions় সিদ্ধান্ত সম্পর্কে অবগত নই।
টিসোমকস

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

4
মনে রাখবেন যে বর্তমান গো আবর্জনা সংগ্রাহকের ক্ষেত্রে উপরের উত্তরটি পুরানো। এটি গো 1.5 এর সাথে সম্পূর্ণ আলাদা বলের খেলা। আমি এখনও অবাক হয়েছি যে এটি কতটা উদ্বেগের বিষয়।
জোনাস

3
এবং এটি গো 1.8 এর সাথে মনে হয়, জিসি 100% এর একযোগে বন্ধ হয়ে যাবে world groups.google.com/forum/#!topic/golang-dev/Ab1sFooZg_8
ডোলানর

17

আমি ওএসএক্স-এর জন্য একটি ছোট ইঞ্জিন লিখেছি (গ্রাফিক্স উইন্ডোর জন্য ওপেনগ্ল ব্যবহার করে)। সি ++ গেম ইঞ্জিনগুলির সাথে আমার কিছু অভিজ্ঞতা আছে ( http://morganjeff.weebly.com/ ) এবং এটি সরবরাহ করে এমন কয়েকটি বৈশিষ্ট্য সম্পর্কে পড়ার পরে গো চেষ্টা করার সিদ্ধান্ত নিয়েছি।

গো 1.1 রিলিজ গোতে গেম ইঞ্জিনটি লেখার জন্য আমার প্রয়োজনীয় বৈশিষ্ট্যগুলির বেশিরভাগের জন্য সমর্থন রয়েছে (প্রকৃতপক্ষে একটি ইঞ্জিন হিসাবে গেম কোরটি সম্পাদকদের পরামর্শ দেয় এবং কী না) সহ:

  • সদস্য ফাংশন বাইন্ডিং (মেসেজিং সিস্টেমের জন্য)
  • প্রতিবিম্ব অন্তর্নির্মিত (সিরিয়ালাইজেশন, বাহ্যিক সরঞ্জাম সমর্থন ইত্যাদির জন্য দরকারী)
  • ইন্টারফেস (সিস্টেম, উপাদান ইত্যাদির জন্য বহুমুখী আচরণ বাস্তবায়নের জন্য)

গো (একটি বড় প্রকল্পের জন্য) ব্যবহারের কিছু সুবিধা:

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

সাধারণভাবে যান ব্যবহারের কিছু সুবিধা:

  • রিফ্যাক্টর কোডে সহজ
  • গো থ্রেডিং সমর্থন করে (সি ++ এর বিপরীতে যা উপরে এটি স্তরযুক্ত)
  • সুপার দ্রুত সংকলন গতি স্ক্রিপ্টিং ভাষা সমর্থন জন্য প্রয়োজনীয়তা হ্রাস
  • স্ট্যাটিক টাইপিং সিস্টেম (ইন্টারফেসগুলি হাঁসের টাইপিংয়ের মাধ্যমে পুরোপুরি সন্তুষ্ট হয়)
  • একাধিক রিটার্ন মান, নামযুক্ত প্যারামিটার, ট্যাগ স্ট্রাক বৈশিষ্ট্য
  • দুর্দান্ত বিল্ট-ইন সরঞ্জাম এবং ডকুমেন্টেশন
  • পরিচালিত ভাষা

গো ব্যবহারের কিছু ডাউনসাইড:

  • কোনও ম্যাক্রো বা টেম্পলেট নেই
  • আরও পরিপক্ক ভাষার লাইব্রেরির সমর্থন নেই
  • পরিচালিত ভাষা (উদ্দেশ্য অনুসারে দু'বার তালিকাভুক্ত)
  • কোন আইডিই

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

আমি যে নিবন্ধটি প্রতিশ্রুতি দিয়েছি তা এখানে: http://blog.golang.org/2011/06/profiling-go-programs.html

-Jeff


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

1
"আমদানির অন্তর্নির্মিত সংস্করণ" দ্বারা আপনি কী বোঝাতে চান তা নির্দিষ্ট করতে পারেন, আমি কেবল গো ভাষারই সংস্করণ ট্যাগটি সম্পর্কে সচেতন।
আরনে

@ জোমরগান Go 1.2 এর পরে কোনও দৃষ্টিকোণ পরিবর্তন করে এবং Go 1.3 আসন্ন পরিবর্তনগুলি দেখে?
22

@ আর্ন: শুভ কল! আমি সত্যিই অনেকটা GoSublime এর মতো করি। আইডিইর জন্য আমি যা বোঝাতে চেয়েছি তা হ'ল ভিজ্যুয়াল ডিবাগারটি পেতে আপনাকে গগডবি (যা দুর্দান্ত সরঞ্জাম) ব্যবহার করতে হবে তবে এটি ভিজ্যুয়াল স্টুডিওর মতো সুন্দর নয়। প্যাকেজ নির্ভরতা এবং সংস্করণকরণ সম্পর্কে আমি যা বোঝাতে চাইছিলাম তা এখানে: golang.org/cmd/go/… golang.org/cmd/go/#hdr- আমদানি_পথ_সাইকন্ট্যাক্স
জমরগান

@ ইলুমিনেট: আমি সত্যই বলেছি গো আরও ভাল এবং আরও ভাল হচ্ছে। এটি এখন একটি পরীক্ষার কভারেজ প্যাকেজ সহ আসে, যাতে আপনি পরীক্ষা করে কী তা কী তাড়াতাড়ি দেখতে পারবেন। আমি খুঁজে পেয়েছি যে জায়গায় একটি ভাল টেস্ট স্যুট করা আমার জীবনকে অনেক সহজ করে তোলে ... তাই এটি আমার কাছে একটি বড় বৈশিষ্ট্য। Go 1.3 দেখে মনে হচ্ছে বাইনারি আকার এবং রানটাইম গতির (বিশেষত আবর্জনা সংগ্রহকারী) উন্নতি হতে চলেছে, তাই দুর্দান্ত।
jmorgan

4

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


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

1
আপনি অবশ্যই github.com/go-gl পরীক্ষা করে দেখুন এটি এসডিএল নয় তবে আপনি যদি ওপেনগেল ব্যবহার করেন তবে একটি ভাল বিকল্প alternative ভেক্টরগুলির জন্য github.com/Jragonmiris/mathgl আছে তবে আমি সেখানে বাগ খুঁজে পেয়েছি। গো মেকসগুলি সি লাইব্রেরিগুলিকে মোড়ানো খুব সহজ, মেকফাইলগুলির কোনও প্রয়োজন নেই। আপনি সি হেডার ফাইলগুলি আমদানি করতে পারেন এবং সরাসরি তাদের ফাংশন ব্যবহার করতে পারেন।
আরনে

0

গেমটি ডেভেলপ করতে Go ব্যবহার করবেন না, এটি আপনার গলায় কেবল একটি আলবাট্রস হবে। গেম ডেভেলপমেন্টের জন্য সরঞ্জামচেনটি কেবলমাত্র সেই ভাষার চেয়ে আরও গভীরভাবে প্রসারিত হয় যে আপনি জিনিসগুলি লিখেন যাতে আপনি প্রতিটা বাঁকগুলিতে বাধা খুঁজে পাবেন যা আপনি কেবল কিছু প্রতিষ্ঠিত সাথে যেতে পারলে কেবল সেখানে পাবেন না।

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


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

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