Სარჩევი:

Platformer უსასრულო დონეზე GameGo With Makecode Arcade: 5 ნაბიჯი (სურათებით)
Platformer უსასრულო დონეზე GameGo With Makecode Arcade: 5 ნაბიჯი (სურათებით)

ვიდეო: Platformer უსასრულო დონეზე GameGo With Makecode Arcade: 5 ნაბიჯი (სურათებით)

ვიდეო: Platformer უსასრულო დონეზე GameGo With Makecode Arcade: 5 ნაბიჯი (სურათებით)
ვიდეო: Боссы в игре Chip 'n Dale Rescue Ranger 2 #nintendo 2024, ივლისი
Anonim
Image
Image

GameGo არის Microsoft Makecode თავსებადი რეტრო სათამაშო პორტატული კონსოლი, რომელიც შემუშავებულია TinkerGen STEM განათლების მიერ. ის დაფუძნებულია STM32F401RET6 ARM Cortex M4 ჩიპზე და დამზადებულია STEM პედაგოგებისთვის ან უბრალოდ მათთვის, ვისაც უყვარს გართობა რეტრო ვიდეო თამაშების შექმნით. თქვენ შეგიძლიათ მიყევით ამ გაკვეთილს და სცადოთ თამაში Makecode Arcade სიმულატორში და შემდეგ გაუშვათ GameGo– ზე.

ამ სტატიაში ჩვენ ვაპირებთ გავაკეთოთ პლატფორმერი თამაში უსასრულოდ შემთხვევით გენერირებული დონით. პლატფორმში მოთამაშის მიერ კონტროლირებადი პერსონაჟი უნდა ხტუნავდეს და ახვიდეს შეჩერებულ პლატფორმებს შორის დაბრკოლებების თავიდან აცილებისას. გარემოში ხშირად არის განსხვავებული სიმაღლის არათანაბარი რელიეფი, რომლის გადალახვაც აუცილებელია. მოთამაშეს ხშირად აქვს გარკვეული კონტროლი ნახტომის სიმაღლეზე და მანძილზე, რათა თავიდან აიცილოს მათი პერსონაჟი სიკვდილამდე ან გამოტოვოს აუცილებელი ნახტომი. ჩვენ განვახორციელებთ ყველა ამ ძირითად ელემენტს და ასევე დავამატებთ ინდივიდუალურ ფუნქციას, რომელიც გამოიმუშავებს ახალ დონეს ბოლო დონის დასრულებამდე. Მოდით დავიწყოთ!

მარაგები

თამაში წადი

ნაბიჯი 1: გმირი

Გმირი
Გმირი

როგორც პირველი ნაბიჯი ჩვენ შევქმნით ჩვენს ალტერ ეგოს. ჩემი ხატვის უნარები საკმაოდ ცუდია, ამიტომ მე გადავწყვიტე გამოვიყენო გალერეიდან;) წინა თამაშისგან განსხვავებით, რაც ჩვენ გავაკეთეთ, ამ პლატფორმერზე ჩვენი დაკვრადი პერსონაჟი მოძრაობს მხოლოდ მარცხნივ და მარჯვნივ და ასევე ხტუნვაც. იმის ნაცვლად, რომ ორი განსხვავებული სპრეტი გვქონდეს მთავარი გმირისთვის, ერთი საკმარისია ამჯერად - ჩვენ შეგვიძლია უბრალოდ გადავატრიალოთ სპრაიტის გამოსახულება, როდესაც მიმართულებას შევცვლით.

