Engine
Game engine đầy đủ: scene graph, component, scripting, vật lý, một pipeline PBR, các trình dựng thế giới, và bản build native cho desktop và mobile.
Tóm gọn trong một câu#
Một game engine đầy đủ ngay trong trình duyệt: dựng một scene, cho nó hành vi, nhấn play, và xuất nó ra web hoặc thành một file thực thi native cho desktop và mobile.
Đây là studio lớn nhất trong aukimi, bỏ xa các module khác. Trang này bản đồ hoá nó theo đúng cách giao diện làm: theo ngăn kéo mà mỗi panel nằm trong đó, thay vì liệt kê tính năng theo thứ tự chữ cái.
Bố cục#

| Menu bar | File · Edit · View · Windows · Run · Plugins |
| Toolbar | tên dự án, undo/redo, nút chuyển chế độ viewport (3D · 2.5D · 2D · TXT), bộ chọn scene, bốn nút panel, FX Master, HUD, ô độ phân giải, thanh điều khiển phát (play, pause, stop) và Build |
| Bên trái | một dải icon, scene graph, danh sách, audio, console, và panel nó mở ra |
| Ở giữa | viewport, kèm thanh gizmo riêng (translate, rotate, scale, world/local, grid, snapping, framing) và một bộ chọn chất lượng |
| Bên phải | inspector cho entity đang chọn |
| Phía dưới | Console và Profiler, nằm cạnh nhau |
| Thanh trạng thái | chế độ, kích thước viewport, số lượng entity, trạng thái lưới |
Bốn nút panel#

