কার্যকরী ভাষা নিয়ে গেম লেখার চ্যালেঞ্জ এবং সুবিধা কী কী?


81

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

এছাড়াও, নেট নেটওয়ার্কের নতুন সদস্য হিসাবে এফ # এর সাথে এটি সরাসরি এক্সএনএর সাহায্যে ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ, যা এলআইএসপি, হাস্কেল, এরলং ইত্যাদির সাথে যাওয়ার বিপরীতে থ্রেশহোল্ডটিকে কিছুটা কমিয়ে দেয় as

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

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


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

জানতেন না যে এলজিএসপিতে রগ লেখা হয়েছিল, তবে এটি আকর্ষণীয় মনে হয়েছে। ক্লাসিক খেলা। :)
ম্যাকমটনস

2
আপনি কী সম্পর্কে কথা বলছেন তা নিশ্চিত নয়। বিশৃঙ্খল সি লেখা ছিল roguebasin.roguelikedevelopment.org/index.php?title=Rogue
ম্যাসন হুইলার

2
আমি নিশ্চিত যে আপনি আসল রগটি সি-তে রয়েছেন, যেহেতু এটি ইউনিক্সে লেখা হয়েছিল, তবে লিস্পে অবশ্যই বেশ কয়েকটি রোগ ক্লোন রয়েছে: cl-user.net/asp/root-dir (সরাসরি গেমের লিঙ্ক নয়) , এটির এতগুলি বিশেষ অক্ষর ছিল যা দেখে মনে হচ্ছে এটি লিঙ্কেজ ভেঙে গেছে।
সাইক্লোপস

উত্তর:


57

আমি বর্তমানে হাসকেলে একটি গেম নিয়ে কাজ করছি। আমি সাধারণভাবে ফাংশনাল প্রোগ্রামিংয়ের জন্য কথা বলতে পারি না, তবে বিশেষত হাস্কেলের পক্ষে:

ভাল

এগুলি হ'ল অসাধারণ জিনিস যা হাস্কেলকে প্রকৃতপক্ষে দাঁড় করিয়েছে।

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

খারাপ জন

এগুলি এমন জিনিস যা ভাল নয় তবে খুব বেশি প্রচেষ্টা ছাড়াই কাজ করা যায় ।

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

কুৎসিত

এই জিনিসগুলি যা কাটিয়ে উঠতে যথেষ্ট প্রচেষ্টা গ্রহণ করবে।

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

2
আপনি এফআরপি সম্পর্কে কি মনে করেন?
ওয়েই হু

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

1
একজন বেনাম ব্যবহারকারী "কুশ্রী" অংশটি মুছে এই উত্তরটি সম্পাদনা করার চেষ্টা করেছিলেন। "হাস্কেলের আবর্জনা সংগ্রাহক এখন ২০১১ সালের হিসাবে একযোগে, সমান্তরাল এবং প্রজন্মের ( gc.haskell.org/trac/ghc/blog/new-gc-preview )"
জারি কম্প্পা

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

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

19

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

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

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

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


7
আপনি এই উত্তরটি পোস্ট করার পরে এটি 5 বছর অতিক্রম করছে; আপনি এটি আপডেট করতে ইচ্ছুক হবে? বাণিজ্যিক গেম ইঞ্জিনটি কীভাবে কাজ করেছে? কি টুকরা মূল্যবান প্রমাণিত? আপনারা যেমন আশা করেছিলেন তেমন সমান্তরালতার সুবিধা নিতে পেরেছেন?
লেভি মরিসন

