জাভাতে কেবল কয়েকটি ভিডিও গেমগুলি কেন লেখা হয়? [বন্ধ]


171

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

এটা কি পারফরম্যান্সের কারণে? যদি তা হয়, তবে ভারী ভারী উত্তোলন বেশিরভাগই জিপিইউ দ্বারা পরিচালিত হবে না?



1
পুন: এমমিয়ার্স; আমি কিছুটা
হতবাক হয়েছি যে

2
হ্যাঁ তবে বেশিরভাগ "রিয়েল গেমস" ম্যানেজড তৈরি হয় না? ঠিক তাই না? সেগুলি পুরানো স্কুলে তৈরি করা হয়েছে সি / সি ++?
হার্ডওয়্যারগুই

14
রুনস্কেপ লেখা আছে জাভাতে।
গেমফ্র্যাক

44
জাভাতে মাইনক্রাফট লেখা আছে!
ডাগ্রাভিস

উত্তর:


155

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

সত্য কথা হ'ল, নেট / জাভা / সি / সি ++ ব্যতীত অন্য কোনও কিছুতে স্যুইচ করার ক্ষেত্রে খুব কম উত্সাহ পাওয়া যায়।

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

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

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

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

আপনি যা করতে পারেন তার ক্ষেত্রে আপনি খানিকটা আরও বাধা: রানটাইম ওভারহেডের কারণে আপনি হার্ডওয়ারটি পুরোপুরি শোষণ করতে পারবেন না। জাভাতে ক্রাইসিস লেখা হচ্ছে তা কল্পনা করুন ... এমনকি যদি এটি কেবলমাত্র দৃশ্যমান পার্থক্য হয় তবে এটি কেবল একই হবে না (আমি এটিও নিশ্চিত যে এটি চালানোর জন্য আপনার একটি কোর আই 7 প্রয়োজন))

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

বাণিজ্যিক গেমের হিসাবে - রুনস্কেপ কি গণনা করে? এটি সম্ভবত সবচেয়ে সফল জাভা গেম হতে পারে।


16
ভাল আপনি স্পষ্টতই JVM এ ক্রেসিস চালাতেন না; হ্যালো, আপনি যদি সেই খেলাটি অ্যাসেম্বলি ভাষায় কোড করে থাকেন তবে এটিকে পুরো সেটিংসে চালানোর জন্য আপনার এখনও একটি সুপার কম্পিউটারের প্রয়োজন। তবে দুর্দান্ত অন্তর্দৃষ্টিটির জন্য +1, আপনাকে ধন্যবাদ।
সাশা চেদিগোভ

15
আপনি অবাস্তব টুর্নামেন্ট 3 বা ক্রাইসিসকে রানেসকেপের সাথে তুলনা করতে পারবেন না। যদি গ্রাফিকের মানটি উদ্বেগজনক হয় তবে আপনার যতটা সম্ভব ওভারহেডের সাথে নিম্ন স্তরের ভাষার সাথে থাকা উচিত। অবশ্যই, ইন্ডি বা গেমসের জন্য যেখানে গ্রাফিকগুলি মূল বিক্রয় কেন্দ্র নয়, জাভা সি / সি ++ এর একটি দুর্দান্ত বিকল্প।
গুইসিম

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

4
গ্রাফিক্সের ভাষাটির সাথে সত্যিই খুব সামান্য সম্পর্ক রয়েছে। পদার্থবিজ্ঞান, এআই, হ্যাঁ গ্রাফিক্স, না।
জুলিয়ানআর

10
@ জুলিয়ানআর দক্ষতার সাথে রেন্ডার করার জন্য দৃশ্যের প্রস্তুতি ও রক্ষণাবেক্ষণের জন্য গুরুত্বপূর্ণ কাজের চাপ থাকতে পারে, সুতরাং ভাষা এবং সম্পর্কিত ভাষা ওভারহেড গ্রাফিক্সের জন্য গুরুত্বপূর্ণ।
কেএসমিড্ট

95

আমি মনে করি জন কারম্যাক এটি দিয়ে সেরা বলেছেন:

