Engine

Enjin permainan: graf adegan, komponen, skrip, fizik, saluran PBR, editor dunia, dan binaan native untuk desktop dan mudah alih.

Ringkasnya#

Sebuah enjin permainan yang lengkap dalam pelayar: bina satu adegan, berikannya kelakuan, tekan main, dan eksportkannya ke web atau ke binari native desktop dan mudah alih.

Ia adalah modul terbesar dalam aukimi dengan jarak yang jauh. Halaman ini memetakannya sepertimana antara muka melakukannya, mengikut laci tempat setiap panel berada, berbanding menyenaraikan ciri-ciri mengikut abjad.

Susun atur#

Engine, dengan graf adegan, viewport, inspektor dan konsol

Bar menuFile · Edit · View · Windows · Run · Plugins
Bar alatnama projek, buat asal/buat semula, suis mod viewport (3D · 2.5D · 2D · TXT), pemilih adegan, empat butang panel, FX Master, HUD, kotak resolusi, transport (main, jeda, henti) dan Build
Kirisatu rel ikon, graf adegan, senarai, audio, konsol, dan panel yang dibukanya
Tengahviewport, dengan bar gizmo tersendiri (translate, putar, skala, world/local, grid, snap, framing) dan pemilih kualiti
Kananinspektor untuk entiti yang dipilih
BawahConsole dan Profiler, bersebelahan
Bar statusmod, dimensi viewport, kiraan entiti, keadaan grid

Empat butang panel#

Bar alat Engine: nama adegan, buat asal, suis mod viewport, empat butang panel dan transport

Ia tidak semuanya berkelakuan sama, dan perbezaan ini berbaloi diketahui sebelum anda mencari sesuatu:

ButangKelakuan
Systemsmembuka satu laci
Toolsmembuka laci yang sama, Systems dan Tools saling menutup
Assetsmenogol satu dok berterusan
Scriptsmembuka satu modal

Systems dan Tools berkongsi satu slot dengan sengaja; ia diletakkan bersebelahan supaya kelihatan bahawa ia berbuat demikian.

Systems#

Subsistem enjin itu sendiri: perkara yang ada pada sebuah adegan, berbanding perkara yang anda gunakan untuk membina.

KumpulanPanel
Pluginspelayar plugin
RenderingRendering · Rendering Pipeline · Look Presets · Shader Lab · Render Style · Shadows · Mesh LOD · Post Process Volumes
GameplayMultiplayer room · Physics · AI & Navigation · Gameplay Zones
WorldScene Graph · Level Streaming · Baking · Light Probes · Decals

Perenderan#

Suis FX Master pada bar alat menghidupkan dan mematikan keseluruhan saluran pasca-pemprosesan dengan satu klik: cara paling pantas untuk melihat kos sebenarnya. Secara individu: bloom, depth of field, SSR, SSAO, GTAO, SSGI, temporal AA, FXAA, motion blur, kabus volumetrik, contact shadows, penggredan warna, film grain, aberasi kromatik, vignette dan tonemapping, ditambah geometri gaya Nanite dan oklusi Hi-Z.

Look Presets ialah konfigurasi lengkap bagi semua yang di atas. Render Style menukar daftar rupa, bergaya berbanding fotografik. Shader Lab ialah tempat anda menulis shader anda sendiri. Mesh LOD dan Post Process Volumes ialah dua yang berbaloi pada sebuah adegan besar: tahap perincian (level-of-detail) bagi setiap mesh, dan pasca-pemprosesan yang hanya terpakai di dalam satu volum.

Perender itu ialah Babylon.js. Ia bermula pada WebGL dan bertukar sendiri kepada WebGPU apabila pelayar menyokongnya, dan berundur semula dengan sendirinya jika itu gagal.

Sistem gameplay#

Physics meliputi kedua-dua penyelesai (solver) 3D (Havok) dan yang 2D. AI & Navigation ialah navmesh dan ejen-ejen di atasnya. Gameplay Zones ialah volum pencetus (trigger) dengan kelakuan yang dilekatkan. Multiplayer room menyambungkan adegan kepada pelayan Colyseus (lihat di bawah).

Sistem dunia#

Level Streaming memuatkan dan menyahmuatkan bahagian sesuatu tahap semasa pemain bergerak. Baking mengira pencahayaan lebih awal; Light Probes menangkap cahaya tidak langsung dan pantulan pada titik-titik dalam ruang. Decals mengunjurkan perincian ke atas permukaan tanpa menambah geometri.

Tools#

Perkara yang anda gunakan untuk membina.

KumpulanPanel
EditorsScripts · Blueprint Editor · UI Editor · Tilemap
WorldSky Studio · Terrain · Water · Tree Generator · Plant Generator · Rock Generator · Kitbash
GameplayInventory · Data tables · Dialogue Trees
AnimationTimeline · Cinematic Sequencer · Camera Tools
AudioAudio Manager
DebugProfiler

