আমি কি 2 ডি গেমটিতে টর্চলাইট ইফেক্ট (একটি হালকা উত্সের চারপাশে লাইটার এরিয়া) অর্জন করতে পারি?


16

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

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

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



5
শিরোনামে "টর্চলাইট" টর্চলাইট নামের গেমের কারণে বিভ্রান্ত হতে পারে।
টেট্রাড

4
@ টেট্রাড যতক্ষণ না এর মূলধন না হয় ঠিক আছে। আমার হিসাবে, টর্চলাইট আপনার মন্তব্য পড়া না হওয়া পর্যন্ত মোটেও মাথায় আসে নি।
বিখ্যাতগারকিন

তবুও, আমি শিরোনামটি আরও সুনির্দিষ্ট করার জন্য একটি সম্পাদনার পরামর্শ দিয়েছি।
বিখ্যাতগারকিন

উত্তর:


12

আপনি কী প্রোগ্রামিং করছেন তা আমি জানি না, তবে এক্সএনএতে আমি এটি হ্যান্ডেল করেছিলাম:

  1. ড্র কলটিতে, একটি List<Light>অবজেক্ট তৈরি করা / সাফ করা হয়।
  2. টাইল আঁকার লুপ চলাকালীন, প্রতিটি টাইলের সাথে এটির কোনও লাইট যুক্ত আছে কিনা তা পরীক্ষা করে নেওয়া হয়। যদি এটি হয় তবে Lightঅবজেক্টগুলি যুক্ত করা হবে List<Light>
  3. টাইলস তাদের নিজস্ব আঁকা হয় RenderTarget2D
  4. টাইল লুপের পরে, এর তালিকাটি আমার Lightনিজের মতো RenderTarget2Dকরে দেওয়া একটি টেক্সচার ব্যবহার করে তাদের নিজস্ব দ্বারা পুনরাবৃত্তি করা হবে এবং আঁকা হবে :
    হালকা টেক্সচার(দ্রষ্টব্য: আমি এখানে আর, জি এবং বি মান ব্যবহার করেছি তবে আপনার সম্ভবত আলফা চ্যানেলটি ব্যবহার করা উচিত আসল জমিন।)
  5. একটি কাস্টম শেডার ব্যবহার করে, আমি পর্দাতে টাইলের পৃষ্ঠটি রেন্ডার করি এবং পরামিতি হিসাবে আলোক পৃষ্ঠে পাস করি যা প্রতিটি পিক্সেলের "অন্ধকার" মানের জন্য নমুনা পায়।


এখন, কয়েকটি বিষয় লক্ষণীয়:

পয়েন্ট 4 সম্পর্কিত:

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

5 পয়েন্ট সম্পর্কিত:

লাইটিং রেন্ডার টার্গেটটি মূলত 0 (কালো) থেকে 1 (সাদা) থেকে প্রতিটি পিক্সেলের জন্য একটি মান হিসাবে বিবেচনা করুন। শ্যাডারটি মূলত চূড়ান্ত অঙ্কিত চিত্র তৈরির জন্য টাইল রেন্ডার টার্গেটে পিক্সেলের জন্য আরজিবি মানগুলির তুলনায় সেই মানটি বাড়িয়ে দেয়।

আমার এখানে আরও কিছু কোড রয়েছে যেখানে আমি দিন / রাতের ওভারলে রঙ হিসাবে ব্যবহার করার মতো একটি মান (শেডারে) পাস করি। এটি আরজিবি মানগুলিতেও গুণিত হয় এবং আলোকে রেন্ডার টার্গেট গণনার অন্তর্ভুক্ত করে।


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

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

ওহ, এবং এটি আমার মানচিত্র সম্পাদকে এটি একবার দেখুন:এখানে চিত্র বর্ণনা লিখুন


প্রতিটি ফ্রেম খুব ব্যয়বহুল নাও হতে পারে একটি তালিকা তৈরি এবং সাফ করুন?
গুস্তাভো ম্যাকিয়েল

@ Gtoknu আমার গেমটিতে কোন লক্ষণীয় পার্থক্য তৈরি করে না। তালিকায় কেবলমাত্র বস্তুগুলির রেফারেন্স রয়েছে যা মেমরির মধ্যে ইতিমধ্যে বিদ্যমান তাই এটি প্রতিটি আলো পুনরায় তৈরি করা বা কোনও কিছু নয়, কেবল একটি তালিকা।
রিচার্ড মার্স্কেল - ড্র্যাকির

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

@ গোটোকনু শিওর, আপনি যেখানেই চান তালিকাটি ঘোষণা করতে পারেন তবে পয়েন্টটি হ'ল লাইটগুলি টাইলসের সাথে যুক্ত। টাইল Drawপদ্ধতিটি যেখানে আপনি টাইলটিতে লাইট রয়েছে কিনা তা খুঁজে বের করতে পারেন। আমি Updateপদ্ধতিতে সমস্ত টানা টাইলস লুপ করব না তাই এর জন্য আমি অতিরিক্ত ওভারহেড যুক্ত করব। এছাড়াও, এক্সএনএ গ্যারান্টি দেওয়ার চেষ্টা করে যে Updateএটি প্রতি সেকেন্ডে times০ বার বলা হবে যাতে এটি এর Drawজন্য কলকে ত্যাগ করতে পারে , যার অর্থ এই কোডটি আসলে কম প্রায়ই কল হয়ে যায়।
রিচার্ড মার্স্কেল - ড্রাকির

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

9

সাধারণত, 2 ডি গেমসে আলো আপনার সমস্ত স্প্রাইটের জন্য একটি সাধারণ মানচিত্র রেখে তৈরি করা হয়, তারপরে আপনার 2 ডি স্প্রাইটে 3 ডি আলোকপাতের প্রভাব গণনা করুন। এটি আলগাভাবে "2.5D" হিসাবে পরিচিত। তবে আমি চাই না আপনার প্রথম গেমে এই কাজ যেমন জটিল সুপারিশ।

এক্সএনএ-তে এই কাজটি করেছেন এমন ব্যক্তির একটি দুর্দান্ত ভিডিও এখানে রয়েছে: http://www.youtube.com/watch?v=-Q6ISVaM5Ww

এটি বলেছিল, সম্ভবত ছদ্ম আলো তৈরির উপায় রয়েছে যা বিভিন্ন অনুমানের সাথে কাজ করতে পারে।


ইতিমধ্যে এই ভিডিওটি ইতিমধ্যে দেখেছি, এমন অবিশ্বাস্য কৌশলটির উল্লেখ করার জন্য +1।
গুস্তাভো ম্যাকিয়েল

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

5

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

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

এখানে চিত্র বর্ণনা লিখুন

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

সম্পাদন করা

ক্যাটালিন আরেকটি নিবন্ধের সাথে লিঙ্ক করেছেন যা তিনি রেফারেন্স হিসাবে ব্যবহার করেছিলেন তবে লিঙ্কটি নষ্ট হয়ে গেছে। এখানে একটি আপডেট লিঙ্ক


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