বৃহত্তম সমস্যাটি হ'ল জাভা আসলেই ধীর। খাঁটি সিপিইউ / মেমরি / ডিসপ্লে / যোগাযোগ স্তরগুলিতে, বেশিরভাগ আধুনিক সেল ফোনগুলি গেম বয় অ্যাডভান্সডের চেয়ে যথেষ্ট ভাল গেমিং প্ল্যাটফর্ম হওয়া উচিত। জাভা সহ, বেশিরভাগ ফোনে আপনার কাছে একটি আসল 4.77 মেগাহার্টজ আইবিএম পিসির সিপিইউ পাওয়ার এবং সমস্ত কিছুর উপরে লস নিয়ন্ত্রণ নিয়ন্ত্রণ থাকে। [... স্নিপ ...] একবারে রান করুন যেখানেই লিখুন। হা। হা হা হা হা হা. আমরা এখনই কেবলমাত্র চারটি প্ল্যাটফর্মে পরীক্ষা করছি, এবং একক জুটিরও ঠিক একই রকম কোচ নেই। সমস্ত বাণিজ্যিক গেমগুলি প্রতিটি (প্রায়শই 100+) প্ল্যাটফর্মের জন্য স্বতন্ত্রভাবে টুইট করা এবং সংকলিত হয়। বহনযোগ্য পারফরম্যান্সের জন্য বহনযোগ্যতা কোন ন্যায়সঙ্গততা নয়।

( উত্স )

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


60
সেই উক্তিটি ২০০৫ সালের। জাভা প্রযুক্তি এবং সেলফোন শক্তি উভয়ই তখন থেকেই যথেষ্ট উন্নতি করেছে। সেলফোন গেমিং বনাম পিসি গেমিংয়ের সাথে আপেল কমলার সাথে তুলনা করা হচ্ছে।
ক্রিস ডেইল

78
জন কারম্যাক এটি বলেছে। মামলা বন্ধ.
গুইসিম

41
আমি "জাভা সত্যিই ধীর গতি" পড়ার সময় আমি অস্বস্তি বোধ করি। এটি বলার মতো $ 50k স্পোর্টস গাড়িটি $ 100k স্পোর্টস গাড়ির তুলনায় ধীর। অবশ্যই, এটি ধীর, তবে 90% সময়, এটি যে কাজটি করে তা এখনও দুর্দান্ত এবং অর্ধেক ব্যয়ে;) কোনও শিখা যুদ্ধের উদ্দেশ্য নয়। আমি সম্মত হই যে উপরের কারণগুলি কেন জাভায় ক্রাইসিস এবং লাইক-গেমগুলি লিখিত হয় না।
রস

17
@ ক্রিস ডেইল, এটি জাভা পারফরম্যান্সের সাথে পুরো বিষয়টি আন্ডারস্কোর করে। জাভা পারফরম্যান্স উন্নতি হয়েছে? না, সেল ফোনগুলি সবেমাত্র দ্রুত পেয়েছে। গেমসটি বাস্তবতার সীমাবদ্ধতার দিকে ঠেলে দেবে, এবং তাই হার্ডওয়ারের সীমাবদ্ধতাকে ঠেলে দেবে এবং কোডের একটি লাইন এমনকি লেখার আগে আপনার পারফরম্যান্সের% 30-% 40 ফেলে দেবে তা গ্রহণযোগ্য নয়।
সিজিপি

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

54

একটি জিনিস হিসাবে, জাভার অপারেটর ওভারলোডিংয়ের অভাব আপনাকে একটি গণিতের কাজ করা গ্রাফিক্স পাইপলাইনটি খুব, খুব বিরক্তিকর এবং পড়ার জন্য কঠিন করে তোলে।

আপনার যে ম্যাট্রিক্স গুণ এবং affine ভেক্টরগুলির সাথে মোকাবিলা করতে হবে তাদের সবগুলি অনুসরণ করা যদি খুব সহজ হয় তবে তারা যদি বস্তু-ভিত্তিক মত প্রকাশের পরিবর্তে সুগঠিত গাণিতিক এক্সপ্রেশনগুলিতে থাকে তবে

product = vector.multiply(projectionMatrix).dotProduct(otherVector);

এটাই ভয়াবহ। ম্যাথের মতো দেখতে হবে না।


19
আমার মনে আছে '96-এ আমি মনে করি এটি ছিল, সান থেকে কিছু ডিজাইনার বার্কলে জাভাতে একটি উপস্থাপনা দিচ্ছিলেন। উইলিয়াম কাহান ( এন.ইউইউইকিপিডিয়া.আরউইকি / উইলিয়াম_কাহান ) তাদের এই খুব ইস্যুতে শ্রুতিমধুরতা দিচ্ছিলেন। :)
জেপি আলিওটো