Penjana dunia#

Terrain, air, langit dan empat penjana kandungan, pokok, tumbuhan, batu dan kepingan kitbash. Ia mempunyai bab tersendiri di bawah.

Penulisan gameplay#

Inventory, Data tables (Tools → Data) dan Dialogue Trees ialah tiga editor yang membolehkan sebuah permainan mempunyai kandungan tanpa kandungan itu berada dalam kod secara terperinci di bawah.

Animasi#

Timeline untuk animasi entiti, Cinematic Sequencer untuk syot, dan Camera Tools untuk pembingkaian. Lihat Animasi dan kamera.

Editor dunia#

Tujuh panel di bawah Tools → World. Ia adalah cara pantas untuk mengisi sebuah adegan, dan sebab sesuatu tahap tidak perlu bermula dengan sesi pemodelan.

Terrain#

Sebuah adegan boleh memuatkan beberapa terrain; setiap satu ialah satu baris dalam senarai Terrains dan dicipta pada salah satu daripada tiga resolusi, 128² (pantas), 256² (seimbang) atau 512² (terperinci).

Panel ini mempunyai sepuluh mod, dan semuanya berkongsi satu perkara: topeng yang dilukis dalam Masks menyekat setiap satu daripadanya.

ModApa yang dilakukannya
Sculpttujuh belas berus pada medan ketinggian
Paintsehingga lapan lapisan tekstur, merentasi dua splatmap
Generatehingar, penteksturan automatik, dan import ketinggian dunia sebenar
Sketchlukis rabung dan lembah, sintesiskan satu rupa bumi yang sepadan
Masksmenyekat setiap mod lain kepada sebahagian permukaan
Waterparas laut, dan pilihan antara air rupa bumi dan lautan FFT
Pathsjalan Bézier yang dibakar ke dalam tanah
Vegetationserakan berasaskan berus atau peraturan
SDFsatu rupa bumi raymarch, dirender berbanding dimesh
Biomestanih, tumbuhan, pokok dan batu dalam satu laluan

Sculpt. Raise 1, Lower 2, Smooth 3, Flatten 4, Pinch 5, Inflate 6, Noise 7, Sharpen 8, Stamp 9, Terrace 0, Erode E, Fill F, Clone C (klik-Alt menetapkan sumber), Blur B, Ramp R, ditambah dua alat air, River melukis satu aliran, Lake mengisi pada satu titik.

Berus itu sendiri mempunyai dinamiknya sendiri: lengkung tekanan, tetikus malas, susutan, simetri, corak, dan variasi rawak pada saiz mahupun kekuatan. Stamp membawa enam bentuk, kawah, puncak gunung, dataran tinggi, lembah sungai, kubah, bukit hingar. Hakisan hadir dalam dua bentuk: berus E bersifat setempat, manakala Adjustments menjalankan hakisan hidraulik, haba dan angin ke atas seluruh rupa bumi.

Paint. Lapan lapisan, kerana dua splatmap RGBA membawa empat saluran masing-masing. Perpustakaan bahan disusun mengikut kategori, rumput, tanah, hutan, batu-batan, jalan dan permukaan, tebing, pasir, salji, gunung berapi, tanah lembap, fantasi, dan bahan anda sendiri, dan setiap lapisan membawa skala UV, anjakan, satu peta perincian, dan relief permukaan (kekuatan bump dan kedalaman parallax). Break texture tiling (cell bombing) ialah tetapan yang menghalang sesuatu tekstur tanah berulang daripada terbaca sebagai satu grid.

Generate membina daripada hingar, kemudian Generate Textures menetapkan bahan mengikut ketinggian dan cerun, dengan variasi lorekan utara/selatan serta pantai pasir atau kerikil di mana terdapat air. Real World mengimport jubin ketinggian awam NASA/USGS: pilih satu mercu tanda atau taip koordinat, pilih tahap zum, dan panel itu melaporkan julat ketinggian yang dibawanya.

Sketch ialah pintu masuk yang satu lagi. Lukis lakaran rabung dan lembah pada satu peta 2D, pilih sehingga tiga landskap sumber sebenar, dan rupa bumi disintesiskan untuk sepadan dengan lakaran itu, secara pilihan dicampur ke dalam apa yang sudah ada, diteksturkan secara automatik dan dihakis dalam laluan yang sama.

Masks dilukis dengan berus dan kemudian disunting secara keseluruhan: buang, songsangkan, kaburkan, besarkan, kecilkan. Topeng pintar (smart masks) menerbitkan satu topeng daripada rupa bumi itu sendiri, mengikut ketinggian, cerun, lapisan atau lekukan.