Chúng không hành xử giống nhau, và sự khác biệt đó đáng biết trước khi bạn đi tìm thứ gì đó:
| Nút | Hành vi |
|---|---|
| Systems | mở một ngăn kéo |
| Tools | mở cùng ngăn kéo đó, Systems và Tools đóng lẫn nhau |
| Assets | bật tắt một dock cố định |
| Scripts | mở một modal |
Systems và Tools có chủ đích dùng chung một chỗ; chúng được đặt cạnh nhau để điều đó lộ rõ.
Systems#
Các hệ thống con của riêng engine: những thứ một scene có, thay vì những thứ bạn tạo ra bằng.
| Nhóm | Panel |
|---|---|
| Plugins | trình duyệt plugin |
| Rendering | Rendering · Rendering Pipeline · Look Presets · Shader Lab · Render Style · Shadows · Mesh LOD · Post Process Volumes |
| Gameplay | Multiplayer room · Physics · AI & Navigation · Gameplay Zones |
| World | Scene Graph · Level Streaming · Baking · Light Probes · Decals |
Rendering#
Nút chuyển FX Master trên toolbar bật hoặc tắt toàn bộ pipeline hậu kỳ chỉ với một cú nhấp: cách nhanh nhất để thấy nó đang tốn bao nhiêu. Từng cái riêng lẻ: bloom, depth of field, SSR, SSAO, GTAO, SSGI, temporal AA, FXAA, motion blur, sương mù thể tích, contact shadows, chỉnh màu, film grain, sắc sai, vignette và tonemapping, cộng thêm hình học kiểu Nanite và occlusion Hi-Z.
Look Presets là cả một cấu hình của những thứ trên. Render Style đổi hẳn phong cách, cách điệu thay vì chân thực. Shader Lab là nơi bạn tự viết shader riêng. Mesh LOD và Post Process Volumes là hai thứ tự trả lại công sức trên một scene lớn: mức chi tiết theo từng mesh, và hậu kỳ chỉ áp dụng bên trong một volume.
Renderer là Babylon.js. Nó khởi động trên WebGL và tự chuyển sang WebGPU khi trình duyệt có, tự quay lại nếu điều đó thất bại.
Hệ thống gameplay#
Physics bao phủ cả bộ giải 3D (Havok) lẫn bộ giải 2D. AI & Navigation là navmesh và các agent trên đó. Gameplay Zones là các trigger volume kèm hành vi gắn vào. Multiplayer room kết nối scene với một server Colyseus (xem bên dưới).
Hệ thống thế giới#
Level Streaming nạp và giải phóng các phần của một level khi người chơi di chuyển. Baking tính toán trước ánh sáng; Light Probes ghi lại ánh sáng gián tiếp và phản xạ tại các điểm trong không gian. Decals chiếu chi tiết lên bề mặt mà không thêm hình học.
Tools#
Những thứ bạn tạo ra bằng.
| Nhóm | Panel |
|---|---|
| Editors | Scripts · Blueprint Editor · UI Editor · Tilemap |
| World | Sky Studio · Terrain · Water · Tree Generator · Plant Generator · Rock Generator · Kitbash |
| Gameplay | Inventory · Data tables · Dialogue Trees |
| Animation | Timeline · Cinematic Sequencer · Camera Tools |
| Audio | Audio Manager |
| Debug | Profiler |
Các trình tạo thế giới#
Terrain, water, sky và bốn trình tạo nội dung, cây, cây bụi, đá và các mảnh kitbash. Chúng có một chương riêng bên dưới.
Tạo nội dung gameplay#
Inventory, Data tables (Tools → Data) và Dialogue Trees là ba trình chỉnh sửa cho phép một trò chơi có nội dung mà không cần nội dung đó nằm trong code chi tiết bên dưới.
Animation#
Timeline cho animation của entity, Cinematic Sequencer cho các shot, và Camera Tools cho việc lấy khung hình. Xem Animation và camera.
Các trình chỉnh sửa thế giới#
Bảy panel nằm dưới Tools → World. Chúng là cách nhanh để lấp đầy một scene, và là lý do vì sao một level không cần bắt đầu bằng một phiên dựng mô hình.
Terrain#
Một scene có thể chứa nhiều terrain; mỗi terrain là một dòng trong danh sách Terrains và được tạo ở một trong ba độ phân giải, 128² (nhanh), 256² (cân bằng) hoặc 512² (chi tiết).
Panel có mười chế độ, và chúng có chung một điểm: mask được vẽ trong Masks giới hạn tất cả các chế độ đó.
| Chế độ | Chức năng |
|---|---|
| Sculpt | mười bảy cọ trên trường độ cao |
| Paint | tối đa tám lớp texture, trên hai splatmap |
| Generate | noise, tự động lên texture, và nhập độ cao thực tế |
| Sketch | vẽ đường sống núi và thung lũng, tổng hợp một terrain khớp với đó |
| Masks | giới hạn mọi chế độ khác vào một phần của bề mặt |
| Water | mực nước biển, và lựa chọn giữa nước terrain và một đại dương FFT |
| Paths | một con đường Bézier được nướng vào mặt đất |
| Vegetation | rải bằng cọ hoặc theo quy tắc |
| SDF | một terrain raymarch, được render thay vì được tạo mesh |
| Biomes | đất, cây cối, đá trong một lượt duy nhất |
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 (Alt-click đặt nguồn), Blur B, Ramp R, cộng thêm hai công cụ
nước, River vẽ một dòng chảy, Lake lấp đầy tại một điểm.
Bản thân cọ có động lực riêng: đường cong áp lực, chuột lười (lazy mouse),
falloff, đối xứng, pattern, và jitter trên cả kích thước lẫn cường độ.
Stamp mang theo sáu hình dạng, miệng núi lửa, đỉnh núi, cao nguyên, thung
lũng sông, mái vòm, đồi noise. Xói mòn có hai dạng: cọ E là cục bộ, trong
khi Adjustments chạy xói mòn thuỷ lực, nhiệt và gió trên toàn bộ
terrain.
Paint. Tám lớp, vì hai splatmap RGBA giữ bốn kênh mỗi cái. Thư viện vật liệu được sắp theo danh mục, cỏ, đất, rừng, đá, đường và mặt đất, vách đá, cát, tuyết, núi lửa, đầm lầy, kỳ ảo, và vật liệu của riêng bạn, mỗi lớp mang theo tỉ lệ UV, displacement, một detail map, và độ nổi bề mặt (cường độ bump và độ sâu parallax). Break texture tiling (cell bombing) là thiết lập ngăn một texture mặt đất lặp lại đọc lên như một lưới ô vuông.
Generate dựng từ noise, rồi Generate Textures gán vật liệu theo độ cao và độ dốc, kèm biến thiên bóng đổ bắc/nam và đường bờ cát hoặc sỏi ở những nơi có nước. Real World nhập các tile độ cao NASA/USGS công khai: chọn một địa danh hoặc gõ toạ độ, chọn mức zoom, và panel báo cáo khoảng độ cao nó lấy về.
Sketch là lối đi ngược lại. Vẽ các nét sống núi và thung lũng trên một bản đồ 2D, chọn tối đa ba phong cảnh nguồn thật, và terrain được tổng hợp khớp với bản vẽ, có thể trộn tuỳ chọn vào những gì đã có sẵn, tự động lên texture và xói mòn trong cùng một lượt.
Masks được vẽ bằng cọ rồi chỉnh sửa như một khối: xoá, đảo ngược, làm mờ, mở rộng, thu nhỏ. Smart masks suy ra một mask từ chính terrain, theo độ cao, theo độ dốc, theo lớp hoặc theo độ lõm.
Paths. Nhấp để đặt các điểm điều khiển và một đường cong mượt chạy qua chúng; kéo các điểm màu hổ phách để di chuyển chúng, các handle màu lục lam để uốn đường cong. Bake Path làm phẳng mặt đất bên dưới nó, sơn texture và dựng lên các bờ đắp.
Vegetation có hai nửa. Cọ đặt và xoá các instance bằng tay; scatter rules đặt chúng theo điều kiện, trọng số lớp, seed, tỉ lệ tối thiểu/tối đa, và dải độ cao và độ dốc mà mỗi asset chấp nhận. Cỏ và hoa mờ dần sau một khoảng cách vẽ có thể cấu hình, và Export to Scene biến các instance thành các đối tượng scene.
Biomes là phiên bản một-cú-nhấp của tất cả những gì ở trên: chọn một biome, tích các danh mục bạn muốn (đất, cây, cây bụi và cỏ, hoa, tảo gần nước, đá), đặt một mật độ, và Apply Biome sơn mặt đất và rải mọi thứ, báo cáo số lượng instance của mỗi loại nó đã đặt. Age variety của cây trộn lẫn từ cây con đến cây cổ thụ thay vì lặp cùng một cây khắp nơi, và ground blend (RVT) hoà chân mỗi tảng đá vào màu terrain bên dưới nó.
SDF là một renderer khác, không phải một công cụ khác: terrain được raymarch từ một distance field, hình dạng theo octave, lacunarity và persistence, lên texture theo cỏ/đá/tuyết với một đường tuyết và một ngưỡng độ dốc, và có bóng đổ mềm, ambient occlusion và sương mù riêng.
Các terrain lớn có một hệ thống LOD kèm hình học skirt (đây là thứ khép lại các khe hở giữa các cấp), chuyển cấp mượt, frustum culling và một lớp phủ thống kê. Heightmap nhập và xuất dưới dạng PNG 16-bit, PNG 8-bit hoặc RAW 16-bit; splatmap dưới dạng một PNG RGBA hoặc một file cho mỗi lớp; và cả terrain, hoặc chỉ thiết lập của nó, dưới dạng một preset.
Sky Studio#
Bầu khí quyển. Bốn kiểu bầu trời, solid, gradient, HDRI, và một bầu khí quyển vật lý với tán xạ Rayleigh và Mie, hấp thụ Mie, ozone, albedo mặt đất, độ đục (turbidity), bán kính hành tinh và độ dày khí quyển.
Mọi thứ đều gắn với thời gian trong ngày, thứ có thể tự chạy theo chu kỳ: mặt trời theo độ cao, phương vị và cường độ, kèm cường độ bóng riêng; mặt trăng theo pha; các ngôi sao có nhấp nháy; và một cực quang. Volumetric clouds có độ dày, xói mòn, tỉ lệ noise và biến dạng curl, và ánh sáng qua hấp thụ, tán xạ, ambient và một thành phần powder; cirrus và Belt of Venus là riêng biệt. Aerial perspective là lớp sương dày dần theo khoảng cách và làm mờ hình học ở xa vào đường chân trời, đây chính là thiết lập khiến một phong cảnh đọc lên như thật rộng lớn.
Mười preset để bắt đầu: ngày quang, bình minh, hoàng hôn, chạng vạng, đêm, âm u, giông bão, sa mạc, băng giá và không gian.
Water#
Hai tab: Ocean (FFT) cho biển khơi, Shore & lakes cho mọi thứ khác.
⚠️ Nước được tạo ra trong trình chỉnh sửa Terrain: các công cụ river và lake, hoặc Show Water, và được tinh chỉnh ở đây. Mở panel này trên một scene chưa có nước sẽ cho bạn các thiết lập không có gì để áp dụng lên.
Nước ven bờ mang theo màu sắc, độ trong suốt, cường độ và tốc độ sóng, độ gợn (choppiness), độ rộng bọt và Fresnel, kèm phản xạ và khúc xạ mờ trong không gian màn hình. Bên dưới đó là chính shader WGSL: hai tỉ lệ normal với hướng cuộn và tốc độ riêng, ngưỡng và độ mềm của bọt, cường độ khúc xạ và chỉ số khúc xạ, và ánh sáng bên trong nước, hấp thụ, độ đục, tán xạ và độ trong mờ.
Tree Generator#
Hai chế độ, Tree và Trunk. Một cái cây có thể là rụng lá hoặc thường xanh, có một độ tuổi từ cây con đến cổ thụ, và có thể còn sống, đã chết, khô héo hoặc là một khúc gỗ đổ. Mọi thứ đều dùng seed, nên Randomize seed là cách nhanh nhất để có một cái cây khác mà vẫn giữ cùng một tính cách.
Hình dạng được đặt theo từng cấp cành: số nhánh con, chiều dài, bán kính, độ thon, độ xoắn (gnarliness), độ vặn, số đoạn, số segment, góc và độ cao bắt đầu, cộng thêm biến thiên tự nhiên, phototropism và gravitropism: hai yếu tố khiến một cái cây nghiêng về phía ánh sáng và rũ xuống dưới trọng lượng của chính nó, cùng một lực toàn cục với cường độ riêng. Gốc cây có root flare (thuỳ và độ cao) và bờ chống (buttress).
Lá là các billboard, một mặt hoặc hai mặt, kèm số lượng, kích thước, góc, biến thiên, cụm, cong, rũ, độ bóng và normal bo tròn. Vỏ cây có sáu kiểu, sần sùi, dương, thông, bạch dương, mịn, cọ, kèm độ nổi, rêu, gốc ẩm, bạc màu vì nắng, ambient occlusion tán cây và một sắc thu. Bốn mùa chuyển cả diện mạo cùng lúc.
Forest rải nhiều cây cùng lúc: số lượng, bán kính lan toả, biến thiên tỉ lệ, và một hỗn hợp độ tuổi (đơn nhất, tự nhiên, trẻ, già, đều). Add age progression đặt cả năm giai đoạn đời thành một hàng, cách nhanh nhất để so sánh chúng cạnh nhau. Một cái cây rời đi dưới dạng một entity scene hoặc dưới dạng GLB, và bất kỳ thiết lập nào cũng có thể lưu thành một preset.
Plant Generator#
Năm loại, hoa, cụm, thảo mộc, dương xỉ, cỏ, dùng chung một thân (số lượng, chiều cao, độ dày, độ cong, màu sắc) và lá (số lượng, kích thước, chiều rộng, góc). Dương xỉ thêm cặp lá chét, độ quét lá chét và độ cong tán lá; cỏ thêm số lượng lá và độ cong.
Một bông hoa là tuỳ chọn trên bất kỳ loại nào trong số đó: cánh hoa, hàng cánh hoa, chiều dài, chiều rộng, độ cong, độ nhọn đầu, độ nở, kích thước tâm, và ba màu, cánh hoa, đầu cánh hoa và tâm, kèm độ trong mờ và độ nhám cho cách ánh sáng xuyên qua lá. Thêm một cây vào scene, rải nhiều cây, hoặc xuất GLB.
Rock Generator#
Ba loại, đá tảng, đá nhỏ, vách đá, theo ba phong cách: chân thực, toon, hoặc low poly kèm viền.
Hình dạng là noise phủ lên một hình cầu: tỉ lệ, cường độ, số octave, persistence, warp và một tuỳ chọn ridged, cộng thêm strata với tần số riêng và facet cuts với độ sâu và độ sắc cho đá góc cạnh. Bán kính, chi tiết, làm phẳng, biến thiên hình dạng và một đáy phẳng quyết định đường viền, và bốn preset xói mòn, mới, phong hoá, tự nhiên, mòn, dịch chuyển tất cả cùng lúc.
Bề mặt có biến thiên màu sắc, vân khoáng, địa y và rêu, một detail texture kèm tiling và cường độ, hoà trộn triplanar và độ nổi parallax. Nó dùng một vật liệu Stone đóng gói sẵn theo mặc định; gửi một vật liệu từ Matter sang Engine để ghi đè nó.
Kitbash, cùng một thư viện với Sculpt#
Kitbash dùng chung với Sculpt: panel này và Edit Forge của Sculpt đọc cùng một thư viện. Một mảnh dựng ở đó được đặt ở đây, và một mảnh được sơn ở đây có thể lưu ngược lại vào thư viện đó.
Thứ scene lưu trữ là phần đó và kích thước của nó, không phải các vertex của nó, đó là lý do một toà nhà kitbash gần như không tốn gì trong file và có thể được cập nhật sau này từ nguồn của nó.
Chọn một mảnh từ danh mục và mỗi cú nhấp trái chuột đặt nó xuống. Ba chế độ
snap quyết định nó rơi ở đâu: on terrain (các mảnh theo độ cao mặt đất
bên dưới chúng), on water (mặt phẳng dựng nằm ở mực nước), và snap to
sockets, nhắm vào một điểm kết nối trên một mảnh đã đặt và mảnh mới sẽ xoay
để khớp vào đó. Một chuỗi mọc dài từ đầu tự do của nó, các socket đã dùng
rời khỏi danh sách ứng viên, và mỗi cú nhấp là một bước undo riêng.
Ctrl/Cmd vẫn dành riêng cho việc chọn và Alt cho xoay. Các collection
giữ nguồn và phiên bản của chúng, nên một instance có thể được cập nhật khi
bản gốc thay đổi.
Các trình chỉnh sửa khác#
Các trình chỉnh sửa thế giới lấp đầy một scene; những cái này cho nó một giao diện, một bản đồ, các bảng nội dung và công cụ để kiểm tra chi phí của nó.
Trình chỉnh sửa HUD#
Tools → Editors → UI. Sáu tab, Templates, Elements, Layers, Preview, Style và Script: trên một bản preview chuyển đổi giữa ba kích thước thiết bị: desktop 960×540, tablet 768×432, mobile 375×667.
Element có ba nhóm (Display, Data, Input) và lồng vào nhau:
panel và flex chứa các phần tử con, nên tab Layers là một cây thực sự
chứ không phải một danh sách phẳng. History sâu năm mươi bước.
⚠️ Tab Style giống CSS, và sự khác biệt đó quan trọng. HUD được vẽ lên
canvas bằng GUI của Babylon, và CSS thật không chạm tới nó. Các rule bạn viết
ở đây ánh xạ vào thuộc tính GUI; selector là #name cho một element,
.type cho một loại (.text, .panel) và * cho tất cả.
Tab Script là cách còn lại để dựng một HUD: API ui.*, createText,
createPanel, createProgress, createButton, kèm hai cách để chạy nó.
Build Layout thực thi nó ở thời điểm thiết kế và để lại cho bạn các
element thật để chỉnh tay; Run Live chạy nó trong game.
Hai kết nối ra ngoài: tác phẩm đồ hoạ HUD mở trong Inkwell hoặc Vectra và được liên kết ngược thay vì sao chép, và một tài liệu Vectra có thể được nhập thành các element HUD. Element minimap là một thứ riêng, kèm phạm vi, lưới, và các marker cho người chơi, kẻ địch, đồng minh, vật phẩm và mục tiêu.
Trình chỉnh sửa tilemap#
Mười một công cụ, brush, eraser, fill, rectangle, select, eyedropper, stamp, autotile, prop, zone và path, trên bốn phép chiếu bản đồ: orthogonal, isometric, staggered isometric và hexagonal.
Autotiling đi kèm bốn template, và con số trong mỗi tên là số lượng tile nó cần: Blob 47 (góc và cạnh đầy đủ), Wang 16 (dựa trên cạnh), Simple 4 (NSEW), và RPG Maker A2 (48 tile, tương thích với các bản đồ được tạo ở đó).
Hai lớp nằm trên bản thân các tile. Zones sơn ý nghĩa gameplay, xây được, nước, rừng, đường, nông trại, khu dân cư, khu thương mại, bị chặn, và props đặt đối tượng theo danh mục: cây, đá, toà nhà, cây bụi, nước, đường mòn. Bản đồ nằm trong cơ sở dữ liệu riêng của trình duyệt, nên một bản đồ chưa lưu vẫn sống sót qua một lần tải lại trang.
Kho, các bảng dữ liệu và hội thoại#
Ba trình chỉnh sửa cho phép một trò chơi có nội dung mà không cần nội dung đó nằm trong code.
Inventory chỉnh sửa một danh mục và áp dụng nó vào scene. Một vật phẩm
mang theo các action, và một action là một trigger: use, equip,
unequip, cộng với một trong tám type: message, heal, damage, grant,
remove, event, toast, scene. Bản thân panel có ba layout (lưới, danh sách,
gọn), ba preset diện mạo (graphite, midnight, warm), và bốn slot hình ảnh,
background, slot, equipment, tooltip, mở trong một module khác để vẽ lại
đúng cách.
Data tables có kiểu: một cột là text, number, bool hoặc ref. CSV
vào và ra. Mọi chỉnh sửa chạy qua các hàm thuần (pure function), đó là thứ
giữ cho bảng mà export ghi ra giống hệt bảng mà build đọc vào.
Dialogue trees là các node kèm một người nói và một câu thoại. Một node
hoặc tiếp tục tới một next, hoặc rẽ nhánh thành các choices, mỗi lựa
chọn có văn bản riêng và đích đến riêng, công tắc rẽ nhánh là quyết định cấu
trúc duy nhất trong trình chỉnh sửa.
Animation và camera#
Cinematic Sequencer dựng các sequence kèm một thời lượng và một cờ lặp, một track cho mỗi entity, và keyframe được ghi tại vị trí playhead, Add Key lấy giá trị hiện tại của entity thay vì bắt bạn gõ nó vào. Trình chỉnh sửa đồ thị bên dưới hiển thị thời gian so với tiến trình, kèm handle tròn cho easing: độ dốc chính là tốc độ. Các shot có thời lượng riêng, và một khung hình Cinemascope (1,422:1) có sẵn cho hiệu ứng letterbox.
Camera Tools bao phủ FOV, vị trí, mục tiêu, chế độ và tốc độ, cộng thêm bookmark cho các góc nhìn bạn hay quay lại, và các lớp camera.
Audio#
Audio Manager giữ các sự kiện audio, track và một bộ trộn kèm channel và category. Effect theo từng nguồn là một low-pass, một high-pass và một reverb send; chế độ random chọn giữa nhiều clip để một âm thanh lặp lại thôi đọc lên như một vòng lặp. Tua playhead sẽ phát audio trong khi bạn kéo nó.
Profiler#
Một bảng phân tích theo frame, không phải một bộ đếm frame: render camera, đánh giá mesh, particle, sprite và biên dịch shader, mỗi thứ được đánh dấu thực đo hoặc ước tính để một con số đến từ một phép đo không bao giờ bị nhầm với một con số đến từ một mô hình. Các bộ đếm đi kèm: mesh và mesh đang hoạt động, đèn, camera, thân vật lý (physics body).
Việc ghi lại là chủ động, và nó kết thúc bằng một danh sách Issues thay vì một biểu đồ để diễn giải: FPS thấp, draw call cao, số tam giác cao, bộ nhớ cao, so với tốc độ khung hình mục tiêu bạn đã đặt.
Dựng một scene#
Entity#

