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

FAQ

1) როგორ აირჩიე Rust ამ თამაშისთვის? ეს არ არის ყველაზე მომწიფებული ენა თამაშების განვითარებისთვის.

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

**ჟანგი უსაფრთხოა ** Vanilla Rust-ში დაწერილი კოდი არ შეიძლება გამოიწვიოს გაურკვეველი ქცევა. Rust-ის დიზაინი გვეხმარება თავიდან ავიცილოთ შეცდომების სიმრავლე, რომლებიც გავრცელებულია სხვა შედგენილ ენებში, როგორიცაა ჩამოკიდებული მაჩვენებლები, ბუფერული გადადინება, არასწორი/ნულის მაჩვენებლები, მონაცემთა რბოლა, მასივის შეკრული შეცდომები და მრავალი სხვა. ეს მას განსაკუთრებით შესაფერისს ხდის ისეთი დიდი ერთობლივი პროექტისთვის, როგორიც ეს არის, რადგან ართულებს ახალი კოდის შეტანას შეცდომების გამოსწორებას კოდების ბაზაში.

**ჟანგი სწრაფია ** Rust არის შედგენილი ენა, რომელიც არ საჭიროებს ნაგვის შემგროვებელს, გამონაკლისს ან ბევრ სხვა გაშვების სისტემას, რაც სხვა ენებს ასე ანელებს. უმეტეს სცენარში, კარგად დაწერილი Rust სულ მცირე ისეთივე სწრაფია (და ხშირად უფრო სწრაფი), ვიდრე კარგად დაწერილი C++.

** ჟანგი მოდულარულია ** Rust-ს მოყვება Cargo build სისტემა და პაკეტის მენეჯერი. ის საშუალებას აძლევს Rust-ის შედგენას მოდულური გზით, ადვილად ისესხებს სხვა ბიბლიოთეკებს (ცნობილია როგორც კრატები) დანარჩენი Rust-ის ეკოსისტემიდან.

**Rust არის პორტატული ** Rust-ის შემდგენელი იყენებს LLVM-ს ძირითადი ტექნიკის პლატფორმების უმრავლესობისთვის. Cargo-ს, როგორც მისი კონსტრუქციის სისტემის გამოყენებით, ის იძლევა თანმიმდევრული შედგენის საშუალებას მრავალ პლატფორმაზე. აღარ არის სათაურის ფაილების ძებნა ან ლინკერის შეცდომებთან ბრძოლა!

** Rust კარგად არის შემუშავებული ** Rust-ის სინტაქსი შექმნილია ისე, რომ იყოს მოსახერხებელი (სადაც შეუძლია ფუნქციებზე კომპრომისის გარეშე) და კარგად მოერგოს სისტემის პროგრამირებას. დაბალი დონის კონტროლისა და უსაფრთხოების უნიკალური კომბინაცია მას შესანიშნავს ხდის როგორც თამაშის ძრავების, ასევე მაღალი დონის თამაშის ლოგიკის შესაქმნელად.

2) რატომ გამოვიყენოთ GitLab GitHub-ზე?

GitLab-ს აქვს უკეთ ინტეგრირებული CI/CD და გთავაზობთ ყველაფერს, რაც GitHub-ს აქვს. ორივე მათგანი მხოლოდ სერვისია git-ის თავზე კომპიუტერზე, ასე რომ, არც თუ ისე განსხვავებული.

3) რა ხმაურის ფუნქციას ვიყენებთ რეალურად?

Perlin, worley, simplex, value, gradient და რამდენიმე Zesterer გამოიგონეს.

4) როგორ შემიძლია დაგეხმაროთ? უნდა ვიყო გუნდის წევრი? რუსთში არ მაქვს გამოცდილება, მაგრამ ძალიან მინდა ვისწავლო და დავეხმარო.

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

5) როგორ ხდება მოძრაობის/ფიზიკის/მექანიკის პროგრამირება?

ეს დანერგილია [common]-ში (developers/codebase-structure.md#common), რომელიც არის კოდის ყუთი, რომელიც საერთოა როგორც სერვერს, ასევე კლიენტს შორის. (რადგან სერვერი უნდა იყოს საბოლოო ავტორიტეტი ფიზიკაზე, მაგრამ კლიენტმა უნდა გააკეთოს ფიზიკის პროგნოზირება, რათა შეფერხება/დაყოვნება ცუდად არ გამოიყურებოდეს).

6) აქვს თუ არა მას ყველა ის OOP მასალა, რომელიც გჭირდებათ მსგავსი პროექტისთვის? არის შემთხვევები, როცა კოდირებთ Rust-ში და არის რაღაც, რაც ფიქრობთ, რომ ბევრად უკეთესად შეიძლება გამოიხატოს C++-ში? მე თავიდან უარვყავი Rust, როდესაც პირველად შევხვდი მას, რადგან ჩანდა, რომ ეს იყო მხოლოდ C განსხვავებული სინტაქსით და პროგრამირების გარკვეული ფუნქციებით, მაგრამ ცოტა ხნის წინ გავიგე, რომ ეს სავარაუდოდ ბევრად მეტია.

მიუხედავად იმისა, რომ Rust-ს აქვს ისეთი თვისებები, რომლებიც, როგორც ჩანს, მას ობიექტზე ორიენტირებულ ენად აქცევს (მას აქვს ობიექტები, მეთოდები, ინტერფეისები და ა.შ.), ის სინამდვილეში არ არის ობიექტზე ორიენტირებული ენა. ახალი დეველოპერების ერთ-ერთი ჩვეულებრივი ატრიბუტი არის ის, რომ ცდილობენ აიძულონ Rust მოიქცეს OO ენაზე, როდესაც კონკრეტული პრობლემა უკეთესად მოგვარდება Rust-y გზით.

7) რა მოქნილობას უზრუნველყოფს Rust, რომელსაც არ აქვს Unreal Engine? ეს უბრალოდ იმიტომ ხდება, რომ Rust პროექტს მოდულურად აქცევს, ხოლო Unreal Engine საკმარისად მოდულარული არ არის ღია კოდის განვითარებისთვის?

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

8) გსურს ოდესმე ეს პროექტი გადაიტანო ფონდების მოზიდვის პლატფორმაზე, როგორიცაა Kickstarter, რათა ვინმემ შეძლოს მასზე მუშაობა სრული დროით? შესაძლებელია, რომ ეს ერთ დღეს მიზნად იქცეს? ან ეს არასოდეს იქნება მიზანი?

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

9) გამიჩნდა შეკითხვა, როგორ შევადგინო თამაში?

ყველაფერი უნდა იყოს აღწერილი განყოფილებაში კონტრიბუტორები.