Paths. Klik untuk meletakkan titik kawalan dan satu lengkung licin melalui kesemuanya; seret titik ambar untuk menggerakkannya, dan pemegang cyan untuk membengkokkan lengkung itu. Bake Path meratakan tanah di bawahnya, melukis tekstur dan menaikkan tambakan.

Vegetation mempunyai dua bahagian. Berus meletakkan dan membuang instans secara tangan; peraturan serakan (scatter rules) meletakkannya mengikut syarat, pemberat lapisan, benih, skala min/maks, dan jalur ketinggian serta cerun yang diterima oleh setiap aset. Rumput dan bunga malap selepas jarak paparan yang boleh ditetapkan, dan Export to Scene menukar instans itu kepada objek adegan.

Biomes ialah versi satu-klik bagi semua yang di atas: pilih satu biome, tandakan kategori yang anda mahu (tanih, pokok, tumbuhan dan rumput, bunga, alga berhampiran air, batu-batan), tetapkan satu kepadatan, dan Apply Biome melukis tanah dan menyerakkan semuanya, melaporkan berapa banyak instans setiap satu yang diletakkannya. Variasi umur pokok mencampurkan anak benih hingga yang tua berbanding mengecap pokok yang sama di merata tempat, dan ground blend (RVT) meleburkan asas setiap batu ke dalam warna rupa bumi di bawahnya.

SDF ialah perender yang berbeza, bukan alat yang berbeza: rupa bumi itu di-raymarch daripada satu medan jarak, bentuk mengikut oktaf, lakunariti dan ketekunan, penteksturan rumput/batu/salji dengan satu garis salji dan ambang cerun, serta bayang-bayang lembut, oklusi ambien dan kabus tersendiri.

Rupa bumi yang besar mempunyai sistem LOD dengan geometri skirt (yang menutup jurang antara tahap), peralihan tahap yang licin, pemangkasan frustum dan satu overlay statistik. Peta ketinggian diimport dan dieksport sebagai PNG 16-bit, PNG 8-bit atau RAW 16-bit; splatmap sebagai satu PNG RGBA atau satu fail bagi setiap lapisan; dan keseluruhan rupa bumi, atau tetapannya sahaja, sebagai satu praset.

Sky Studio#

Atmosfera. Empat jenis langit, solid, gradien, HDRI, dan satu atmosfera fizikal dengan serakan Rayleigh dan Mie, penyerapan Mie, ozon, albedo tanah, kekeruhan (turbidity), jejari planet dan ketebalan atmosfera.

Semuanya bergantung pada masa hari, yang boleh berputar sendiri: matahari mengikut elevasi, azimut dan keamatan, dengan keamatan bayangnya sendiri; bulan mengikut fasa; bintang dengan kelipannya; dan satu aurora. Awan volumetrik mempunyai ketebalan, hakisan, skala hingar dan herotan curl, serta menerima cahaya melalui penyerapan, serakan, ambien dan satu sebutan powder; sirus dan Belt of Venus adalah berasingan. Perspektif udara ialah kabus yang menebal mengikut jarak dan melenyapkan geometri jauh ke dalam ufuk, ia tetapan yang menjadikan sesuatu landskap terbaca sebagai luas.

Sepuluh praset untuk bermula: siang cerah, subuh, senja matahari terbenam, senjakala, malam, mendung, ribut, gurun, artik dan angkasa lepas.

Air#

Dua tab: Ocean (FFT) untuk laut terbuka, Shore & lakes untuk selebihnya.

⚠️ Air dicipta dalam editor Terrain: alat sungai dan tasik, atau Show Water, dan diselaraskan di sini. Membuka panel ini pada sebuah adegan tanpa air memberi anda tetapan tanpa apa-apa untuk dikenakan.

Air pantai membawa warna, kelegapan, kekuatan dan kelajuan ombak, choppiness, lebar buih dan Fresnel, dengan pantulan ruang skrin dan kaburan pembiasan. Di bawahnya ialah shader WGSL itu sendiri: dua skala normal dengan arah dan kelajuan skrol masing-masing, ambang dan kelembutan buih, kekuatan pembiasan dan indeks pembiasan, serta cahaya di dalam air itu sendiri, penyerapan, kekeruhan, serakan dan ketelusan.

Penjana pokok#

Dua mod, Tree dan Trunk. Sebatang pokok bersifat luruh atau sentiasa hijau, mempunyai umur daripada anak benih hingga purba, dan boleh hidup, mati, tunggul atau tunggang. Semuanya berbenih, jadi Randomize seed ialah cara paling pantas untuk mendapatkan pokok lain dengan perwatakan yang sama.

Bentuknya ditetapkan mengikut tahap dahan: anak, panjang, jejari, tirus, kekasaran, pulasan, seksyen, segmen, sudut dan ketinggian permulaan, ditambah variasi semula jadi, fototropisme dan gravitropisme: dua yang membuat pokok itu condong ke arah cahaya dan melentuk di bawah beratnya sendiri, serta satu daya global dengan kekuatannya sendiri. Pangkalnya mempunyai kembangan akar (lobus dan ketinggian) dan penopang.