Một scene mới đến với một Main Camera, một Directional Light, một Skybox và một Ground Plane.

Những gì bạn có thể thêm vào: Empty, Cube, Sphere, Cylinder, Plane, Light, Camera, Script, Mesh, cộng thêm hai nhóm đến sẵn đã nối dây:
- Characters: Third-Person, First-Person (FPS), Top-Down, Platformer, Basic.
- Props: Pickup (heal) và Hazard (damage).
Scene graph tìm kiếm, lọc theo loại, và thêm, nhân đôi hoặc xoá; các entity lồng vào nhau, và đổi cha là một thao tác kéo. Việc đặt đối tượng có snapping và một cọ rải (scatter brush) để lấp đầy mặt đất nhanh chóng.
Inspector#
Transform (vị trí, xoay, tỉ lệ), một công tắc Enabled, và các component của entity: được thêm, cấu hình và xoá ở đây, với Add Script ở dưới cùng. Chọn nhiều entity và inspector chuyển sang chỉnh sửa hàng loạt, nên một thay đổi trên một trường sẽ áp lên tất cả chúng.
Console#
Không chỉ là một nhật ký. Nó lọc theo cấp (all, logs, info, warning, error),
liên kết một thông điệp ngược trở lại entity đã tạo ra nó, và mang theo một
ô lệnh biểu thức: gõ một biểu thức, Enter chạy nó trên scene đang sống,
phím mũi tên đi qua lịch sử.
Cho nó hành vi#
Ba con đường, và chúng cùng tồn tại.
Scripts#
JavaScript kèm các lifecycle hook, và một tài liệu tham khảo riêng:
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() {}
Collision và trigger đều nổ ra ở cả 2D lẫn 3D, và mỗi bên nhận một
contact normal riêng: other.contact.normal trỏ từ entity kia về phía
entity này. Đó chính là thứ giúp một script phân biệt "tôi đáp lên nó" với
"nó đáp lên tôi": một cú đạp kiểu platformer đọc
other.contact.normal.y > 0.5.
Trình chỉnh sửa script#
F2, hoặc Add Script trên một entity. Một trình chỉnh sửa Monaco kèm tab,
nhiều script mở cùng lúc, mỗi cái được giữ trong cơ sở dữ liệu riêng của
trình duyệt thay vì trong file dự án, nên một buffer chưa lưu vẫn sống sót
qua một lần tải lại trang.
Năm phương ngữ, một chương trình. Nút chuyển ngôn ngữ đưa ra JavaScript, BASIC, Python, C# và Rust. Điều nó làm không giống vẻ ngoài của nó: JavaScript là nguồn sự thật, và bốn ngôn ngữ còn lại là các khung nhìn được biên dịch chuyển đổi từ JS đã lưu. Chuyển từ Python sang Rust không dịch Python, nó quay lại JS mà Python được sinh ra từ đó và dịch cái đó. Dịch qua nhiều bước là thứ làm hỏng một chương trình, và trình chỉnh sửa từ chối làm điều đó.
Mười ba template trong năm danh mục, mỗi cái được gắn nhãn độ khó:
| Danh mục | Template |
|---|---|
| Basics | script trống kèm các stub lifecycle |
| Movement | tự động xoay · WASD · di chuyển 3D theo trục · nhảy vật lý kèm phát hiện mặt đất · camera theo sau kiểu third-person |
| Gameplay | trigger zone · thanh máu kèm sát thương và hồi phục · bộ sinh theo thời gian |
| AI | tuần tra kèm cảnh báo khi người chơi đến gần |
| Advanced | cutscene bất đồng bộ kiểu Verse · concurrency có cấu trúc · kiểm thử toàn bộ bề mặt API |
Các preset character-controller và các prop khởi đầu game (pickup, hazard) xuất hiện trong cùng danh sách đó, đây là cách thực tế để gắn một controller hoạt động lên một nhân vật đã nhập.
Chạy và gỡ lỗi. F5 chạy, F9 đặt một breakpoint. Trình gỡ lỗi tạm
dừng tại một dòng, bước qua từng frame một, và báo cáo giá trị sống qua các
watch expression. Script Lab chạy một chương trình mà không gắn entity
nào cả, một scratchpad cho API thay vì một component trên một đối tượng.
Bên cạnh code: một tài liệu tham khảo API, một danh sách symbol cho file
đang mở, và một thư viện snippet kèm mục yêu thích và gần đây. Ctrl+S lưu,
Ctrl+F tìm, Ctrl+H thay thế, và trình chỉnh sửa đi kèm tám theme.
Blueprint và hành vi#
Một đồ thị trực quan, một thư viện các hành vi dựng sẵn, và một máy trạng thái xếp lớp trên chồng hành vi.
Đồ thị mang theo 267 node trong hai mươi hai nhóm, Math, Scene, Entity, Animation, Flow Control, String, Events, Physics, UI, Array, Vector, Transform, Debug, Input, Utility, Game, Boolean, Camera, Tween, Variables, Audio và các nhóm 2D và 3D. Ba thuộc tính phân biệt chúng, và chính chúng là thứ tạo nên đồ thị: 17 event node khởi động thực thi, 117 pure node tính một giá trị mà không có tác dụng phụ và không có execution pin, và 9 latent node hoàn tất sau đó, đó là những node biến một khoảng chờ hoặc một tween thành thứ diễn đạt được mà không cần một máy trạng thái của riêng bạn.
Bốn công cụ: select V, pan H, comment C, reroute R, trên một canvas
zoom từ 0,1× đến 3× kèm một minimap. Biến có sáu kiểu, boolean, integer,
float, string, vector3 và object. Mô tả của mỗi node nằm ngay trên tooltip
của nó, đó là nơi duy nhất một thư viện lớn cỡ đó có thể tự giải thích mình.
Máy trạng thái#
Panel riêng của nó, và có chủ đích không phải panel của Animator: điều kiện của Animator là một enum phẳng kèm UI viết tay cho từng trường hợp, trong khi những cái này có cấu trúc và nói về thế giới.
Bảy điều kiện, và mỗi cái là một câu hỏi về scene: sees (một mục tiêu có tag trong tầm, tuỳ chọn trong một góc và trong tầm nhìn thẳng), lost (không có mục tiêu trong N giây), distance so với một ngưỡng, health, message received, timer (thời gian ở trong trạng thái hiện tại), và flag (một giá trị trên blackboard chung). Hai bộ kết hợp, and và or, đều được liệt kê dù or đã tồn tại ngầm định, hai transition tới cùng một trạng thái là một or, nhưng "nó thấy tôi VÀ tôi vẫn còn máu" thì không có hình thức nào để diễn đạt cả.
⚠️ Health được so sánh dưới dạng một phân số của giá trị tối đa, không bao giờ dưới dạng một con số tuyệt đối. Một ngưỡng "dưới 30 HP" không sống sót qua một lần cân bằng lại; "dưới 0,3" thì có.
Khi vào hoặc rời một trạng thái, có bốn hiệu ứng: send một message, set một key trên blackboard, play một clip animation, hoặc kích hoạt một named effect. Không hiệu ứng nào trong số đó di chuyển bất cứ thứ gì, chuyển động vẫn thuộc về các hành vi, và máy trạng thái quyết định hành vi nào đang hoạt động.
Một transition có thể bắt đầu từ *, nghĩa là bất kỳ trạng thái nào. Bộ
kiểm tra hợp lệ trả về danh sách các vấn đề thay vì ném lỗi ngay tại vấn
đề đầu tiên, nên một máy trạng thái viết dở vẫn vẽ ra được và bạn thấy mọi
thứ sai cùng lúc. Vị trí node là một phần của dữ liệu: một đồ thị mà bố cục
của nó nằm ngoài scene sẽ quay lại xáo trộn cho người tiếp theo mở nó.
BASIC#
Chế độ viewport TXT là một môi trường BASIC cổ điển kèm các chương trình
demo đóng gói sẵn, và ngôn ngữ này có
một tài liệu tham khảo riêng. Đây là một ngôn ngữ
thật ở đây, không phải một món đồ chơi: các module đa file (#INCLUDE), số
có kiểu (số nguyên có dấu và không dấu 8/16/32/64-bit, float32 và float64),
bản ghi lồng nhau, phương thức đối tượng với SELF, tham chiếu
(REF/BYREF), TRY/CATCH/FINALLY có cấu trúc, biên dịch có điều
kiện, coroutine, handle có kiểu, và tính toán WebGPU với storage buffer
và WGSL thô.
OPTION EXPLICIT là tuỳ chọn bật; các biến ngầm định kiểu cổ điển vẫn là
mặc định để các chương trình đã nhập vẫn chạy được.
Chơi và bàn giao#
Play#
Play, Pause, Stop. Khi dừng, một banner báo cáo những gì phiên chơi
đã thay đổi, nên một chỉnh sửa ở chế độ play không bao giờ bị âm thầm giữ
lại hay âm thầm mất đi. Các phiên có thể được ghi lại và phát lại vào
một báo cáo lỗi, và bookmark kịch bản cho phép một lần playtest bắt đầu
từ giữa một level.
Build#
Build nhận một loại game (được nhận diện từ scene, hoặc đặt bằng tay: sidescroller/platformer, first/third person, dựa trên văn bản) và một đích.
- Web: WebGPU kèm phương án dự phòng WebGL, tuỳ chọn WebXR (VR/AR), minification, một bộ đếm FPS, và một tuỳ chọn embed assets tạo ra một file duy nhất.
- Desktop và mobile: bản build native. Scene được xuất dưới dạng dữ
liệu (
scene.glb+scene.json) và biên dịch qua một dự án Bevy (Rust) được tạo ra; script chạy không đổi ở đó trên một runtime QuickJS nhúng sẵn.
Nén có thể cấu hình theo từng trục, thuật toán, texture, mesh, kèm một preset chất lượng gắn chúng lại với nhau. Các bản build được giữ trong một lịch sử kèm dung lượng của chúng (gốc so với đã nén) và có thể tải lại sau này.
Một bản build native chỉ chứa những gì bộ xuất biết cách xuất. glTF không ghi lại shader tuỳ chỉnh, thin instance, bầu trời thủ tục hay hậu kỳ, nên một hệ thống runtime chưa được chuyển sang phía Bevy sẽ vắng mặt trong một bản build desktop hoặc mobile trong khi vẫn trông hoàn hảo trên web. Hãy kiểm tra một bản build native trước khi dựa vào nó.
Multiplayer#
Panel Multiplayer room kết nối một scene với một game server Colyseus. Một server thử nghiệm dùng chung miễn phí có sẵn mà không cần tài khoản và không cần cấu hình; một dự án cũng có thể được cấp một server của riêng nó. Room được xác định bằng một mã chia sẻ mà bạn có thể giữ cho riêng mình hoặc đưa cho người khác.
File nó đọc và ghi#
| Định dạng gốc | .engine |
| Nhập | .glb, .gltf, .obj, .fbx, .png, .svg, .mp4, .webm, .mov, .scene |
| Xuất | một bản build web, một bản build native desktop/mobile, scene.glb + scene.json |
Gửi việc sang các module khác#
Chấp nhận mesh từ Sculpt, Retopo và Pigment, toàn bộ scene từ Render, pixel art, animation, bộ vật liệu PBR từ Matter, rig 2D, video project, hình ảnh, vector art, và Vectra objects.
Tạo ra rig 2D.
Một bản mock-up màn hình từ Vectra đến nơi dưới dạng cấu trúc, không phải hình ảnh. Nó trở thành một cây HUD mà Engine có thể dàn bố cục và viết script cho nó: sự khác biệt giữa một thiết kế bạn có thể nối dây và một ảnh chụp màn hình của một thiết kế.
Shortcuts#
Cmd/Ctrl + K truy cập các lệnh riêng của Engine từ command palette,
cạnh các lệnh toàn cục. Engine cũng có một panel phím tắt riêng, tìm kiếm
được, trong settings của nó; nó có nhiều hơn hẳn số phím vừa vặn trên
trang shortcuts.
Giới hạn và những trục trặc thường gặp#
- Một viewport trống thường là do trình duyệt, không phải do scene. Engine cần WebGL 2; hãy kiểm tra xem tăng tốc phần cứng có đang bật hay không.
- Systems và Tools dùng chung một ngăn kéo. Nếu một panel "biến mất", nó có thể đang ở trong ngăn kéo kia.
- Console là nơi đầu tiên cần xem, không phải nơi cuối cùng: nó liên kết lỗi ngược trở lại entity đã gây ra nó.
- Một component được thêm ở chế độ play có thể không sống sót qua lúc dừng. Hãy đọc banner xuất hiện khi bạn dừng.
- Vật lý khác nhau giữa 2D và 3D ở bộ giải của chúng dù các callback script vẫn giống nhau. Một tiếp xúc đứng yên trong 2D được phát hiện với một lớp da (skin) 2 mm, vì bộ giải đưa độ xuyên thấu về chính xác bằng 0 trước khi việc phát hiện chạy.