პირველი რაც უნდა გააკეთოთ არის ფონის და კრამიტის რუქის დამატება. მე ავირჩიე 32x8 გრძელი კრამიტის რუქა - პირველი დონისთვის ჩვენ მას დავხატავთ ხელით, როგორც ეკრანის სურათზე 2. შემდეგ ჩვენ დავამატებთ ჩვენს დაკვრადი პერსონაჟს მითითებული mySprite– ით, რათა გამოვყოთ კეთილი მოთამაშის ბლოკი და მოვათავსოთ იგი კრამიტის თავზე 0-5 რა ჩვენ ასევე დავაყენეთ კამერა, რომ გადაადგილდეს დაკვრადი ხასიათით და ვაკონტროლოთ მისი მარცხენა და მარჯვენა მოძრაობა - ჩვენ დავაყენებთ მოძრაობის სიჩქარეს 0 -ზე, რადგან ჩვენს პერსონაჟს არ უნდა შეეძლოს თავისუფლად იმოძრაოს რუკაზე y- მიმართულებით. დაამატეთ ორი ღილაკზე დაჭერილი ბლოკი, ერთი მარცხენა ღილაკზე, ერთი მარჯვნივ. როდესაც მარცხენა ღილაკს დააჭირეთ, ჩვენ ვამოწმებთ, იყო თუ არა ჩვენი მიმართულება "მარცხენა" ღილაკზე დაჭერის წინ. თუ ასე იყო, ჩვენ უბრალოდ მარცხნივ გავაგრძელებთ. ეს რომ არ ყოფილიყო, ჩვენ უნდა გადავატრიალოთ ჩვენი პერსონაჟის სპრაიტ იმიჯი. მსგავსი ლოგიკა სწორი მოძრაობისთვის.

ჯერჯერობით ყველაფერი კარგადაა, ერთადერთი პრობლემა ჩანს, რომ ჩვენს გმირს არ შეუძლია გადალახოს რაიმე დაბრკოლება. ასე რომ, ჩვენ უნდა დავამატოთ ხტუნვა. ჩვენ დავაკვირდებით ღილაკზე დაჭერის კონტროლს და როდესაც ის გამოვლინდება, ჩვენ დავაყენებთ ცვლადი ხტუნვას 1 -ზე, გავითვალისწინებთ ხტუნვის მოძრაობების დაწყების დროს და დავაყენებთ პერსონაჟის სიჩქარის სიჩქარეს -200 -მდე (იზრდება). შემდეგ დროის განსაზღვრული პერიოდის შემდეგ, ჩვენ დავაყენებთ სიჩქარეს 200 -ზე (დაღმავალი), ასე რომ ჩვენი გმირი არ აიღებს ცას რაკეტის სახით.

მე ვფიქრობ, რომ ჩვენ შევქმენით გმირი გამოწვევის ღირსი! აბა, სად არის გამოწვევა?

ნაბიჯი 2: მტრები

მტრები
მტრები

ჩვენ გამოვიყენებთ მასივის სტრუქტურას მტრების სპირტების შესანახად. მტრების ტიპებისათვის ჩვენ ვიღებთ პატარა მალსახმობას და ვიყენებთ ღამურებს:) არა კორონავირუსის მითითებას, უბრალოდ ღამურებს შეუძლიათ ფრენა, ამიტომ ჩვენ არ დაგვჭირდება მათთვის სიმძიმის "სიმულაცია", როგორც ამას ვაკეთებთ ჩვენს დაკვრადი პერსონაჟით. გამოიყენეთ შექმნილი სახის მტრის ბლოკი, რათა ახლადშექმნილი ღამურები მოათავსოთ შემთხვევით ქვირითის ფილაზე (მონიშნულია პატარა თეთრი ნიშნით) და დააყენოთ მათი vx სიჩქარე -10 (ნელა მოძრაობს მარჯვნივ). შემდეგ თამაშის განახლებაში ყოველ 2000 ms ბლოკში ვიმეორებთ მტრის სიის თითოეულ პუნქტში და შემთხვევით ვცვლით მათ მიმართულებას, ხოლო საჭიროების შემთხვევაში ვატრიალებთ ღამურების სპირტებს (მოძრაობის მიმართულების ცვლილების ასახვის მიზნით). დაბოლოს, ჩვენ ვამატებთ Sprite of kind Player- ს, რომელიც ემთხვევა სხვა სახის Enemy ბლოკს, სადაც ჩვენ ვაკეთებთ მარტივ შემოწმებას, მოთამაშე უკვე მოხვდა თუ არა. თუ ეს არ იყო, ჩვენ გამოვაკლებთ ერთ სიცოცხლეს, დააყენეთ დროშის დარტყმა 1 -ზე (მოხვდა) და ჩართეთ ტაიმერი. ერთხელ, როდესაც ბოლო დარტყმის დრო გავიდა 500 ms ჩვენ ვცვლით დროშის დარტყმას 0 -ზე. ჩვენ ამას ვაკეთებთ იმისათვის, რომ მოთამაშემ თავიდან აიცილოს ძალიან ბევრი ძვირფასი ადამიანის დაკარგვა მტერთან შეჯახების შემდეგ.