Daun ialah billboard, satu atau dua muka, dengan bilangan, saiz, sudut, variasi, kelompok, gulungan, lentukan, kilauan dan normal bulat. Kulit kayu hadir dalam enam gaya, berbonjol, aspen, pain, birch, licin, palma, dengan relief, lumut, pangkal lembap, pemudaran matahari, oklusi ambien kanopi dan pertukaran musim luruh. Empat musim menukar keseluruhan rupanya sekali gus.

Forest menyerakkan banyak sekaligus: bilangan, jejari serakan, variasi skala, dan satu campuran umur (tunggal, semula jadi, muda, tua, sekata). Add age progression meletakkan kelima-lima peringkat hidup dalam satu baris, cara paling pantas untuk menilainya bersebelahan. Sepohon pokok keluar sebagai entiti adegan atau sebagai GLB, dan mana-mana tetapan boleh disimpan sebagai praset.

Penjana tumbuhan#

Lima jenis, bunga, kelompok, herba, paku pakis, rumput, berkongsi satu batang (bilangan, ketinggian, ketebalan, lengkung, warna) dan daun (bilangan, saiz, lebar, sudut). Paku pakis menambah pasangan anak daun, sapuan anak daun dan lengkung fronda; rumput menambah bilangan bilah dan lengkung.

Sekuntum bunga adalah pilihan pada mana-mana daripadanya: kelopak, baris kelopak, panjang, lebar, gulungan, ketajaman hujung, kembangan, saiz pusat, dan tiga warna, kelopak, hujung kelopak dan pusat, dengan ketelusan dan kekasaran untuk cara cahaya menembusi daun. Tambah satu ke dalam adegan, serakkan banyak, atau eksport sebagai GLB.

Penjana batu#

Tiga jenis, batu, batu kecil, tebing, dalam tiga gaya: realistik, toon, atau low poly dengan garis luar.

Bentuk adalah hingar ke atas sebuah sfera: skala, kekuatan, oktaf, ketekunan, herotan dan satu pilihan berigi (ridged), ditambah strata dengan frekuensinya sendiri dan potongan faset dengan kedalaman dan ketajaman untuk batu bersegi. Jejari, perincian, kepipihan, variasi bentuk dan asas rata menentukan siluet, dan empat praset hakisan, segar, lapuk, semula jadi, terhakis, menggerakkan semuanya sekaligus.

Permukaan mempunyai variasi warna, urat mineral, lichen dan lumut, satu tekstur perincian dengan jubinan dan kekuatannya, pencampuran triplanar dan relief parallax. Ia menggunakan bahan Stone terbina secara lalai; hantar satu bahan daripada Matter kepada Engine untuk menggantikannya.

Kitbash, perpustakaan yang sama seperti Sculpt#

Kitbash dikongsi dengan Sculpt: panel ini dan Edit Forge milik Sculpt membaca satu perpustakaan yang sama. Sekeping yang dibina di sana boleh diletakkan di sini, dan sekeping yang dicat di sini boleh disimpan semula ke situ.

Apa yang disimpan oleh adegan ialah kepingan itu dan dimensinya, bukan verteksnya, itulah sebabnya sebuah bangunan kitbash hampir tidak mengambil apa-apa dalam fail dan boleh dikemas kini kemudian daripada sumbernya.

Persenjatai satu kepingan daripada katalog dan setiap klik kiri meletakkannya. Tiga mod snap menentukan tempat ia mendarat: di atas terrain (kepingan mengikut ketinggian tanah di bawahnya), di atas air (satah binaan berada pada paras air), dan snap ke soket, bidik satu titik sambungan pada kepingan yang diletakkan dan kepingan baharu berpaling untuk memenuhinya. Satu rantai berkembang daripada hujung bebasnya, soket yang telah digunakan gugur daripada calon, dan setiap klik ialah satu langkah buat asalnya sendiri. Ctrl/Cmd kekal khusus untuk pemilihan dan Alt untuk putaran. Koleksi mengekalkan sumber dan versinya, jadi sesuatu instans boleh dikemas kini apabila yang asal berubah.

Editor-editor lain#

Editor dunia mengisi sebuah adegan; yang berikut memberikannya satu antara muka, satu peta, jadual kandungannya dan instrumen untuk menyemak kosnya.

Editor HUD#

Tools → Editors → UI. Enam tab, Templates, Elements, Layers, Preview, Style dan Script: di atas satu pratonton yang bertukar antara tiga saiz peranti: desktop 960×540, tablet 768×432, mudah alih 375×667.

Elemen datang dalam tiga kumpulan (Display, Data, Input) dan bersarang: panel dan flex memuatkan anak, jadi tab Layers ialah pepohon sebenar berbanding senarai rata. Sejarah mempunyai lima puluh langkah.