13
আমি মনে করি কোনও ভাষায় অপারেটরকে অতিরিক্ত লোড না করার পক্ষে যুক্তিসঙ্গত কারণ রয়েছে: লোকেরা এটির ব্যবহার থেকে বিরত রাখতে। এটি একটি শক্তিশালী হাতিয়ার এবং গণিতের জন্য খুব দুর্দান্ত, তবে অন্য সব কিছুর জন্যই বিপজ্জনক। কোডাররা যেমন অলস, তারা কোডটি সংক্ষিপ্ত করার জন্য এটিকে মিস করতে থাকে এবং যে মুহুর্তে লোকেরা কোনও ফাংশন দিয়ে পুনরাবৃত্তিযোগ্য একটি মানচিত্র সম্পাদন শুরু করে বা সমস্ত গাণিতিক অপগুলি ফাংশনের জন্য সংজ্ঞায়িত করা হয় তখনও কোড পাঠ্যতা ০.০ এ পৌঁছায় এবং হ্যাঁ, আমি পোর্টিং কোডের মতো যথেষ্ট পরিমাণ সময় ব্যয় করেছি। : -S এটি একটি নকশা পছন্দ। এবং নকশা পছন্দ সর্বদা বিতর্কিত হতে থাকে।
back2dos

19
কয়েকটি খারাপ আপেলের জন্য সবাইকে শাস্তি দিন? এটি একটি কারণ যা আমি সি # কে পছন্দ করি। আমার যদি সত্যিই অপারেটরটির ওভারলোডিং দরকার হয় তবে তা রয়েছে।
কেওসপ্যান্ডিয়ন

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

1
@ এমএমজেজেড: অপারেটর ওভারলোডিংয়ের সাথে ল্যাম্বডা এক্সপ্রেশনগুলির কী সম্পর্ক রয়েছে?
সাশা চেদিগোভ

26

আমি মনে করি। নেট এর কাছে জাভাতে একই ধরণের সমস্যা রয়েছে) মাইক্রোসফ্ট এক্সএনএ :-) সহ বিকাশকারীদের বিপণনে সবেমাত্র একটি ভাল কাজ করেছে


10
এক্সএনএ আপনার। নেট অ্যাপ্লিকেশনটি এক্সবক্সে স্থাপন করাও সম্ভব করে তোলে। আমি জাভার পক্ষে এতটা মসৃণ কিছু দেখিনি।
স্ট্রিপলিং ওয়ারিয়র

আপনি জুনেও স্থাপন করতে পারেন।
সিবিউকার

একটি পুরানো প্রশ্নের বিট, তবে কেবল আপডেট করার জন্য, আপনি এখন উইন্ডোজ ফোনের জন্য এক্সএনএ গেমসও লিখতে পারেন :-)
জোয়েল মার্টিনেজ

3
@ জোয়েলমার্টিনেজ আরেকটি আপডেট: উইন্ডোজ ফোন ৮ এর জন্য এক্সএনএ গেমগুলি লেখা সম্ভব নয়
টমাস অ্যান্ড্রেল

@ টোমা এখন ডাব্লুপি 8-এর জন্য মনোগেম গেমগুলি লেখা সম্ভব
অ্যালেক্স লাপা

17

গৌণ পয়েন্টগুলি প্রথম:

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

  • "নিখরচায়" ক্রস প্ল্যাটফর্মটি আপনার মনে হয় ততটা ভাল নয় কারণ অল্প কিছু বিকাশকারী ওপেনজিএল ব্যবহার করতে চান এবং বেশ কয়েকটি কী প্ল্যাটফর্মগুলিতে গ্রাফিক্স, অডিও, নেটওয়ার্কিং ইত্যাদির জন্য তাদের স্থানীয় গ্রন্থাগারগুলির জন্য সম্ভবত জাভা বাস্তবায়ন বা র‍্যাপারগুলির অভাব রয়েছে probably