მოდით შევამოწმოთ როგორ ვართ. რა თქმა უნდა, სცენა უფრო ცოცხალი ჩანს, როდესაც ყველა ღამურა დაფრინავს და კბენს ჩვენს მოთამაშეს. ახლა ჩვენ გვჭირდება იარაღი ჩვენი გმირული საქმეების შესასრულებლად!

ნაბიჯი 3: იარაღი

იარაღი
იარაღი

იარაღისთვის, მე ვიღებდი შთაგონებას ძველი Nintendo– ს თამაშის შესახებ, ორი ძმაკაცის შესახებ:) მოდით, ჩავამატოთ კრატის დონე იმავე დონეზე, რასაც ჩვენ ვაკეთებთ მტრების დამატებით. ჩვენ ასევე გვაქვს ინიციალიზაცია has_crate ცვლადი -1, რაც მიუთითებს იმაზე, რომ ჩვენს პერსონაჟს არ აქვს კრატი. In Sprite of kind Player გადაფარავს სხვასხვა სახის საკვების ბლოკს, ჩვენ ვამოწმებთ, გვაქვს თუ არა უკვე კრატი და თუ არა, ჩვენ has_crate ცვლადს ვაძლევთ სიაში crate sprite- ის ინდექსს. შემდეგ თამაშის განახლების ბლოკში ჩვენ გადავიტანთ იმ სპრაიტს მოთამაშესთან ერთად და თუ ღილაკ A დაჭერილია, ჩვენ ვცვლით კრატის vx სიჩქარეს 1200 ან -1200 (დამოკიდებულია პერსონაჟის მოძრაობის მიმართულებაზე). ჩვენ ასევე დავაყენეთ has_crate ცვლადი ისევ -1 – ზე და შევცვალეთ კრატის სპრაიტის ტიპი, რომელიც ჰაერში გაუშვეს ახლა Projectile– ზე.

დაბოლოს, ჩვენ გვჭირდება, რომ ყუთებმა რეალურად გაანადგურონ მტრები გაშვებისას (მაგრამ არა მაშინ, როდესაც მტრები შემთხვევით წააწყდებიან კრატს! ამიტომაც მივაკუთვნეთ ყუთები საკვების აკრეფისათვის და მისი გაშვებისას შეცვალეთ ჭურვი) და დარტყმისას თვითგანადგურება კედელი. ჩვენ ვიყენებთ სხვა სახის Sprite- ს სხვა სახეობებს, სხვა სახის Sprite kind of Enemy ბლოკად ამისათვის - ამ შემთხვევაში ჩვენ ვანადგურებთ ორივე სპირტს და ვაქცევთ ანგარიშს ერთით. თუ ჭურვი მოხვდება კედელს, ჩვენ ვანადგურებთ მის სპრაიტს.

თითქმის გაკეთებულია! თამაში ახლა დაკვრადია, მაგრამ მაინც არ არის გამოწვევა - მხოლოდ ერთი დონის და საკმაოდ მარტივია. ჩვენ შეგვიძლია შევქმნათ მეტი დონე ხელით ან დავწეროთ ალგორითმი, რომელიც ავტომატურად გამოიმუშავებს ამ დონეს ჩვენთვის - თუმცა, რა თქმა უნდა, ისინი არ იქნება ისეთივე ლამაზი, როგორც ადამიანის მიერ შექმნილი დონეები.

ნაბიჯი 4: უსასრულო თავგადასავლები

უსასრულო თავგადასავლები
უსასრულო თავგადასავლები
უსასრულო თავგადასავლები
უსასრულო თავგადასავლები
უსასრულო თავგადასავლები
უსასრულო თავგადასავლები