⚠️ Tab Style adalah seakan CSS, dan perbezaan itu penting. HUD dilukis pada kanvas oleh GUI Babylon, dan CSS sebenar tidak sampai ke situ. Peraturan yang anda tulis di sini dipetakan kepada sifat GUI; pemilihnya ialah #nama untuk satu elemen, .jenis untuk satu jenis (.text, .panel) dan * untuk semuanya.

Tab Script ialah cara lain untuk membina satu HUD: API ui.*, createText, createPanel, createProgress, createButton, dengan dua cara untuk menjalankannya. Build Layout melaksanakannya pada masa reka bentuk dan meninggalkan elemen sebenar untuk anda laraskan dengan tangan; Run Live menjalankannya dalam permainan.

Dua sambungan ke luar: seni HUD dibuka dalam Inkwell atau Vectra dan dipautkan semula berbanding disalin, dan satu dokumen Vectra boleh diimport sebagai elemen HUD. Elemen minimap adalah entiti tersendiri, dengan jarak, grid, dan penanda untuk pemain, musuh, sekutu, item dan objektif.

Editor tilemap#

Sebelas alat, berus, pemadam, isian, segi empat tepat, pilihan, eyedropper, cop, autotile, prop, zon dan laluan, pada empat unjuran peta: ortogon, isometrik, isometrik bertingkat dan heksagon.

Autotiling membawa empat templat, dan nombor pada setiap nama ialah bilangan jubin yang dijangkanya: Blob 47 (sudut dan tepi penuh), Wang 16 (berasaskan tepi), Simple 4 (NSEW), dan RPG Maker A2 (48 jubin, serasi dengan peta yang dibina di sana).

Dua lapisan berada di atas jubin itu sendiri. Zones melukis makna gameplay, boleh dibina, air, hutan, jalan, ladang, kediaman, komersial, disekat, dan props meletakkan objek mengikut kategori: pokok, batu, bangunan, tumbuhan, air, laluan. Peta hidup dalam pangkalan data pelayar itu sendiri, jadi satu peta yang belum disimpan terus wujud selepas muat semula.

Inventori, jadual data dan dialog#

Tiga editor yang membolehkan sebuah permainan mempunyai kandungan tanpa kandungan itu berada dalam kod.

Inventory menyunting satu katalog dan menerapkannya pada adegan. Sesuatu item membawa tindakan, dan sesuatu tindakan ialah satu pencetus (trigger): use, equip, unequip, ditambah salah satu daripada lapan jenis: mesej, sembuh, kerosakan, beri, buang, peristiwa, toast, adegan. Panel itu sendiri mempunyai tiga susun atur (grid, senarai, padat), tiga praset penampilan (graphite, midnight, warm), dan empat slot visual, latar belakang, slot, kelengkapan, tooltip, yang dibuka dalam modul lain untuk dilukis semula dengan kemas.

Data tables ditaip: sesuatu lajur ialah text, number, bool atau ref. CSV masuk dan keluar. Setiap suntingan berjalan melalui fungsi tulen, dan itulah yang mengekalkan jadual yang ditulis oleh eksport sama seperti jadual yang dibaca oleh binaan.

Dialogue trees ialah nod dengan seorang penutur dan satu baris. Sesuatu nod sama ada bersambung kepada satu next, atau bercabang kepada choices, setiap satu dengan teks dan destinasinya sendiri, suis cabang itulah satu-satunya keputusan struktur dalam editor ini.

Animasi dan kamera#

Cinematic Sequencer membina jujukan dengan tempoh dan penanda gelung, satu trek bagi setiap entiti, dan kekunci yang ditangkap pada kepala main, Add Key mengambil nilai semasa entiti berbanding meminta anda menaipnya. Editor graf di bawahnya menunjukkan masa lawan kemajuan, dengan pemegang bulat untuk easing: kecerunan itulah kelajuan. Syot mempunyai tempoh masing-masing, dan satu pembingkaian Cinemascope (1.422:1) tersedia untuk letterbox.

Camera Tools meliputi FOV, kedudukan, sasaran, mod dan kelajuan, ditambah penanda buku (bookmarks) untuk sudut pandangan yang sering anda kembali kepadanya, dan lapisan kamera.

Audio#

Audio Manager memegang peristiwa audio, trek dan satu pengadun dengan saluran dan kategorinya. Kesan bagi setiap sumber ialah satu low-pass, satu high-pass dan satu reverb send; mod random memilih antara beberapa klip supaya bunyi berulang berhenti terdengar seperti satu gelung. Scrubbing memainkan audio semasa anda menyeret kepala main.

Profiler#

Satu pecahan bingkai, bukan pengira bingkai: render kamera, penilaian mesh, zarah, sprite dan kompilasi shader, setiap satu ditanda sebenar atau anggaran, supaya satu nombor yang datang daripada pengukuran tidak pernah disalahanggap sebagai nombor yang datang daripada satu model. Di sebelahnya, pengira: mesh dan mesh aktif, lampu, kamera, jasad fizik.

Rakaman bersifat eksplisit, dan ia berakhir dengan senarai Issues berbanding satu graf untuk ditafsir: FPS rendah, panggilan lukis tinggi, segi tiga tinggi, memori tinggi, terhadap kadar bingkai sasaran yang anda tetapkan.

Membina sebuah adegan#

Entiti#

Viewport Engine, dengan gizmo pada entiti yang dipilih

Sebuah adegan baharu tiba dengan satu Main Camera, satu Directional Light, satu Skybox dan satu Ground Plane.

Graf adegan, dengan empat entiti yang bermula dengan sebuah adegan baharu

Apa yang boleh anda tambah: Empty, Cube, Sphere, Cylinder, Plane, Light, Camera, Script, Mesh, ditambah dua keluarga yang tiba sudah tersambung:

  • Characters: Third-Person, First-Person (FPS), Top-Down, Platformer, Basic.
  • Props: Pickup (sembuh) dan Hazard (kerosakan).

Graf adegan boleh dicari, ditapis mengikut jenis, dan menambah, menduakan atau memadam; entiti bersarang, dan menukar induk (reparenting) hanya perlu diseret. Peletakan mempunyai snap dan satu berus serakan (scatter brush) untuk mengisi tanah dengan pantas.

Inspektor#

Transform (kedudukan, putaran, skala), satu suis Enabled, dan komponen-komponen entiti itu: ditambah, ditetapkan dan dibuang di sini, dengan Add Script di bahagian bawah. Pilih beberapa entiti dan inspektor bertukar kepada suntingan kelompok, jadi satu perubahan medan mendarat pada kesemuanya.

Konsol#

Bukan sekadar satu log. Ia menapis mengikut tahap (semua, log, info, amaran, ralat), memautkan satu mesej kembali kepada entiti yang menghasilkannya, dan membawa satu prompt ungkapan: taip satu ungkapan, Enter menjalankannya terhadap adegan yang hidup, anak panah menjelajahi sejarahnya.

Memberikannya kelakuan#

Tiga laluan, dan ia wujud bersama.

Skrip#

JavaScript dengan cangkuk kitaran hayat, dan rujukannya sendiri:

function start() {}                     // once, when the entity starts
function update(dt) {}                  // every frame
function fixedUpdate(dt) {}             // fixed timestep, for physics
function onCollisionEnter(other) {}     // first frame of contact
function onCollisionStay(other) {}      // every frame while touching
function onCollisionExit(other) {}      // contact just ended
function onTriggerEnter(other) {}       // entered a trigger volume
function onTriggerExit(other) {}
function onMessage(msg, data, senderId) {}   // entity-to-entity messaging
function onAnimationEvent(name, data) {}
function onDestroy() {}

Perlanggaran dan pencetus berlaku dalam 2D dan 3D, dan setiap pihak menerima normal sentuhannya sendiri: other.contact.normal menuding daripada entiti satu lagi ke arah entiti ini. Itulah yang membolehkan satu skrip membezakan "saya mendarat di atasnya" daripada "ia jatuh ke atas saya": satu pijakan gaya platformer membaca other.contact.normal.y > 0.5.

Editor skrip#

F2, atau Add Script pada satu entiti. Satu editor Monaco bertab, beberapa skrip dibuka serentak, setiap satu disimpan dalam pangkalan data pelayar itu sendiri berbanding dalam fail projek, jadi satu buffer yang belum disimpan terus wujud selepas muat semula.

Lima dialek, satu program. Suis bahasa menawarkan JavaScript, BASIC, Python, C# dan Rust. Apa yang dilakukannya bukan seperti yang kelihatan: JavaScript adalah sumber kebenaran, dan empat yang lain ialah paparan yang ditranspil daripada JS yang disimpan. Bertukar daripada Python ke Rust tidak menterjemah Python itu, editor kembali kepada JS asal Python itu dijana dan menterjemah JS itu. Terjemahan berbilang lompatan itulah yang merosakkan sesuatu program, dan editor ini enggan melakukannya.

Tiga belas templat dalam lima kategori, setiap satu dilabel mengikut kesukaran:

KategoriTemplat
Basicsskrip kosong dengan stub kitaran hayat
Movementputaran automatik · WASD · pergerakan 3D berasaskan paksi · lompatan fizik dengan pengesanan tanah · kamera orang ketiga mengikuti
Gameplayzon pencetus · bar kesihatan dengan kerosakan dan pemulihan · pemunculan bermasa
AIrondaan dengan amaran kedekatan pemain
Advancedbabak sinematik tak segerak gaya Verse · konkurensi berstruktur · ujian keseluruhan permukaan API

