অ প্রোগ্রামারদের জন্য এক্সএনএ গেম মোতায়েনের সুবিধার্থে


12

আমি বর্তমানে আরপিজিতে কাজ করছি, এক্সএনএ থেকে আরপিজি স্টার্টার কিটটি বেস হিসাবে ব্যবহার করছি। (http://xbox.create.msdn.com/en-US/education/catalog/sample/roleplaying_game) আমি একটি ছোট টিমের সাথে কাজ করছি (দুটি ডিজাইনার এবং একটি সংগীত / শব্দ শিল্পী), তবে আমি একমাত্র প্রোগ্রামার। বর্তমানে, আমরা নিম্নলিখিত (অস্থিতিশীল) সিস্টেমের সাথে কাজ করছি: দলটি গেমটিতে যুক্ত করার জন্য নতুন ছবি / শব্দ তৈরি করে, বা তারা বিদ্যমান শব্দ / ছবিগুলি সংশোধন করে, তারপরে তারা তাদের কাজটি একটি সংগ্রহশালায় প্রতিশ্রুতিবদ্ধ যেখানে আমরা একটি বর্তমান বিল্ড রাখি সব কিছুরই. (কোড, চিত্র, শব্দ, ইত্যাদি) প্রতিদিন বা ততদিনে, আমি একটি নতুন ইনস্টলার তৈরি করি, নতুন চিত্র, কোড পরিবর্তন এবং শব্দ প্রতিফলিত করে এবং সবাই এটি ইনস্টল করে।

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

এক্সএনএ ব্যবহার করে টিমের সাথে কাজ করার সময় কি কেউ এর বিরুদ্ধে এসেছেন?


2
এক্সএনএ সমস্ত চিত্র এবং সাউন্ড ফাইল এনকোডিং করে, আপনি কি বোঝাতে চেয়েছিলেন যে সেগুলি এক্সএনএ কনটেন্ট পাইপলাইন দ্বারা নির্মিত এবং .xnb ফাইলগুলিতে রূপান্তরিত হয়েছে?
ডেভিড গাউভিয়া

আমি সঠিক এক্সটেনশনটি মনে করতে পারি না তবে তারা মানক পাইপলাইন দিয়ে যায়, হ্যাঁ।
সাল

উত্তর:


12

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

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

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

  • আপনি যদি উইন্ডোজের জন্য বিকাশ করছেন তবে আপনি আপনার কোডটি পরিবর্তন করতে পারেন যাতে এটি রান্টটাইমে সম্পদগুলি তাদের মূল ফর্ম্যাটে লোড করে, সামগ্রী পাইপলাইনটি না নিয়েই। চিত্রগুলি লোড করার জন্য আপনি ব্যবহার করতে পারেন Texture2D.FromStream( উদাহরণস্বরূপ ) এবং অডিওর জন্য আমি যে সেরা সমাধান খুঁজে পেয়েছি তা হল এর পরিবর্তে FMOD API ব্যবহার করা ( এই উদাহরণটির মতো )। তারপরে তারা কেবলমাত্র সম্পদগুলি সরাসরি অদলবদল করতে এবং গেমটি চালাতে পারে।

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


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

1
@ সেল হ্যাঁ আপনি এটি করতে পারেন। ডকুমেন্টেশন এখানে পরীক্ষা করুন
ডেভিড গাউভিয়া

1
@ সেলটি ডিফল্টরূপে, ভিজ্যুয়াল স্টুডিও দুটি বিল্ড প্রোফাইল তৈরি করে: ডিবাগ এবং প্রকাশ। আপনি দুজনের মধ্যে থেকে অদলবদল করতে পারেন Build->Configuration Manager। ডিফল্ট হিসাবে, ডিবাগ বিল্ডটিতে DEBUGসংকলন চিহ্নটি সংজ্ঞায়িত করা হয়, যার অর্থ আপনি আপনার প্রকাশনাবিহীন কোডটি মোড়ানো করতে পারেন #if ( DEBUG ) doStuffIWouldntDoInRelease(); #elif theActualReleaseCode(); #endif
সাইফার

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

4

পার্টিতে কিছুটা দেরি হলেও এখানে আমার ধারণা।

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

সুতরাং, ধারণাটি হ'ল: আপনার প্রকল্পের মূলটিতে একটি স্ক্রিপ্ট (.Cmd) তৈরি করুন, যেখানে .sln সমাধানটি নিচের পদক্ষেপগুলি সহ স্থির থাকে:

  1. "ভিজ্যুয়াল স্টুডিও 2010 কমান্ড প্রম্পট" চালু করুন:

    "সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও 10.0 \ ভিসি \ vcvarsall.bat" x86 কল করুন

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

  2. কনটেন্ট প্রজেক্ট (। কনটেন্টপ্রজ) এর এমএসবিল্ড কার্যটি কল করুন:

    এমএসবিল্ড / সম্পত্তি: এক্সএনএকএনএন্টেন্টপাইপলাইন টার্গেটপ্লেটফর্ম = উইন্ডোজ / সম্পত্তি: এক্সএনএকএনএন্টেন্টপাইপলাইনট্যারেটপ্রোফাইল = মাইগামকন্টে / প্রজেক্টফিলকন্টেন্টপ্রজ পৌঁছান

    আপনি নির্দিষ্ট বিভিন্ন প্ল্যাটফর্ম / প্রোফাইল দ্বারা বৈশিষ্ট্যগুলি পরিবর্তন করতে পারেন। এমনকি আপনি আরও একবারে আরও প্ল্যাটফর্মের জন্য সামগ্রী তৈরি করতে আরও যেতে পারেন (উইন্ডোজ ফোন, এক্সবক্স 360 বা উইন্ডোজ)। প্রোফাইলটি হ'ল: পৌঁছনো বা হাইডিফ (http://msdn.mic Microsoft.com/en-us/library/ff604995.aspx)

  3. আউটপুটটি পুনরাবৃত্তভাবে অনুলিপিটি ফোল্ডারে অনুলিপি করুন যেখানে বাইনারিগুলি + প্রকৃত গেমটি সংগ্রহস্থলে সংরক্ষণ করা হয়েছে:

    xcopy / d / y / i / e বিন \ x86 \ ডিবাগ \ সামগ্রী * .. \ গেম_আউটপুট \ সামগ্রী

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

  4. কল করুন pauseযাতে স্ক্রিপ্টটি ব্যবহারকারী ইনপুটটির জন্য অপেক্ষা করবে। বিল্ডটি ঠিকঠাক ছিল কিনা এবং কোনও ত্রুটির মুখোমুখি হয়নি কিনা তা পরীক্ষা করতে এটি দরকারী।

এখন, শিল্পী (বা যে কেউ) কন্টেন্ট ফাইলগুলিকে সংশোধন করে, কেবলমাত্র। সিএমডি স্ক্রিপ্টে ডাবল ক্লিক করতে হবে এবং নতুন সামগ্রীটি তৈরি এবং আউটপুট ডিরেক্টরিতে অনুলিপি করা হবে যেখানে পরীক্ষিত নিদর্শনগুলি পরীক্ষিত হবে।

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

এই ধারণাটি নিয়ে শন হারগ্রিভাস কমান্ড লাইন থেকে কন্টেন্ট প্রজেক্টগুলি মিশ্র বিল্ডিং এবং বিল্ডিং সম্পর্কে কিছু পোস্ট করেছেন: http://blogs.msdn.com/b/shawnhar/archive/2006/11/07/build-it-ahead-of- সময় .aspx তাঁর সমাধানটি ছিল একটি নতুন ফাইল তৈরি করা, তবে আমি মনে করি এটি ইতিমধ্যে বিদ্যমান প্রকল্প ফাইলটি সরাসরি ব্যবহার করা সহজ এবং আরও রক্ষণাবেক্ষণযোগ্য।

পিএস: দীর্ঘ পোস্ট এক্সডি এর জন্য দুঃখিত

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