voltar
voltar copied to clipboard
WebGL only 2D game engine using Godot as the visual editor
Voltar
Use Godot as visual editor but write game in TypeScript, a magic web game framework :)
Prepare
Install build dependencies: yarn or npm install
Scripts
npm run start: start dev server with live-reloading
npm run build: build for production and copy media with compiled scripts to dist, also generate .br and .gz for files.
Godot Importer
You can edit scenes from Godot and then use the importer to convert project setting and scenes to JSON, which will then be loaded automatically. Voltar editor is deprecated in favor of the workflow with Godot and importer.
Rules for Godot support
-
Scenes should be saved into the
assets/scene, and uses assets located insideassetsfolder. -
Textures should ALWAYS go into
assets/image/*and uses the texture packer to generated atlas exported tomediafolder. Otherwise it won't work. -
Single images that will be copied into
mediafolder should be put in theassets/image/standalonefolder, so they will be copied automatically (even after you modified). -
Bitmap font with BMFont format added to
assets/bitmapfontwill be automatically convert and copy tomediafolder too. -
3D data formats like
.dae,.fbx,.gltfand.objare not supported. But those are still usable by SAVE imported mesh data as ".tscn" manually. So basically any format supported by Godot become YES \o/
Steps
Make sure you've installed dependencies of the importer. In case you're not:
cd tscn && yarn or cd tscn && npm install
Setup Godot project (from project settings)
Create scenes, and save them into the assets/scene folder
Run node tscn/main to convert project settings and scenes to JSON
file, and then import these files or preload them as assets in your code.
(in VSCode you can press F5, and find configs in Jetbrains IDEs)
Supported Godot features
Most 2D features and basic 3D support (no 3D physics and particles yet). Custom shader supported in a level (may not work with complex shaders right now).
- [x] screen stretch mode/aspect
- [x]
CanvasLayer - [x]
ParallaxBackground - [x]
ParallaxLayer - [x]
Camera2D - [x]
Path2D - [x]
Node2D - [x]
YSort - [x]
RemoteTransform2D - [x]
VisibilityNotifier2D - [x]
Timer - [x]
Sprite - [x]
Control,Containerand most GUI nodes - [x]
Label - [x]
TextureButton - [x]
TextureProgress - [x]
TextureRect - [x]
NinePatchRect - [x]
AnimatedSprite - [x]
AnimationPlayer - [x] Tween (tweens are no longer nodes, they are just data and runs through
tweens) - [x] Input
- [x]
CPUParticle2D - [x]
TileMap - [x]
Area2D - [x]
RayCast2D - [x]
StaticBody2D - [x]
KinematicBody2D - [x] shapes, font, curve
- [x]
Viewport - [x]
Spatial - [x]
Camera - [x]
MeshInstancewith primitive meshes and mesh withescnformat - [x]
Cube,QuadandPlaneprimitive meshes - [x]
Skeletonand skeleton animation - [x]
DirectionalLightwith shadow - [x]
SpotLight(no shadow support yet) - [x]
OmniLightwith shadow support (not perfect but fast) - [ ]
RichTextLabel(WIP) - [ ]
RigidBody2D(WIP)
Optimize build size
- comment unused exports in
engine/indexto disable modules not used - uncomment export of PhysicsServer2D in
engine/servers/physics_2dto enable physics support - uncomment code to replace usage of
earcutinengine/servers/visual/visual_server_canvasfor 2D polygon rendering - uncomment export of AudioServer in
engine/audio/indexto enable audio support