All tutorials

আপনার প্রোগ্রাম যা তৈরি করে তার নাম দিন

Beginner 10 min engine

একটি প্রোগ্রাম শতাধিক অবজেক্ট তৈরি করতে পারে অথচ Scene Graph-এ তার একটিও না দেখাতে পারে। নাম দেওয়াই সেই কাজ যা একটিকে দৃশ্যমান করে তোলে, এবং এটি স্প্রাইট, টেক্সট, 3D অবজেক্ট, লাইট এবং পার্টিকেলের ক্ষেত্রে কাজ করে।

আপনি যা শিখবেন#

আপনি একটি ছোট BASIC প্রোগ্রাম লিখবেন, দেখবেন যে এটি স্পষ্টভাবে কাজ করার পরেও Scene Graph খালি থেকে যায়, এবং তারপর প্রতিটি অবজেক্টকে নাম দিয়ে দৃশ্যমান করে তুলবেন। শেষে আপনি জানবেন কেন গাছটি একটি প্রোগ্রামের তৈরি করা বেশিরভাগ জিনিস লুকিয়ে রাখে, এবং কীভাবে বেছে নিতে হয় সেটি কী দেখাবে।

শুরু করার আগে#

  • Engine একটি সমর্থিত মডিউল। Inkwell, Vectra এবং PDF Studio হলো তিনটি ফ্রি মডিউল।
  • আগের কোনো টিউটোরিয়াল লাগবে না। নিচের সবকিছু একটিমাত্র স্ক্রিপ্ট।
  • Scene Graph প্যানেলটি ভিউপোর্টের পাশে খোলা রাখুন। এটাই এই অনুশীলনের মূল বিষয়।

ধাপসমূহ#

  1. Engine খুলুন, একটি ফাঁকা দৃশ্য শুরু করুন, এবং স্ক্রিপ্ট এডিটর খুলুন। এটি পেস্ট করুন এবং Play চাপুন:

    image = LoadImage("hero.png")
    sprite = CreateSprite(image)
    SpritePosition(sprite, 100.0, 120.0)
    CreatePointLight(1, 0.0, 5.0, 0.0, 10.0, 255, 255, 255)
    DO
      Sync()
    LOOP
    
  2. Scene Graph-এর দিকে তাকান। sprite স্ক্রিনে আছে, লাইট জ্বলছে, আর গাছটি কিছুই দেখাচ্ছে না। এটি কোনো বাগ নয়, এবং এটিই পুরো শিক্ষা।

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

  3. sprite-টির নাম দিন। SpritePosition-এর পরে একটি লাইন যোগ করুন, এবং আবার Play চাপুন:

    SpriteName(sprite, "খেলোয়াড়")
    

    খেলোয়াড় গাছে দেখা যায়। স্ক্রিনে আর কিছুই বদলায়নি: নাম দেওয়া কিছু তৈরি করে না, সরায় না, বা আঁকে না। এটি প্রকাশ করে।

  4. লাইটটিরও নাম দিন, এই ধারণার সাথে আসা কমান্ড দিয়ে:

    LightName(1, "সূর্য")
    

    এখন দুটো এন্ট্রি। একটিতে ক্লিক করুন: ইনস্পেক্টর সেটি অনুসরণ করে, ঠিক যেমনটা করত আপনি হাতে বসানো একটি অবজেক্টের জন্য।

  5. পার্টিকেল যোগ করুন এবং তাদের নাম দিন, যাতে আপনি দেখতে পান নিয়মটি শুধু sprite নিয়ে নয়:

    CreateParticles(1, 200.0, 200.0)
    ParticlesName(1, "ধোঁয়া")
    
  6. এখন তিনটি নাম দেওয়ার লাইন সরিয়ে ফেলুন এবং Play চাপুন। দৃশ্যটি অবিকল আগের মতোই, গাছটি আবার খালি, এবং নামহীন সংখ্যা আবার তিনে ফিরে গেছে।

    সতর্কতা: একটি নাম কোনো id নয়। SpriteName(sprite, "খেলোয়াড়") সেই sprite-কে লেবেল করে যার id sprite-এ আছে; এটি আপনাকে পরে সেই লেবেল দিয়ে সেটি খুঁজে পেতে দেয় না। id-ই থেকে যায় আপনার হাতিয়ার।

ফলাফল#

আপনি ঠিক করতে পারেন আপনার প্রোগ্রাম কী দেখাবে। একটি prop, একটি লাইট এবং একটি এমিটার আপনার বেছে নেওয়া নামের অধীনে দেখা যায়; একটি বাস্তব প্রোগ্রামের তৈরি করা শত শত টেকনিক্যাল অবজেক্ট পথের বাইরে থেকে যায়।

নিয়মটি কেন আছে#

একটি ক্লাসিক BASIC প্রোগ্রাম প্রতিনিয়ত অবজেক্ট তৈরি করে: প্রতিটি বুলেটের জন্য একটি sprite, প্রতিটি স্কোর ডিজিটের জন্য একটি text, প্রতিটি টাইলের জন্য একটি image। এগুলো সবকিছু তালিকাভুক্ত করলে Scene Graph কয়েক সেকেন্ডের মধ্যেই অপাঠ্য হয়ে যেত, আর আপনার সত্যিকারের গুরুত্বপূর্ণ তিনটি অবজেক্ট গোলমালে হারিয়ে যেত।

তাই গাছটি সবকিছু দেখায় না এবং অনুমান করে বাকিটা লুকায় না। এটি দেখায় আপনি যা নাম দিয়েছেন, এবং বাকিটা গণনা করে রাখে যাতে কিছুই নীরবে অদৃশ্য না হয়ে যায়। এই ফিল্টারটা আপনার, ইঞ্জিনের নয়।

কোন কোন অবজেক্ট-এর নাম দেওয়া যায়#

কমান্ডএটি কী নাম দেয়
SpriteName(id, name)একটি sprite
TextName(id, name)একটি text অবজেক্ট
ObjectName(id, name)একটি 3D object
LightName(id, name)একটি পয়েন্ট বা ডিরেকশনাল লাইট
ParticlesName(id, name)একটি পার্টিকেল এমিটার, 2D বা 3D

Sound, image, memblock এবং font-এর Scene Graph-এ কোনো লাইন নেই: এগুলো রিসোর্স, দৃশ্যের অবজেক্ট নয়, এবং এগুলোর নাম দিলেও কোথাও কিছু দেখা যাবে না।

আরও এগিয়ে যান#

  • বাকি ডায়ালেক্ট: BASIC ভাষা
  • প্যারামিটারসহ প্রতিটি নেমিং কমান্ড: Studio family