17

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

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

  • এফপি লার্নিং কার্ভ: এফপি পুনরুক্তি প্রোগ্রামিং থেকে মানসিকতার একটি সম্পূর্ণ শিফট প্রয়োজন। লুপের চেয়ে মানচিত্র এবং ভাঁজগুলির দিক থেকে ভাবতে শিখতে যদি আপনি এটি ব্যবহার না করেন তবে মানসিক ব্যায়াম প্রয়োজন।
  • ম্যাথ শিখনের বক্ররেখা: হাস্কেল উভয়ই এর নকশাকারীদের গাণিতিক পরিশীলনের দ্বারা আশীর্বাদ ও অভিশপ্ত, কারণ আপনি এফপির বুনিয়াদি শিখার পরে, আপনি মনাদ, রূপ, তীর এবং অন্যান্য বিবেচনার একটি সম্পূর্ণ হোস্টের সাথে আটকে আছেন যা শক্ত না হলেও এবং তাদের মধ্যে, খুব বিমূর্ত।
  • মনডস: এই কুকুরছানাগুলি আপনার মনকে চারপাশে মুড়ে রাখা বিশেষত শক্ত নয়, বিশেষত আপনি যদি এরিক রেমন্ডের এই বক্তব্যকে মেনে নেন যে তারা "ফাংশন কলকে সিকোয়েন্সিং করার জন্য জোর করে ফাংশন রচনাটি রূপান্তর করার জন্য একটি হ্যাক"। দুর্ভাগ্যক্রমে (যদিও এটি জনপ্রিয়তার পক্ষে হাস্কেল লাভ হিসাবে উন্নত হচ্ছে), স্নাতকের অনেক ব্যাখ্যাই হয় বেশিরভাগ প্রোগ্রামারদের মাথাকে লক্ষ্য করে ("তারা এন্ডোফান্টরসগুলির ক্যাটাগরিতে একরকম!"), বা একটি সম্পূর্ণরূপে অস্বাস্থ্যকর উপমা (উদাহরণস্বরূপ) , ব্রেন্ট ইয়ার্জির দুঃখজনকভাবে নির্ভুল উদাহরণ, "মনডস হ'ল বুড়িটোর মতো !" আপনি কি মজা করছেন বলে মনে করছেন? যে টিউটোরিয়ালে কেউ এইরকম বোকা উপমা দিয়ে আসতে পারেনি? আবার ভাবুন ।)
  • বাস্তুতন্ত্র: আপনি যদি রাস্তায় থাকা অন্যান্য সমস্ত ধাপগুলি অতিক্রম করতে সক্ষম হন তবে আপনি এখনও বেশিরভাগ পরীক্ষামূলক ভাষা নিয়ে কাজ করার বাস্তব-দিনের বাস্তবতার বিপরীতে গালাগালি করবেন। আপনি এখানে এলে Godশ্বর আপনাকে সাহায্য করুন। আমি এখানে স্ক্যালাল, বা এফ # বা অন্য কোনও ভাষার জন্য গুরুতরভাবে জোনসিং শুরু করেছি যেখানে অন্যান্য লাইব্রেরির সাথে আন্তঃব্যবহারের অন্তত কিছু গ্যারান্টি রয়েছে। একসময়, আমি উইন্ডোজে ওপেনজিএল লাইব্রেরিগুলি লিঙ্ক এবং লোড করার জন্য হাস্কেলকে পেয়েছিলাম। এটি আমাকে বেশ ভাল লাগছে। তারপরে ওপেনজিএল বাইন্ডিংগুলি আবার প্রকাশ করা হয়েছিল এবং আমি যা কিছু করেছি তা ভেঙে ফেলেছে। হাস্কেল-জমিতে এটাই জীবন। সত্য, এটি একটি ব্যথা হতে পারে। আপনি বুলেট ইঞ্জিনের জন্য একটি মোড়ক চান? এটা তোলে Hackage আছে - যেমন abandonwareগত বছরের নভেম্বর থেকে আপনি ওগ্রে 3 ডি পছন্দ করেন? হ্যাকেজ লাইব্রেরির কেবলমাত্র একটি উপসেটে আবদ্ধ । নীচের লাইনটি হ'ল যদি আপনি গেম বিকাশের জন্য মারধর করার পথে কোনও ভাষা আটকে থাকেন তবে আপনি যদি কেবল ঝাঁকটি অনুসরণ করেন এবং সি ++ এর সাথে আটকে থাকেন তবে আপনি বেসিক নদীর গভীরতানির্ণয় নিয়ে কাজ করতে অনেক বেশি সময় ব্যয় করবেন।

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

অ্যান্টি স্যালোনেনের একটি আকর্ষণীয় ব্লগ রয়েছে যা হ্যাস্কেল গেমস প্রোগ্রামিংয়ের সাথে তার আবার-অফ-অফ সম্পর্কে পুনরায় বর্ণনা করে । এটা পড়া মূল্য।

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


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

5

উদ্দেশ্য ক্যামেল!

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

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

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

এখানে প্রচুর গ্রন্থাগার রয়েছে। কম্পিউটার বিজ্ঞানের স্টাফ থেকে শুরু করে সব ধরণের লাইব্রেরিতে বাইন্ডিং করা রয়েছে।


4

আসলে কোনও কিছুর উত্তর নয়, তবে আমি ফাংশনাল রিএ্যাকটিভ প্রোগ্রামিং (এফআরপি) - http://www.haskell.org/frp/ - এর উল্লেখ না করেই কার্যকরী ভাষায় গেম প্রোগ্রামিংয়ের আলোচনা অসম্পূর্ণ বলে মনে করি - এবং এটির সবচেয়ে সাধারণ বাস্তবায়ন ( আমার মনে হয়?), YAMPA - http://www.haskell.org/yampa/


3

সুবিধাগুলির হিসাবে ক্লিন গেম লাইব্রেরি (http://cleangl.sourceforge.net/) দেখুন এবং প্ল্যাটফর্মার গেমটি দেখুন। একবার সিনট্যাক্সের চারপাশে আপনার মাথা পেলে (আমি আপনাকে চেষ্টা করতে উত্সাহিত করি) আপনি নির্মাণের নিখুঁত কমনীয়তা এবং উত্স মানচিত্রটি তারা যে ধারণাটি প্রকাশ করছেন তাতে কতটা ঘনিষ্ঠভাবে তা দেখতে পাবেন। একটি যুক্ত বোনাস হিসাবে, রাষ্ট্রের বিমূর্ততা এবং স্পষ্টভাবে রাষ্ট্রের চারপাশে পাস করার প্রয়োজনীয়তা আপনার কোডটিকে আরও বহু বহুবান্ধব বান্ধব করে তোলে।

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


2

আমার দৃষ্টিকোণ থেকে সবচেয়ে বড় চ্যালেঞ্জগুলি হ'ল:

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

এই তালিকাটি প্রসারিত করতে নির্দ্বিধায় (এবং সম্ভবত কিছু ইতিবাচক পয়েন্ট যোগ করতে।)।


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

1

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


0

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

যদিও আমি F # শিখিনি তবে এটির সাথে কাজ করা খুব সহজ হতে পারে।


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

-1

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


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

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