:vec { :x f32 :y f32 :z f32 } type :color { :r i8 :g i8 :b i8 } type :player { :username str :pos vec :color color } type :login { :player 0 check :str 1 check (* do the login here *) } fn (255 255 0) :purple color :main { 800 :screen_width i32 450 :screen_height i32 argv split :username str :password str username 0.0 1.0 2.0 purple :me player password me login :players set me.pos.x me.pos.y 10.0 add me.pos.z 10.0 add (* Camera pos *) me.pos (* Camera looking at point *) 0.0 1.0 0.0 (* Camera up vector(rotation towards target) *) 45.0 (* Camera field - of - view Y *) :CAMERA_PERSPECTIVE (* Camera projection type *) :camera Camera3D screen_width screen_height "zwl client : raylib" init_window 60 set_target_fps (* Main game loop *) { :KEY_RIGHT is_key_down { 0.2 me.pos.x add :me.pos.x set true :player_updated set } ifyes :KEY_LEFT is_key_down { 0.2 me.pos.x sub :me.pos.x set true :player_updated set } ifyes :KEY_DOWN is_key_down { 0.2 me.pos.z add :me.pos.z set true :player_updated set } ifyes :KEY_UP is_key_down { 0.2 me.pos.z sub :me.pos.z set true :player_updated set } ifyes camera me sync_camera player_updated choose { me move :players set } ifyes { me ping :players set } ifno begin_drawing RAYWHITE clear_background camera begin_mode_3d (* Draw floor *) 30 1.0 draw_grid me.pos 0.5 0.5 0.5 me.apperance draw_cube players :player { player.pos 0.5 0.5 0.5 player.apperance draw_cube } map end_mode_3d end_drawing } { window_should_close not } loop-if (* Detect window close button or ESC key *) close_window (*Close window and OpenGL context *) } fn main