তবে প্রধানত, বিষয়টি পিছনের সামঞ্জস্য। গেমস বিকাশকারীরা সি থেকে+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ খ্রিস্টাব্দে মাইগ্রেশন রুটটি মসৃণ হওয়ার কারণে সিলেকশন থেকে সি ++ এবং এসেম্বলি থেকে সি তে সরানো হয়েছিল। প্রতিটি পূর্বের সাথে ঘনিষ্ঠভাবে আন্তঃসংযোগ স্থাপন করে এবং তাদের সমস্ত পূর্ববর্তী কোড প্রায়শই একক সংকলকের মাধ্যমে নতুন ভাষায় ব্যবহারযোগ্য was সুতরাং মাইগ্রেশনটি আপনার পছন্দ মতো ধীর বা তত দ্রুত ছিল। উদাহরণস্বরূপ, আমাদের ব্যবহৃত কিছু পুরানো শিরোনামের এখনও #ifdef WATCOMC রয়েছেইন, এবং আমি মনে করি না যে কেউ এখানে এক দশক বা তারও বেশি সময়ে ওয়াটকমের সংকলক ব্যবহার করেছে। পুরানো কোডে বিশাল বিনিয়োগ রয়েছে এবং প্রতিটি বিট কেবলমাত্র প্রয়োজন অনুসারে প্রতিস্থাপন করা হয়। বিট এবং টুকরোগুলি এক গেম থেকে পরের দিকে প্রতিস্থাপন ও আপগ্রেড করার যে প্রক্রিয়াটি আপনি যদি এমন ভাষাতে পরিবর্তন করেন যা স্থানীয়ভাবে আপনার বিদ্যমান কোডের সাথে আন্তঃব্যবহার করে না। হ্যাঁ, সি ++ / জাভা আন্তঃক্রিয়াশীলতা সম্ভব, তবে কেবল "সি +++ এর সাথে সি লিখুন" বা সিটিতে এসএম ব্লক এম্বেড করার সাথে তুলনা করে খুব অবৈধ ical

গেম ডেভেলপারদের পছন্দের ভাষা হিসাবে সি ++ সঠিকভাবে সুপারসইড করতে, এটি দুটি জিনিসের মধ্যে একটি করে অবশ্যই করতে হবে:

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

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


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

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

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

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

1
@ বিল্ক - আপনার কাছে ভুল লেখা রয়েছে বলে মনে হচ্ছে। আমি কেবল 'উত্পাদনশীলতা' - এর সাথে "পারফরম্যান্স" -র উল্লেখ না করে সিনট্যাক্সের উল্লেখ করেছি। এটি সত্য যে জেআইটি অপ্টিমাইজেশানগুলি জাভাটিকে তত্ত্বের ভিত্তিতে দ্রুততর করে তুলতে পারে, তবে এটি বাস্তবে ঘটে না, অন্তত গেম সফটওয়্যারটিতে নয়।
কাইলোটন

12

আমি সিমস 3 খেলছি, এবং আমি কিছুটা আশপাশে করেছি। গ্রাফিক্স ইঞ্জিনটি সি ++, যখন স্ক্রিপ্টিং এবং আচরণ ইঞ্জিনটি সি # / মনো। সুতরাং সি ++ সময় সমালোচনামূলক বিটের জন্য রয়েছে, অন্য জিনিস যেমন ইনটেকশন, গেম লজিক, এআই কোনও অবজেক্ট ওরিয়েন্টেড পরিচালিত ভাষায়।


5
এবং তারপরে ম্যাক সংস্করণে তারা পুরো জিনিসটি একটি পরিবর্তিত ওয়াইন ভার্চুয়াল মেশিনের ভিতরে সরিয়ে দেয়। সোজা জাভাতে এটির চেয়ে আরও দ্রুত আমি মনে করি :-)
বেন গোটো

10
ওয়াইন কোনও ভার্চুয়াল মেশিন নয়, এটি একটি রানটাইম লাইব্রেরি যা উইন্ডোজ রানটাইম লাইব্রেরির আচরণ নকল করে। সুতরাং নাম (ওয়াইন ইজ নট এমুলেটর)।
নেট সি কে

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

এটি ভ্যানিলা মনো নয়, যদিও। EA এ কাজ করার জন্য তাদের নিজস্ব কাস্টম সিএলআর পূর্ণ-সময় নিয়ে কাজ করার জন্য একটি বিশেষ দলের প্রয়োজন।
ক্র্যাশ ওয়ার্কস

4
সিমস 3 কেবলমাত্র একটি ভাল কম্পিউটারেও দক্ষতা না দেখানোর জন্য কুখ্যাত Just
পদ্ম নোট

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

