საპროექტო არქიტექტურა
როდესაც ჩვენ დავიწყეთ Veloren-ის განვითარება, რამდენიმე მიზნის გათვალისწინებით დავიწყეთ.
- მოდულურობა: პროექტი უნდა შედგებოდეს მრავალი ურთიერთდაკავშირებული ნაწილისგან
- შესრულება: პროექტმა თავიდან უნდა აიცილოს არქიტექტურული არჩევანი, რომელიც ზღუდავს შესრულებას
- ჩაკეტვის თავიდან აცილება: პროექტმა თავიდან უნდა აიცილოს გარკვეული კომპონენტების იძულებითი გამოყენება, სადაც ეს შესაძლებელია
ყუთები
Veloren იყოფა რამდენიმე Rust crates. ამის მიზანი ორმხრივია.
-
შევამციროთ შედგენის დრო კოლოფების პარალელური დამუშავების დაშვებით შედგენის დროს
-
მიეცით საშუალება Veloren-ის ეკოსისტემის მომხმარებლებს დამოკიდებულნი იყვნენ მხოლოდ პროექტის კონკრეტულ ნაწილებზე
ფრონტენტები
თუ თქვენ რაიმე დრო გაატარეთ თამაშებში აქტიური მოდიფიკაციის სცენით, უეჭველად შეგხვედრიათ თამაშები, რომლებსაც ჰქონდათ მათთვის დაწერილი სრულიად ახალი გრაფიკული ფრონტენტები, რომლებიც საშუალებას გაძლევთ ითამაშოთ თამაში სხვადასხვა გრაფიკის ან ამ ხედის გამოყენებით საინტერესო თამაშის მონაცემები, რომლებსაც ნაგულისხმევი თამაში ჩვეულებრივ არ აჩვენებს, როგორიცაა Legends Viewer of Dwarf Fortress. ესენი ფრონტენტები ხშირად აგებულია ჰაკიურად, საჭიროებს მეხსიერების პირდაპირ წვდომას თამაშის RAM-ზე, არ გააჩნია მნიშვნელოვანი ფუნქციები, ან მოითხოვეთ, რომ ძირითადი თამაში პარალელურად მიმდინარეობდეს.
ველორენი წყვეტს ამ მიდგომას და ამის ნაცვლად ფრონტენტებს პირველი კლასის აბსტრაქციად აქცევს. voxygen, ნაგულისხმევი გრაფიკა
კლიენტის წინა ნაწილი, არ აქვს თანდაყოლილი დაწყვილება შიდა client ბიბლიოთეკასთან. სრულიად ახლის დაწერა შესაძლებელია
ფრონტენტები, რომლებიც თამაშის შიგთავსს სრულიად განსხვავებულად აჩვენებენ ზოგადი client ბიბლიოთეკის თავზე. მაგალითები
ასეთი ალტერნატიული ფრონტენტები მოიცავს:
- Teloren, ბრძანების ხაზის წინა ნაწილი ნეტჰაკის სტილის გრაფიკით
chat-cli, მხოლოდ ჩეთის ბრძანების ხაზის წინა ნაწილი
(რამე აკლია ამ სიას? თავისუფლად დაამატეთ)
voxygen
წაიკითხეთ ამ ყუთის დოკუმენტები
Voxygen არის ნაგულისხმევი კლიენტის წინა ნაწილი Veloren-ისთვის და არის პროგრამა, რომელთანაც მომხმარებლები ყველაზე ხშირად ურთიერთობენ. ეს არის ა სრულად მოვლილი და აღჭურვილია ველორენის სამყაროს სრულად 3D ხედით და იყენებს თამაშის კლიენტის ყველა მახასიათებელს.
server-cli
წაიკითხეთ ამ ყუთის დოკუმენტები
server-cli არის ნაგულისხმევი სერვერის წინა ნაწილი Veloren-ისთვის. ის საშუალებას გაძლევთ გაუშვათ Veloren სერვერები მარტივი ბრძანების ხაზის საშუალებით
ინტერფეისი, რომელიც მოიცავს როგორც “ძირითად” რეჟიმს (ნაკადის გამომავალი stdout/stderr) და უფრო რთულ რეჟიმს, რომელიც საშუალებას იძლევა
სერვერის ბრძანებების შეყვანა მარტივი ncurses სტილის ტერმინალის ინტერფეისის საშუალებით.
ბექენდები
როგორც აღვნიშნეთ, Veloren ახორციელებს ძირითადი გეიმპლეის ფუნქციონირებას უთავო დეველოპერების წინაშე მდგარი ბიბლიოთეკების მეშვეობით. ესენია:
server
წაიკითხეთ ამ ყუთის დოკუმენტები
Veloren-ის ძირითადი სერვერის განხორციელება, ყველა ზარითა და სასტვენით. იგი მოიცავს API-ებს სერვერის ფრონტენტებისთვის მოითხოვეთ თამაშის მდგომარეობა, ჩაატარეთ მოვლენები (როგორიცაა სერვერის მაუწყებლობა) და ჩატვირთეთ დანამატები. მომავალში ჩვენ წარმოვიდგენთ სიმრავლეს სერვერის ფრონტენტები, რომლებიც აკმაყოფილებენ ბევრ მოთხოვნას: მარტივი გრაფიკული ფრონტენტები მოთამაშეებისთვის, რომლებსაც სურთ LAN თამაშის მასპინძლობა მეგობრებთან ერთად, ან მძლავრი CLI სერვერის წინა ნაწილი, რომელსაც მხარს უჭერს ვებ პანელი, რომელიც თამაშზე ზუსტი კონტროლის საშუალებას იძლევა სახელმწიფო და მოწინავე ფუნქციები, როგორიცაა ცოცხალი რუქები ან ცივილიზაციის სტატისტიკა, რომელიც ჩანს ინტერნეტში.
client
წაიკითხეთ ამ ყუთის დოკუმენტები
Veloren-ის ძირითადი კლიენტის განხორციელება. ეს არ არის განსაზღვრული იმის შესახებ, თუ როგორ აჩვენებს კლიენტის წინა ნაწილი მონაცემებს და აძლევს საშუალებას კლიენტებს სერვერებთან დაკავშირება მრავალი „რეჟიმიდან“ ერთ-ერთი, მათ შორის მხოლოდ ჩატის, მაყურებლისა და პერსონაჟის საშუალებით. ნაგულისხმევი კლიენტის ფრონტენტი, Voxygen, არის 3D, მაგრამ არ არსებობს მიზეზი იმისა, თუ რატომ ვერ ახერხებენ სხვა კლიენტების ფრონტენდებს ჩვენების დანერგვა სამყარო იზომეტრიული გრაფიკის, ჯუჯა ციხესიმაგრის სტილის ფენიანი 2D გრაფიკის ან ნებისმიერი სხვა გამოსახულების გამოყენებით. წარმოიდგინე.
world
წაიკითხეთ ამ ყუთის დოკუმენტები
Veloren-ის ძირითადი მსოფლიო თაობის განხორციელება. ამ კრატის გამოყენება მსოფლიოში ცოტა უფრო ბუნდოვანია გენერაცია და სიმულაცია აქტიური განვითარების პროცესშია, მაგრამ ეს კრატი გამიზნულია ნახვის, გენერირების და Veloren სამყაროს სიმულაცია კლიენტის ან სერვერის გარეშე. მომავალში ჩვენ წარმოვიდგენთ ფრონტენტებს არსებული, რომელიც საშუალებას გაძლევთ ნახოთ მსოფლიო ისტორიის ისეთი ასპექტები, როგორიცაა Dwarf Fortress’ Legends Viewer, ან მსოფლიო მონაცემების რედაქტირება დაუშვით საბაჟო სამყაროები და სცენარები.
კომუნალური ყუთები
ეკოსისტემაში ბევრი სხვა ყუთი არის სასარგებლო ყუთები, რომლებიც შეიცავს მრავალი სხვა უჯრის საერთო ფუნქციებს. ესენი არიან არ არის განკუთვნილი მოხმარებისთვის, გარდა ძირითადი Veloren ბიბლიოთეკისა და უნდა განიხილებოდეს, როგორც განხორციელება დეტალი. ესენია:
common (და მისი ქვე-კრატები)
წაიკითხეთ ამ ყუთის დოკუმენტები
ახორციელებს ქცევას და შეიცავს განმარტებებს, რომლებიც საერთოა როგორც კლიენტისთვის, ასევე სერვერისთვის.
network
წაიკითხეთ ამ ყუთის დოკუმენტები
შეიცავს Veloren-ის ქსელის კომუნალური საშუალებების დაუმუშავებელ განხორციელებას.
დანამატები
Veloren-მა ახლახან მოიპოვა მოდულის API, რომელიც საშუალებას გაძლევთ განავითაროთ დამატებითი ფუნქციები ბირთვის თავზე ველორენის გამოცდილება. მიუხედავად იმისა, რომ მოდულის API ჯერ კიდევ უკიდურესად ექსპერიმენტულია, ჩვენ ვგეგმავთ, რომ ის მალე გახდება სტანდარტული გზა თამაშის ფუნქციების გაფართოებისთვის. დანამატები იწერება ნებისმიერ ენაზე, რომელიც შეიძლება შედგეს ვებ ასამბლეაში (WASM), თუმცა Rust ჯერჯერობით ერთადერთი ენაა, რომელსაც აქვს ოფიციალური მხარდაჭერა და სავალდებულო. დანამატები სრულად არის შეფუთული და მათი გაზიარება ხდება კლიენტები სერვერთან დაკავშირებისას. დანამატებს შეიძლება ჰქონდეთ სერვერის და კლიენტის მხარის ქცევა იმავეში პაკეტი.
არსებობს რამდენიმე კრატი, რომელიც დაკავშირებულია დანამატებთან:
plugin-rt
წაიკითხეთ ამ ყუთის დოკუმენტები
ძირითადი მოდულის გაშვების დრო. ეს კრატი აადვილებს კომუნიკაციას მასპინძელ ძრავასთან და მართავს დანამატების კაკვებს და IO-ს.
plugin-api
წაიკითხეთ ამ ყუთის დოკუმენტები
შეიცავს ტიპის განმარტებებს, რომლებიც ქმნიან მოდულის ინტერფეისს, რომელიც გამოიყენება Veloren-თან კომუნიკაციისთვის. ეს მოიცავს ტიპებს და სტრუქტურები, რომლებიც გამოიყენება თამაშში არსებული მდგომარეობის წარმოსაჩენად და ამ მდგომარეობის ცვლილებების შესახებ კომუნიკაციისთვის.
plugin-derive
წაიკითხეთ ამ ყუთის დოკუმენტები
შეიცავს სასარგებლო პროცედურულ მაკროებს დანამატის დასაყენებლად, ავტომატიზირებს ზოგიერთი უფრო რთული API-ს მიერ მოწოდებული
plugin-rt.