গেম বিকাশের সাথে সংস্করণ নিয়ন্ত্রণ - কখন আমার শাখা করা উচিত?


26

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

সংস্করণ নিয়ন্ত্রণ ব্যবহারের বৈশিষ্ট্য এবং সুবিধাগুলি ধীরে ধীরে আবিষ্কার করার সাথে সাথে আমি শাখার ধারণাটি সম্পর্কে আটকে আছি। আমি কখন এটি করা উচিত?

আমি যখন যাব এবং প্রতিবার নতুন বৈশিষ্ট্যটি বিকাশ করি বা যখন আমি নির্দিষ্ট মাইলফলকে পৌঁছায় তখন একবারে একবারে কি হওয়া উচিত?

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

আমি যখন মাইক ম্যাকশ্যাফ্রি (যা উপায় দ্বারা একটি দুর্দান্ত বই) এর গেম কোডিং কমপ্লিট বইটি পড়ছিলাম , তখন লেখক আমি পুরোপুরি হারিয়ে গেলাম যখন লেখক তিনটি শাখা রাখার পরামর্শ দিয়েছিলেন:

  • প্রধান : প্রধান উন্নয়ন শাখা যেখানে নিয়মিত পরিবর্তন করা হয়।
  • স্বর্ণ : সোনার শাখা যেখানে শেষ মাইলফলকটি পৌঁছেছে তা রাখা হয়েছে।
  • গবেষণা : স্টাফ পরীক্ষা করার জন্য শাখা যা মেইন শাখাকে খারাপভাবে প্রভাবিত করতে পারে (গেম ইঞ্জিনের গুরুত্বপূর্ণ উপাদানগুলি পরিবর্তন করে)।

এটা কি এভাবেই হওয়ার কথা? এটি ডেভেলপারদের বড় দলগুলির সাথে কীভাবে গেম ডেভলপমেন্টের বিশ্বে কার্যকরভাবে কাজ করে?

মূলত: কখন গেমের বিকাশে কোনও শাখা (এবং মার্জ) হয়?

উত্তর:


32

ব্রাঞ্চিং বৈশিষ্ট্যটির জন্য ভিসিএস সহায়তার উপর কিছুটা নির্ভর করে (যেমন: ভিসিএস এটি সহজ বা কঠিন করে তোলে কিনা)।

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

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

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

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

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


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

8

ইতিমধ্যে উপরে একটি দুর্দান্ত উত্তর তবে একটি বিষয় লক্ষ্যণীয় যে আপনি কখন শাখা করতে চান এবং কখন আপনি ট্যাগ করতে চান।

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

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

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


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

1

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

যেমনটি আপনি বলেছেন, আপনি যদি ভাল অভ্যাসগুলি বেছে নিতে চান তবে আমি মাইকের পদ্ধতির সাথে যাব। এটি আমার বুদ্ধিমানের ইন্ডি প্রজেক্টগুলিতে অনেকটা জ্ঞান এবং তার দৃষ্টিভঙ্গি ব্যবহার করে।


1

আপনার ফিরে যেতে এবং আরও বেশি কাজ করার জন্য যে কিছুর প্রয়োজন হতে পারে, সেগুলি ব্র্যাঙ্কেবল হতে হবে (তবে প্রয়োজনীয়ভাবে ব্রাঞ্চ করা হবে না ...)।

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

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

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

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