1
গা the় পাঠ্যের জন্য +1। লোকেরা বুঝতে পারে না যে যখন আপনার গেমটি 20 fps এ চলে তখন প্রায়শই এটি হার্ডওয়ার 20 fps তে আবদ্ধ থাকে। এটি সত্যই 30+ এফপিএসে যেতে চায় .. তবে এটি পারে না।
গুইসিম

আমি মনে করি না যে এটি সমস্যা কেবলমাত্র পারফরম্যান্স অনুযায়ী জিসি ... এমনকি ধীর সূচনা পর্বের সাথেও মিলিত হয়নি ... এটি সাধারণ পারফরম্যান্সের বিষয়, তবে এটি কেবল আমারই।
রজারডপ্যাক

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

10

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

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

এটি জাভা ধীর গতির নয়। এটি জাভা রিয়েলটাইম টাস্কগুলি পরিচালনা করতে ভাল নয়।


1
আপনি যাইহোক, কোনও নতুন পরিবেশে জাভা বন্দর যেতে না পারলে আপনি আবর্জনা সংগ্রহকারীর জন্য নিজের সময়সূচি লিখতে পারেন। মেমরিটি যে কোনও উপায়ে পুনরুদ্ধার করতে হবে, এবং একটি রিয়েল-টাইম পরিবেশে, আপনার কম্পিউটারের সময় নির্ধারণ করার সময় ... উভয় বিশ্বের সবচেয়ে ভাল বিকল্প থাকতে পারে। আমাকে এই স্থানে ফিরে যেতে হবে যে সি / সি ++ আপনার জন্য ইতিমধ্যে এই জিনিসগুলি করার সময় জাভা কোনও আর্কিটেকচারে পোর্ট করার কোনও কারণ নেই you জাভা অন্য জায়গায় জ্বলজ্বল করে।
সান জ্যাকিন্টো

5
এটি 1990 এর দশক নয়। কম বিরতির জন্য সুর করা হলে আবর্জনা সংগ্রহকারীরা এখন বেশ ভাল।
টম হাটিন -

8

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

সম্পাদনা: এটি বলতে এটি "গতি" বা "সঠিক লাইব্রেরি নেই" এর চেয়ে বেশি। এই দুটি জিনিসই এটির সাথে মিলিয়ে যায় তবে এটি "সেলটি আমার জাভা কোডটি চালানোর মতো একটি সিস্টেমকে কীভাবে তৈরি করব? আসলে পাইপলাইনগুলি এবং ভেক্টরগুলি পরিচালনা করতে পারে এমন কোনও ভাল জাভা সংকলক আসলেই নেই of যেমন আমার দরকার .. "


7

পারফরম্যান্স ইস্যু প্রথম কারণ। আপনি যখন কোপাল ইঞ্জিনগুলিতে থাকা হাইপার অপটিমাইজড সি ++ কোড দেখতে পান ( http://www.codemaestro.com/reviews/9 ), আপনি জানেন যে তারা ভার্চুয়াল মেশিনের সাহায্যে তাদের সময় নষ্ট করবেন না।

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

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


3
"ক্রস প্ল্যাটফর্ম কেবল ভিডিও গেম সংস্থাগুলির মনে নেই" - এজন্য আমি যে সংস্থাগুলি করে তাদের সম্পূর্ণ সম্মান করি। :)
সাশা চেদিগোভ

ক্রস প্ল্যাটফর্ম এবং ওপেন সোর্স উভয় ক্ষেত্রেই তাই প্রতিজ্ঞাবদ্ধ হওয়ার জন্য আমি অবশ্যই কারম্যাকের কাছে কৃতজ্ঞ grateful বেশিরভাগ সংস্থাগুলি যা মনে করেন আমি কেবল তা জানিয়ে দিয়েছি।
Ksempac