შემთხვევითი დონის წარმოქმნის ფუნქცია თავიდან ცოტა საშიშად გამოიყურება, მაგრამ ეს მართლაც მარტივი ნაბიჯების სერიაა ახალი დონის ალგორითმულად გამომუშავებისათვის, ისე რომ ახალი დონე გასავლელი დაკვრადი პერსონაჟებისთვის. პირველ რიგში, ჩვენ ვზრუნავთ ჩვენი პერსონაჟის ახალ დონეზე აყვავებაზე - სახის მოთამაშის სპრინტის გამოყენებით … ადგილზე - ჩვენ ვიყენებთ პორტალის კარის კრამიტს, როგორც ახალ დონეს. Generate_level ფუნქციაში ჩვენ ვიწყებთ ცვლადების რიგის, კოლის და შანსის ინიციალიზაციას. ასევე ჩვენ ვქმნით კრამიტის ახალ რუქას, იგივე ზომის, როგორც ადრე, მაგრამ ცარიელი. აქ არის პატარა გაფრთხილება - იმისათვის, რომ გამოვიყენოთ ნაკრები… კრამიტის რიგზე… კოლოფი… ბლოკი, კრამიტის რუქას უნდა ჰქონდეს ეს კონკრეტული ფილები --- ეს ცოტათი ინტუიციურია და შესაძლოა ხარვეზია ჩანაწერში. ასე რომ, ის, რაც თქვენ უნდა გააკეთოთ, არის კრამიტის რუქის შექმნა, კრამიტის ყველა ტიპის განთავსება, რომლის გამოყენებაც გსურთ შემთხვევით წარმოებაში და შემდეგ მათი წაშლა.

ჩვენ ხელით დავაყენეთ პირველი კრამიტი (0x6) და მოთამაშე თავზე. შემდეგ ჩვენ ვიმეორებთ შემდეგ ნაბიჯს 30 -ჯერ - შემდეგი ნაბიჯი არის ჭეშმარიტი -მცდარი შემოწმების მარტივი სერია, რომელიც წყვეტს, იქნება თუ არა შემდეგი სვეტის კრამიტი 1) იგივე დონის, რაც წინა 2) ერთი ზემოთ ან 3) ერთი ქვემოთ. ასევე არსებობს ძალიან მცირე შანსი, რომ შემდეგი კრამიტი იყოს ლავას კრამიტი - ჩვენ არ გვინდა ამდენი! ყოველი წარმოქმნილი კრამიტის შემდეგ ჩვენ ვავსებთ მის ქვეშ არსებულ სივრცეს ლავით - მხოლოდ სილამაზის გამო. როგორც საბოლოო ნაბიჯი ჩვენ ვამატებთ მტრებს და ყუთებს და ვათავსებთ მათ შემთხვევითი ქვირითის ფილებზე.

ნაბიჯი 5: თავგადასავალი იწყება

თავგადასავალი იწყება
თავგადასავალი იწყება

ვოილა! ჩვენ დავასრულეთ ჩვენი პლატფორმერი და ჩვენს გმირს შეუძლია უსასრულო თავგადასავალზე წასვლა, ღამურების დამარცხება და კრატების განადგურება. თუ თქვენ წააწყდებით პრობლემებს, შეგიძლიათ ჩამოტვირთოთ კოდი ჩვენი GitHub საცავიდან.

ეს არის მხოლოდ გეგმა და რა თქმა უნდა არის გარკვეული გაუმჯობესება, მაგალითად სხვადასხვა სახის მტრები, ბონუსები, უკეთესი დონის გამომუშავება და ასე შემდეგ. თუ თქვენ შექმნით თამაშის გაუმჯობესებულ ვერსიას, გაუზიარეთ იგი ქვემოთ მოცემულ კომენტარებში! GameGo– ს და მწარმოებლებისა და STEM პედაგოგების დამატებითი აღჭურვილობის შესახებ დამატებითი ინფორმაციისათვის ეწვიეთ ჩვენს ვებ გვერდს, https://tinkergen.com/ და გამოიწერეთ ჩვენი ბიულეტენი.

TinkerGen– მა შექმნა Kickstarter კამპანია MARK– ისთვის (Make A Robot Kit), რობოტის ნაკრები კოდირების, რობოტიკის, AI სწავლებისთვის!

გირჩევთ: