ভিডিওোগেমগুলি কীভাবে অফস্ক্রিন তথ্য সঞ্চয় করে?


16

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

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


24
পেডেন্ট্রি: সুপার মারিও ব্রোসে, আপনি যদি একটি আঘাত করেন? অবরুদ্ধ করুন এবং তারপরে স্ক্রিন বন্ধ হয়ে যান, আপনি আর ফিরে আসতে পারবেন না - গেমটি কেবল এক দিকে স্ক্রোল করে এবং সমস্ত ওয়ার্প পাইপগুলি একক দিকের হয়।
ট্রেভর পাওয়েল

61
আপনি যখন কোনও পাঠ্য দলিলটি পড়েন এবং আপনি নীচে স্ক্রোল করেন, আপনার ওয়ার্ড প্রসেসর নথির শুরুটি মুছবেন?
ফিলিপ

31
মনিটর গেমওয়ার্ল্ডের মধ্যে একটি উইন্ডো দেখায়। আপনার উইন্ডোর বাইরে পৃথিবী বিদ্যমান you আপনি কেবল এটি দেখতে পাচ্ছেন না।
ফেলসির

11
আরও অনেক সাধারণ নবাগত প্রোগ্রামিং প্রশ্নটি হ'ল: "আমি কীভাবে আমার তথ্য পর্দায় প্রদর্শিত করব?" যে কোনও প্রোগ্রামিং টিউটোরিয়ালের মাধ্যমে কাজ করুন এবং আপনি যখন এই প্রশ্নটিতে পৌঁছবেন তখন আপনার প্রশ্নের উত্তর ইতিমধ্যে আপনার কাছে থাকা উচিত।
পিটার

4
আমি ভাবছি উন্নয়ন পরিবেশ ধরনের কি আপনি যে পালন জিনিস দিয়ে কাজ করছি বন্ধ পর্দা শব্দসমূহ তাদের পেয়ে চেয়েও বেশি জটিল উপর পর্দা :) অথবা শুধু এই একটি বিশুদ্ধরূপে তাত্ত্বিক প্রশ্ন?
লুয়ান

উত্তর:


59

সাধারণত আপনার গেমের পরিবেশের যৌক্তিক অবস্থাটি ভিজ্যুয়াল উপস্থাপনা থেকে আলাদা করা উচিত।

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

আপনার রেন্ডারিং সাবরুটাইন চেক করে যে স্তরের কোন অংশগুলি বর্তমানে পর্দায় রয়েছে এবং কেবল সেগুলি আঁকবে। অফ-স্ক্রিন যা আছে তা আঁকা হয় না, তবে এর অর্থ এটি আপডেট হয় না।


37

আপনি এটি পিছনের দিকে যাচ্ছে।

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

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

এবং তারপরে, শেষ পদক্ষেপ হিসাবে, আপনি আসলে কী দৃশ্যমান তা নির্ধারণ করুন এবং বর্তমান গেমের অবস্থার চাক্ষুষ উপস্থাপনা তৈরি করুন এবং এটিকে স্ক্রিনে রেন্ডার করুন।

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


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

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


7
খন্ডে? আমি এই ছোট ছোট টুকরা স্তর কল করব ।
gbjbaanb

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

3
@gbjbaanb 'স্তর' একটি তারিখযুক্ত শব্দ এবং 'অংশ' অনেক বেশি ব্যাপক এবং একটি স্বতন্ত্র ধারণা। সমস্ত অংশগুলি স্তর নয় এবং সমস্ত স্তর খণ্ড নয়।
লিলিয়েনথাল

3
আমি মনে করি এটি সম্পর্কে ভাবার একটি সহায়ক উপায় হ'ল প্রযুক্তিগতভাবে একটিও পিক্সেল রেন্ডার না করে পুরো গেমটি খেলতে পারা উচিত, অর্থাত্ গেমটির পুরোপুরি দৃশ্য উপস্থাপনা থেকে পৃথক।
নাথান কে

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

6

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

তবে কিছু পুরানো সিস্টেমে আপনি আক্ষরিকভাবে ডেটা অফস্ক্রিন রাখবেন। 320x200 প্রদর্শনের জন্য ভিডিও মেমরির 400x300 পিক্সেল থাকবে এবং আপনি এর মধ্যে একটি ভিউপোর্টকে সংজ্ঞায়িত করবেন ("X = 10 Y = 30" থেকে শুরু করুন)। সুতরাং আপনি কেবল একটি রেজিস্টার সামঞ্জস্য করে স্ক্রিনটি স্ক্রোল করতে পারেন। বাইটগুলি চারপাশে সরানোর জন্য আপনাকে প্রয়োজনীয় এক লক্ষ চক্র ব্যয় করতে হবে না, আপনি যেখানে ভিডিও হার্ডওয়ারগুলি সেগুলি পড়া শুরু করে সেখানেই পরিবর্তন করুন।

এনইএসের একটি টাইল-ভিত্তিক সিস্টেমের সাথে এটি রয়েছে: http://wiki.nesdev.com/w/index.php/PPU_scrolling

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


6
সত্য হিসাবে, এটি বাস্তবায়নের বিশদটি জানায় - মূল নীতিটি এখনও আপনার কিছু যৌক্তিক অবস্থা রয়েছে এবং এটি রেন্ডার করুন (এবং যেমনটি আমি বলেছি এর কিছু অংশ ক্যাশে হয়েছে, ইতিমধ্যে কিছু জিনিস প্রস্তুত করুন যা পরবর্তী দৃষ্টিভঙ্গিতে আসবে ইত্যাদি)।
7:56

2
@ পলিগনোম ওয়েল, আমি প্রচুর গেম লিখেছি যেখানে স্ক্রিনটি ছিল গেমের অবস্থা। আপনি ভিআরএএম এর 4,000 বাইট দিয়ে কী করতে পারেন তা আশ্চর্যজনক! :)
লুয়ান

1

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

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

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

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

এখানে কিছু ভাল সূচনা উপকরণ রয়েছে:


0

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

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

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

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

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

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


এলওডি কৌশল ছাড়াও, এই উত্তরে একটি চিত্রগ্রাখ যুক্ত করা ভাল হবে - যেখানে কোনও দর্শনর মধ্যে রয়েছে তার উপর ভিত্তি করে কোনও স্মৃতি এবং 'সিপিইউ কুলড' রাখা যায়।
gbjbaanb

0

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

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

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

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