Praset pengawal watak dan prop permulaan permainan (pickup, hazard) muncul dalam senarai yang sama, cara praktikal untuk meletakkan satu pengawal yang berfungsi ke atas satu watak yang diimport.

Menjalankan dan menyahpepijat. F5 menjalankan, F9 meletakkan satu titik henti (breakpoint). Penyahpepijat berhenti pada satu baris, melangkah satu bingkai tunggal, dan melaporkan nilai hidup melalui ungkapan tontonan (watch expressions). Script Lab menjalankan satu program tanpa sebarang entiti dilekatkan langsung, satu ruang uji coba untuk API berbanding satu komponen pada satu objek.

Di sebelah kod: satu rujukan API, satu senarai simbol untuk fail yang dibuka, dan satu perpustakaan potongan (snippet) dengan kegemaran dan yang terkini. Ctrl+S menyimpan, Ctrl+F mencari, Ctrl+H menggantikan, dan editor ini membawa lapan tema.

Blueprint dan kelakuan#

Satu graf visual, satu perpustakaan kelakuan siap sedia, dan satu mesin keadaan (state machine) yang berlapis di atas timbunan kelakuan.

Graf itu membawa 267 nod dalam dua puluh dua kumpulan, Math, Scene, Entity, Animation, Flow Control, String, Events, Physics, UI, Array, Vector, Transform, Debug, Input, Utility, Game, Boolean, Camera, Tween, Variables, Audio dan keluarga 2D serta 3D. Tiga sifat memisahkannya, dan itulah yang membina graf ini: 17 nod peristiwa memulakan pelaksanaan, 117 nod tulen mengira satu nilai tanpa kesan sampingan dan tanpa pin pelaksanaan, dan 9 nod pendam (latent) selesai kemudian, itulah yang menjadikan satu kelewatan atau satu tween boleh dinyatakan tanpa satu mesin keadaan tersendiri.

Empat alat: pilih V, leret H, komen C, ubah hala (reroute) R, di atas satu kanvas yang zum daripada 0.1× hingga 3× dengan satu minimap. Pemboleh ubah datang dalam enam jenis, boolean, integer, float, string, vector3 dan objek. Penerangan setiap nod berada pada tooltip-nya, satu-satunya tempat sesuatu perpustakaan sebesar itu boleh menjelaskan dirinya.

Mesin keadaan#

Panelnya sendiri, dan sengaja bukan milik Animator: syarat Animator ialah satu enum rata dengan antara muka yang ditulis tangan bagi setiap kes, manakala yang ini berstruktur dan bercakap tentang dunia.

Tujuh syarat, dan setiap satu adalah satu soalan tentang adegan itu: sees (satu sasaran bertag dalam jarak, secara pilihan dalam satu sudut dan dalam garis pandangan), lost (tiada sasaran selama N saat), distance terhadap satu ambang, health, message received, timer (masa yang dihabiskan dalam keadaan semasa), dan flag (satu nilai pada blackboard yang dikongsi). Dua kombinator, and dan or, kedua-duanya disenaraikan walaupun or sudah wujud secara tersirat, dua peralihan kepada keadaan yang sama ialah satu or, tetapi "ia nampak saya DAN saya masih ada kesihatan" tiada bentuk langsung.

⚠️ Kesihatan dibandingkan sebagai pecahan daripada maksimum, tidak pernah secara mutlak. Satu ambang "di bawah 30 HP" tidak akan bertahan satu laluan mengimbang semula; "di bawah 0.3" bertahan.

Semasa memasuki atau meninggalkan satu keadaan, empat kesan: send satu mesej, set satu kunci blackboard, play satu klip animasi, atau lepaskan satu kesan bernama. Tiada satu pun daripadanya menggerakkan apa-apa, pergerakan kekal dengan kelakuan-kelakuan, dan mesin itu memutuskan kelakuan mana yang aktif.

Satu peralihan boleh bermula daripada *, bermaksud mana-mana keadaan. Pengesah mengembalikan senarai masalah berbanding melontar pada masalah pertama, jadi satu mesin separuh siap masih terlukis dan anda melihat segala yang salah sekaligus. Kedudukan nod adalah sebahagian daripada data: satu graf yang susun aturnya hidup di luar adegan kembali tersusun semula secara rawak bagi orang seterusnya yang membukanya.

BASIC#

