Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

გაყვანილობა

ზოგადი სისტემის მიმოხილვა

არაღრმა განმარტებები:

  • Circuit კომპონენტი არის მთელი სისტემის ხერხემალი. ის ინახავს ინფორმაციას იმის შესახებ, თუ საიდან და სად უნდა გადაეცეს მონაცემები.
  • Wire არის Circuit-ის ნაწილი (ერთ წრეს შეიძლება ჰქონდეს ბევრი მავთული) ის ინახავს მონაცემებს თუ რომელი ერთეულიდან და რა ველის სახელის მნიშვნელობა უნდა გადაეცეს რომელ ერთეულს და ველის სახელს.
  • გაყვანილობა კომპონენტი არის “მუშაკი”, მან იცის რა მონაცემები აქვს და რა უნდა შეასრულოს მისი შესრულებისას.
  • OutputFormula იღებს შეყვანებს (და საკუთარ კონფიგურაციას) და აწარმოებს გამომავალს.

თუ რაიმეს გამოთვლა შეუძლებელია, მაგრამ მოცემული ადგილი უნდა მოჰყვეს გარკვეულ მნიშვნელობას - ეს გამოიწვევს f32 0-ს.

გაყვანილობის თითოეულ კომპონენტს აქვს 3 ინფორმაცია:

  1. შეყვანები (მონაცემები შეყვანილია Circuit-ით)
  2. შედეგები (ინფორმაცია როგორ გამოვთვალოთ გამომავალი)
  3. მოქმედებები (ინფორმაცია იმის შესახებ, თუ რა უნდა მოხდეს, თუ შეყვანები მოცემულ მდგომარეობაშია)

თითოეულ გაყვანილობას აქვს 3 ეტაპი:

  1. გამოთვლა (აიღეთ გაყვანილობის თითოეული კომპონენტი, შეიტანეთ შეყვანები გამომავალ ფორმულებში, გამოიტანეთ შედეგები)
  2. ტრანსპორტირება (მიიღეთ წინა ეტაპის შედეგები და Circuit-ის გამოყენებით გადაიტანეთ ისინი)
  3. გაგზავნა (მიიღეთ მონაცემები (გაითვალისწინეთ, რომ ჩვენ ვიყენებთ შეცვლილ მდგომარეობას ტრანსპორტით) და დისპეტჩერიზაციის ლოგიკას)

გამოთვლა

  • აიღეთ გაყვანილობის ყველა კომპონენტი და მოახაზეთ ისინი
  • გამოთვალეთ თითოეული შედეგების გამომავალი ფორმულა
  • შექმენით გამოსავლები ტიპით HashMap<E, Hashmap<F, V>> სადაც:
  • E არის specs::Entity, რომელიც შეიცავს გაყვანილობის გარკვეულ კომპონენტს.
  • F არის String, რომელიც წარმოადგენს ველის სახელს.
  • V არის OutputFormula-ის მიღებული მნიშვნელობა. (ამჟამად ყველა შედეგი არის f32)

ტრანსპორტი

  • აიღეთ სქემები და თითოეული წრედისთვის აიღეთ მიმაგრებული მავთული *
  • აიღეთ ყველა მავთული და თითოეული მავთული *
  • მიიღეთ from what entity, from what field, to what entity და to what field მავთულიდან.
  • შეასრულეთ მსგავსი რამ to what entity.inputs[to what field] = from what entity[from what field] **

* ეს არის ძირითადად “აიღე ყველა მავთული” დატვირთული სერვერის მონაცემებში

** გაითვალისწინეთ, რომ ჩვენ ვიყენებთ Compute step-ის პროდუქტს, როგორც ამ გამარტივების მარჯვენა მხარეს.

დისპეტჩერიზაცია

  • თითოეული მოქმედებისთვის გაყვანილობის ყველა კომპონენტში
  • თუ გაყვანილობის მოქმედების ფორმულის გამოსავალი* მეტია ან ტოლია მოქმედების ზღურბლზე…
  • გაყვანილობასთან დაკავშირებული თითოეული ეფექტის გაგზავნა

* გამოითვლება შეყვანის გამოყენებით

გამომავალი ფორმულები

მუდმივი

გამოაქვს მუდმივი მნიშვნელობა.

შეყვანა

გამოაქვს შეყვანის ველის მნიშვნელობა მოცემული სახელით.

ლოგიკა

იძლევა გამომავალი ფორმულების შედგენის საშუალებას. ის იღებს left და right გამომავალ ფორმულებს, რომლებიც გამოითვლება და შემდეგ ახორციელებს მათზე ლოგიკას.

ხელმისაწვდომი ლოგიკური ტიპები (მე ვგულისხმობ left და right გამომავალს, როგორც გვერდით):

  • Min - ქვედა მხარის დაბრუნების მნიშვნელობა.
  • მაქს - უმაღლესი მხარის დაბრუნების მნიშვნელობა.
  • ქვე - დაბრუნების მნიშვნელობა left - right.
  • ჯამი - დაბრუნების მნიშვნელობა left + right.
  • Mul - დაბრუნების მნიშვნელობა left * right.

სინუსური ტალღა (არ განხორციელებული)

იღებს სერვერის დროს და აბრუნებს.

OnCollide

თუ ფიზიკა აფიქსირებს შეჯახებას მიმაგრებული ერთეულისთვის (touching_entities) აბრუნებს მოცემულ მნიშვნელობას.

OnInteract (არ განხორციელებული)

თუ რაიმე ურთიერთქმედებს (მაგ. მოთამაშე „იწევს“ ბერკეტს) აბრუნებს მოცემულ მნიშვნელობას.

სიკვდილზე

აბრუნებს value * count of entities that died in last tick in given radius.

მოქმედებები

ქვირითის ჭურვი

აყალიბებს ჭურვებს ჭურვის კონსტრუქტორის გამოყენებით.

ბლოკის შეჯახების დაყენება (არ განხორციელებული)

ცვლის ბლოკის თვისებებს გარკვეულ კოორდინატებზე.

განათების დაყენება

ცვლის მიმაგრებული ერთეულის LightEmitter თვისებებს.