1
সেটা সত্য. আপনি লিনাক্সে প্রচুর জনপ্রিয় ভিডিও গেম দেখতে পাচ্ছেন না। :(
সাশা চেদিগোভ

ক্রস প্ল্যাটফর্মটি কেবল ওএসকে অতিক্রম করে না। PS3, Xbox 360, Wii এর কথা ভাবেন।
জুলিয়ানআর

"ভার্চুয়াল মেশিনের সাহায্যে তারা তাদের সময় নষ্ট করবে না।" en.wikedia.org/wiki/Quake_III_Arena# ভার্চুয়াল_ম্যাচাইন , কারম্যাক গেম যুক্তির জন্য নিজের তৈরি করেছিলেন।
জেমস ম্যাকমাহন

4

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

জাভাতেও কোনও সরাসরি হার্ডওয়্যার অ্যাক্সেস নেই, যার অর্থ আপনি কোনও ফ্রেমওয়ার্কের API এ আটকে আছেন stuck


জাভা "
জেএনআই

4
... এবং আপনি যখন থাকবেন তখন বহনযোগ্যতা হারাবেন!
LiraNuna

1
আপনি জেএনআই ব্যবহার করার সময় আপনি সত্যিই খুব বেশি বহনযোগ্যতা হারাবেন না। আপনি যে প্ল্যাটফর্মগুলিকে সমর্থন করতে চান সেগুলিতে আপনি এখনও দেশীয় গ্রন্থাগারগুলি সংকলন করতে সক্ষম হলেন তবে এটির মূল অর্থ কেবল আপনাকে নিজের কোডের সমস্ত 1% এর পরিবর্তে কেবল পোর্ট / পুনরায় সংকলন করতে হবে। আপনি এখনও জাভা বহনযোগ্যতা থেকে প্রচুর সুবিধা পেতে পারেন।
bgroenks 16'13

4

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


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

4

উইকিপিডিয়ায় গেম ইঞ্জিনগুলির তালিকায় অনেক গেম ইঞ্জিনের সাথে প্রোগ্রামিং ভাষার পাশাপাশি তারা লিখিত রয়েছে lists

বেশ কয়েকটি জাভা গেম ইঞ্জিন তালিকাভুক্ত রয়েছে।

কয়েকটি লিঙ্কে ক্লিক করা আপনাকে জাভাতে লেখা গেমস এবং ডেমোগুলির উদাহরণগুলিতে নিয়ে যাবে। এখানে একটি দম্পতি:

নির্দিষ্ট গেম এবং পরিস্থিতির জন্য জাভার ট্রেড-অফগুলি গ্রহণযোগ্য হতে পারে।


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

3

তীব্র 3 ডি পারফরম্যান্সের ক্ষেত্রে জাভাতে .NET অবশ্যই কিছু একই সমস্যা রয়েছে। মাইক্রোসফ্ট 3 ডি ভারী অপারেশন নিয়ে কাজ করার সময় লাইব্রেরিগুলির বিকাশে আরও অনেক বেশি সময় এবং অর্থ বিনিয়োগ করেছে।

(... ব্যক্তিগতভাবে, আমি আরও মনে করি যে ডাইরেক্টএক্স এবং। নেট এর মধ্যে যাদু করার বিষয়টি আসে তখন তাদের একটি পা ছিল)


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

  2. কনসোলগুলিতে জাভা বিদ্যমান নেই এবং কনসোলগুলি বাণিজ্যিক গেমগুলির জন্য একটি প্রধান লক্ষ্য। আপনি যদি পিসিতে জাভা ব্যবহার করেন, আপনি যুক্তিসঙ্গত সময় এবং বাজেটের মধ্যে কনসোলগুলিতে পোর্ট করার ক্ষমতা সরিয়ে দিচ্ছেন।

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

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


3
আপনি জিপিইউতে প্রচুর অফলোড করতে জাভাসিএল, জোকিএল বা এপারাপি ব্যবহার করতে পারেন।
বিগ্রোয়ঙ্কস

2

আসলে, 3 ডি গেমস পরিচালিত কোডের পক্ষে এটি খুব সম্ভব, সমস্যাটি পিছনের ইঞ্জিনগুলির। নেট দিয়ে, একটি সংক্ষিপ্ত সময়ের জন্য, মাইক্রোসফ্ট দ্বারা ডাইরেক্টএক্স 9 এ একটি পরিচালিত ডাইরেক্টএক্স র‌্যাপার ছিল। এটি বিমূর্তির আগে ছিল যা এখন এক্সএনএ।

ডাইরেক্টএক্স এপিআই-তে মোট অ্যাক্সেস দেওয়া হচ্ছে। নেট গেমগুলি ট্রিট কাজ করে। আমি সবচেয়ে ভাল উদাহরণটি জানি যা হ'ল www.entombed.co.uk, যা ভিবি.নেটে লেখা হয়েছে।

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


2

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


1

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

পিএস 3 এর জাভা রয়েছে, নীল রশ্মির সাহায্যে। বিডি-জে সাইটটি দেখুন।


1

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

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

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


1

আমি প্রিসিস্টিং / লাইসেন্সড কোডবেস, পারফরম্যান্স ইত্যাদির উপাদানগুলির সুবিধা দেওয়ার বিষয়ে অন্যান্য পোস্টগুলির সাথে একমত

একটি জিনিস আমি যুক্ত করতে চাই তা হ'ল ভার্চুয়াল মেশিনের মাধ্যমে কদর্য ডিআরএম কৌশলগুলি আঁকানো শক্ত।

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


0

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


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

2
তবে প্রশ্নের অন্ধ বিবৃতি জাভাতে কোনও গেমস রচিত নয় এমন ধারণাটি নিয়ে যায়, যেখানে এটি কোথায় রয়েছে তার সফল ক্ষেত্রে ইঙ্গিত করে।
মার্ক শুলথিস

0

ইতিমধ্যে এটি সম্পর্কে অনেক আগেই কথা হয়েছিল, আপনি উইকির কারণগুলিও খুঁজে পেতে পারেন ...

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

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

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

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

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

এবং যোগ করার জন্য, না, গেমিংয়ের জন্য জাভা এখনও একটি ভয়ঙ্কর ধারণা। মাত্র কয়েক দিন আগে একটি বড় কোম্পানী যা আমি তাদের খেলা rewriting শুরু নাম হবে ক্লায়েন্ট সি জাভা ++ থেকে কারণ একটি খুব সহজ খেলা (গ্রাফিক্স নিরিখে) সাপেক্ষে বেশ পিছিয়ে পড়েছে ছিল এবং শক্তিশালী এনভিডিয়া জিটি 5xx সঙ্গে আই 7 ল্যাপটপ ও 6xx প্রজন্ম ভিডিও কার্ড গরম ( কেবল এনভিডিয়া নয়, এখানে মূল বক্তব্যটি হ'ল এই শক্তিশালী কার্ডগুলি যা সর্বাধিক নতুন গেমসকে ম্যাক্স সেটিংসে পরিচালনা করতে পারে এবং এই গেমটি পরিচালনা করতে পারে না) এবং মেমরির খরচ ছিল ~ 2.5 - 2.6 গিগাবাইট রাম। এই জাতীয় সহজ গ্রাফিক্সের জন্য এটি একটি মেশিনের একটি জন্তু দরকার।


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

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

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

1
@bgroenks "100%" - দেখে মনে হচ্ছে আপনার সি / সি ++ সম্পর্কে কোনও ধারণা নেই ... এবং গেম তৈরি করার সময় আপনি সর্বদা ক্রস-প্ল্যাটফর্ম লাইব্রেরি (এসডিএল এবং অন্যদের একগুচ্ছ) বা ফ্রেমওয়ার্ক (উদাহরণস্বরূপ Qt) ব্যবহার করতে পারেন। উদাহরণস্বরূপ: EA তাদের প্রতিটি গেমের জন্য Qt ব্যবহার করে ... Qt জাভা এর চেয়ে বেশি ক্রস-প্ল্যাটফর্ম এবং এটি স্থানীয় কোডে সংকলন করে।
লিলিয়ান এ মোরাড়ু

2
আমি জাভাতে পয়েন্টটি সত্যিই দেখতে পাচ্ছি না যখন আপনি Qt করে থাকবেন। আমি কিউএটি কোডটি জাভা কোডের চেয়ে আরও স্পষ্ট, বোঝা সহজ এবং বজায় রাখি। আমি যখন আমার বন্ধুদের জিজ্ঞাসা করি তারা কেন সি +++ এর জন্য এতটা ভয় পায় তারা সর্বদা আমাকে বলে যে তারা পয়েন্টারকে ঘৃণা করে এবং মেমোরিটি হ্রাস করতে নিশ্চিত করে। দেখে মনে হচ্ছে অনেক লোক সি ++ তে শেয়ারড_পিটার সম্পর্কে জানে না ... আমার জন্য, কিউটি এবং সি #। নেট / সি ++। নেট লিখতে সবচেয়ে ভাল Java (এটি বেশিরভাগ ক্ষেত্রে কেবল সার্ভারের পক্ষে ভাল কাজ করছে তবে বাকী ...) এবং প্রায়শই পুরানো ডকুমেন্টেশন।
লিলিয়ান এ মোরাড়ু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.