Mod viewport TXT ialah satu persekitaran BASIC klasik dengan program demo yang disertakan, dan bahasa ini mempunyai rujukannya sendiri. Ia adalah bahasa sebenar di sini, bukan mainan: modul berbilang fail (#INCLUDE), numerik ditaip (integer bertanda dan tidak bertanda 8/16/32/64-bit, float32 dan float64), rekod bersarang, kaedah objek dengan SELF, rujukan (REF/BYREF), TRY/CATCH/ FINALLY berstruktur, kompilasi bersyarat, korutin, pemegang (handle) ditaip, dan pengiraan WebGPU dengan storage buffer dan WGSL mentah.

OPTION EXPLICIT bersifat pilihan; pemboleh ubah tersirat klasik kekal sebagai lalai supaya program yang diimport masih berjalan.

Bermain dan menghantar#

Main#

Play, Pause, Stop. Apabila dihentikan, satu sepanduk melaporkan apa yang diubah oleh sesi itu, jadi satu suntingan dalam mod main tidak pernah disimpan atau hilang secara senyap. Sesi boleh dirakam dan dimain semula ke dalam satu laporan pepijat, dan penanda buku senario membolehkan satu ujian permainan bermula daripada pertengahan sesuatu tahap.

Build#

Build mengambil satu jenis permainan (dikesan daripada adegan, atau ditetapkan dengan tangan: sidescroller/platformer, orang pertama/ketiga, berasaskan teks) dan satu sasaran.

  • Web: WebGPU dengan sandaran WebGL, WebXR sebagai pilihan (VR/AR), minifikasi, satu pengira FPS, dan satu pilihan embed assets yang menghasilkan satu fail tunggal.
  • Desktop dan mudah alih: binaan native. Adegan dieksport sebagai data (scene.glb + scene.json) dan dikompil melalui satu projek Bevy (Rust) yang dijana; skrip berjalan tanpa perubahan di sana pada satu runtime QuickJS terbenam.

Pemampatan boleh ditetapkan mengikut paksi, algoritma, tekstur, mesh, dengan satu praset kualiti yang mengikatnya bersama. Binaan disimpan dalam satu sejarah dengan saiznya (asal berbanding termampat) dan boleh dimuat turun semula kemudian.

Satu binaan native hanya mengandungi apa yang diketahui oleh pengeksport untuk dieksport. glTF tidak menangkap shader tersuai, thin instance, langit prosedural atau pasca-pemprosesan, jadi satu sistem runtime yang belum dipindahkan ke pihak Bevy akan hilang daripada satu binaan desktop atau mudah alih sambil kelihatan sempurna di web. Semak satu binaan native sebelum bergantung kepadanya.

Multiplayer#

Panel Multiplayer room menyambungkan sebuah adegan kepada satu pelayan permainan Colyseus. Satu pelayan ujian yang dikongsi dan percuma tersedia tanpa akaun dan tanpa konfigurasi; satu projek juga boleh diberikan pelayannya sendiri. Bilik itu dikunci pautan (keyed) oleh satu kod perkongsian yang boleh anda simpan untuk diri sendiri atau berikan kepada orang lain.

Fail yang dibaca dan ditulis#

Format native.engine
Imports.glb, .gltf, .obj, .fbx, .png, .svg, .mp4, .webm, .mov, .scene
Exportssatu binaan web, satu binaan native desktop/mudah alih, scene.glb + scene.json

Menghantar kerja ke modul lain#

Menerima mesh daripada Sculpt, Retopo dan Pigment, keseluruhan adegan daripada Render, seni piksel, animasi, set bahan PBR daripada Matter, rig 2D, projek video, imej, seni vektor, dan objek Vectra.

Menghasilkan rig 2D.

Sebuah machup skrin Vectra tiba sebagai struktur, bukan sebagai gambar. Ia menjadi satu hierarki HUD yang boleh disusun atur dan diskrip oleh Engine: perbezaan antara satu reka bentuk yang boleh anda hubungkan dengan satu tangkapan skrin bagi reka bentuk itu.

Pintasan#

Cmd/Ctrl + K mencapai perintah Engine sendiri daripada palet, bersama perintah global. Engine juga mempunyai panel pintasan papan kekunci khusus yang boleh dicari dalam tetapannya sendiri; ia mempunyai jauh lebih banyak daripada yang muat pada halaman pintasan.

Had dan masalah lazim#

  • Satu viewport kosong biasanya adalah pelayar, bukan adegan. Engine memerlukan WebGL 2; semak sama ada pecutan perkakasan dihidupkan.
  • Systems dan Tools berkongsi satu laci. Jika satu panel "hilang", ia mungkin berada dalam satu lagi.
  • Konsol adalah tempat pertama untuk diperiksa, bukan yang terakhir: ia memautkan ralat kembali kepada entiti yang menyebabkannya.
  • Satu komponen yang ditambah dalam mod main mungkin tidak bertahan selepas dihentikan. Baca sepanduk yang muncul apabila anda berhenti.
  • Fizik berbeza antara 2D dan 3D pada penyelesainya walaupun panggilan balik skrip adalah sama. Satu sentuhan rehat dalam 2D dikesan dengan kulit 2 mm, kerana penyelesai itu membawa penembusan kepada tepat sifar sebelum pengesanan berjalan.