From ab06b7d7590c580ed953019b3edcb89cdafc966f Mon Sep 17 00:00:00 2001 From: Endel Dreyer Date: Tue, 17 Feb 2026 00:17:17 -0300 Subject: [PATCH 1/7] godot --- components/icons/platforms.tsx | 6 ++ images/icons/godot.png | Bin 0 -> 15751 bytes pages/getting-started.mdx | 3 +- pages/getting-started/_meta.tsx | 3 +- pages/getting-started/godot.mdx | 146 ++++++++++++++++++++++++++++++++ 5 files changed, 156 insertions(+), 2 deletions(-) create mode 100644 images/icons/godot.png create mode 100644 pages/getting-started/godot.mdx diff --git a/components/icons/platforms.tsx b/components/icons/platforms.tsx index d85fd9c9..8b06e3a3 100644 --- a/components/icons/platforms.tsx +++ b/components/icons/platforms.tsx @@ -65,6 +65,12 @@ export const wechat = (props: IconProps = {}) => WeChat +export const godot = (props: IconProps = {}) => Godot + /** * BRANDS */ diff --git a/images/icons/godot.png b/images/icons/godot.png new file mode 100644 index 0000000000000000000000000000000000000000..46c68e93c1842f73a7101e84bd09d2c66be302b6 GIT binary patch literal 15751 zcmeIZWmFwa5GFkL;_mKF@C0`!1h*i8;O;KLF76)OJp>8Cor^=zKyY_=_vPK)-+Rt} zf4`k`=JY(%(_Ph7)jfTxsv}gCKB6HLBLe_{_DNPs4FJGzk6-{1=B?-{p&fiHKrU(@ zB|!5-EdFl*$x&9v1pv@{|GPoS%;+Ql00XEfXh^?RzW%@K|4HEguM$8IMnQa=EP$(; zk~)AZ;tUJcH+=_!d2g37{rqYVFMQq^s6vcPtyOZe4Oj6pU?YHs&a9R+xc*dzBzboA zui6`h!zgRy;99lyZoc^&mES3<-ox!$rF_iT{ShmJd;K4poaK*(nG}!5VOU%q7qn>; zadM=*!HanseZ|=<+BjrAS?!Z~h_@Mdnw14%ugd zphfKzivG3|`}HGXH&t0PR+guRJ(?~;@yk-^%G`&Z;aaa;1d~}8OiFBNM(d#X)s4-` zA{qYCscv&e-A_$I7A*yyQf^!L4(fG3+Ztzl+7A_+%Awr8UzONOdpnW^4J0fBbiz}z z))p%OfFJjhl(>dx)^WCn7|syE0B;7OxN6Wh$vO%>a$NMm6PK}1F# zq4Cg2WOx2;TwFYqgZ+F&rkg5lDBDey$4w4}@KDOp$&szQQ(DR&?hc*RcD2GIXt(%UG9Lkh%LZYt_Y5l`XL z>X$rgqm|fR%s07lbB(^})y~6Cm;r1Z(KA#Gkt=n}=s@NHipwitN zcN+DR{G>@DS31D~OZn@VWnPazYJR9#|AL3d!PY78uh$GKZDQpwG-@eBOz_#9=*BWn zzeQ`2@5T^DSnLSJ2{I?f5Hd_Wd(&4Aj?~MiL^xQR6~% z#Q29ONbR(rc*rB!i8&%b`@OYBdszTu6;#RIB)*{Z9S zZ|Pq~){vryFn(fceJ_fa^T$c$2)D))8JE-Ej*f~VPdhL;4VF?%!|McC7a2C2ag+_c z7&UuA8;ECmsy^ia;A83$xJbk`GjlC0FVDGr)iHaM5L5LO90_R>H$cH+^- zFajE6Db3Hxv`a3u`7r-i1$XtppgZW9N~b1WggCJnjDH(si%EEnXlRXV8zmnqLG0*t zO9~oLp_=+A&Vv~33CqC)-_Tc_xo*1u1vOwkcf?GGVh&#%D-Pg64YGIMV`6NF#H<>L z0@cZ#&<4avPuO@4+?JsPH}7taDPg=&JXV1L30|adPgqP&{EpGj!jyzW&>rWw&@*nh zx0luTT6a8ncuG#Z*eKqJ@uPDbcRXEh18YFv>9SPd9iwOR-ONAeZS**^3#1|k(OzJY zINA4ca}S#I0)(+^cX#Osg<|0!ffthd>IDm;k1&EVHDhw-Vzw6K(crfRd_ucD)_VT- zG~)9Phm>9g(w%)i+Hm4RU`y8^g4)Ax&KVwy#3&5na0Bej_tnUOp0Jds=vl7iQP9X2 zQV~{+O|zJYgJTSlkw8jvkf9={=X>3lig-kIpT|217b%!ofy+A%l)!MN+%Rg8Us+dD)m=2~CEkwB8^ZlV0jL>Lxxv1#-$1m*CNu(^)Alk<>6AvTIGcm(e zx+)ah!FR&g&SM|=sIkS6qoKk`T}FArRsR?!NqDfzJ|AIq_Plc~X?OD^-uh6N%-Tuvh(C>%Ea zUtHrcx!!nMtzS!1a##zYY}CEamI#E38kEMCMOlaPV7#Z7FU%+<1+G>T!d-y#P538e ziGlnklmb$zB$jdBkJc#1;#Abw5EHk*6=_?Ug-R0MD&gU~-?QReNaoj!Ne zbqLnIv_NfQ!Kd#Vc!y*+60LbM3Sg)JInDx1``Tyg<_WeRSjoUl4DK7Aa1rCo|Efa6 z1X{AEtV8&g@5ZX{UJoOw0p81|eZxjk3S7eyZ|f7yiwqXBf;DS_qKOn8q=@)B#9f>M zHIuatfjC?aaKYjH4_6$&QU4F?oV+3*2Z}iE=HIYz6ktR8NW*nGBT}2shK+;XXc>AO zA|D5kSGT{B%m|kUZoj|D1z}RE*jW_`N>BPyg0<1ptLLRuN&bqTM%yV_8IT zFi~ddbUrBx1*PJc`IweWTdMmnt3@Y+Sl6wO*cWaW& zJ1{fI_DRvVrQrLl5ITw%eCH^~#+Yb=Y3r+#_6Ig1_g&9*_DHKJ9oI>1MCg%Po+h`& zbi}YdyO}%Bb~_6ba;CNlU(hHT z(Ebb3fPHDn5(jN8Zu#KH$4LN%B+@3w_>@k+#9gcB?fO!zApa)$pe`t6Dom*%GO8{A zWD?5V1g%3vGXbH##Bu3JVyT;b=2ItW);`i}O`k@HMz~ywIJ)7}pf9p*l5mH*O4Gk?~EtL1{S$d+AE)m+MF} z*-V)y7`F#P>rXT?;zs7+x!I%>)ZJ6H2ff+BT?=K7mK;?R|73Bx^<yNwlJwQqJ@S z6KbH=FLjUi=47XeSf+N5`*NnL&DPjSJAJPsHT?XmHfg{Gljyo|fyMeH8u zbyyBqv`t6bcp3u*-qLo)gwh_@yrpO?6DVtE_&fXMKdli)hvKwti8A}cG|f+k@uavhQzLb!Imm9f*)$YBmP84@}7d&^Wd2Drf8m7&165 zJC{UyeLdVZx!D5G27h$y5u|8h8m+|MktaVn>(R{OiZMWf52H+bGt9ZWg z?L%JW1Mj|Ok`CoCV#et-Kj#l!V0vQ_tcTsBC-HisG4XojUvx#5%|OHGwO23t%1{eu z1C*)=ALF>~%aj5vhcL7DXg4PryuaxxcSj%S0vRdS^;Tr{{kZIif5iN8YB_K?z=j;D zP@sRkbzkwDAI}+#R@}QD4{#TDE;vJv(RU8duRokle#onGuoz`l@*>GmXLrZ2z9k`k zaVl_iM%$l`St2ipQ&P9c+{c7g%Z<>W7d6$L3c4UXyztljwwlzBy`QT3_(ydNSp@~? zH(#l;yoeLTd{^$xO!?#5?8K!u<6)3%6Df)1#?d3+a3iJG9O7HLJr1kyv2 zP(G#Zn<(9K`GyPjJTx_>^Nth|Ih4J08-&Y4CFw5bM10=l>JO_(*8nDq4@21XgCNn# zBsz&mWk8i;=@{rEAyXvVvOj%8A`;~uLG?Sz;HKZpGT3O8SP&nC{b8`tnI}Bf>;*QQ z;qUT7kt}gUvDV9A1<3+{>5KV(4?!?y#d&`tCM-uWzuYQwi>r4=^e{#@3T3?&E0@1k zFuy;1;~xxm$gZ90i)MoPG|cfN79R*TCkFqNz;0>dkL7a}E3mIIc71?JZDDXdnbB#D zvX&90?<Bj5Y}^dyu<{7s zF_psFT6b9#0^JP|;4BaX1KOt*84QrF7fWm?@ov(+@Jx^|L7__@?!ZM}HRW2{s7U>#v6byQz;u(-9^U znBy_|p654W4{fa;(x`zGO{W}%inGe!{*&~ZmD;=f*XeXdQjMZ_tzW!%5!(RMc8`Pc z|N36?m1_;ad_s})32~6XCDOCi+V~RwcQtx`k50vuNPu8f0#|Gc@#A-56)7tVf>;OY z^w;0_!YUMFlvlAI5}Tqp=3x!X9V~m&3c{`X8I5W7QL8T%JKpR|tUn{7S4It#_S}Nw z1`|oTYvV_4MK=!Gr`VENh~>~b`&@9DFAHAaL%>62G|u`aS7Sj~46uB&mAE&OM()HZ zm0c|B*pbt0ymx`m_s}3|^`#XS^U8HV^Bm6PMQrCh)ry4qhw+Xxl2|VF%C$N z>=ahumq~(GbUx?9U5jUft1J9b8{XQ~-a1yt7Pj;VyF6KUyS?$S#Kb=9mPWrq;IqxA z@MhZ#&XBPlSJ3K8-(MLuctsUbqXAFWJy=STG~hqcp8HCvBjmXMDg9eTd4PWz^_{ih_+p3aTT?VR!tFvs`aTM@dzANQEl>{fX%?H87n_ieKO*khYi zIORSH@mOz#6blI>^|An$0+}OL%GN@*&qN|@RUh?MXirGxJk&gU&JFGu$LaJzv}2A( ze=}aV6s$6)o!Os;57G9eDaNf_yP9mb)MbPe!y$fN3CK{homLatVcd6!BDyC(1Mq*@ zoV(sL(|;JJt9LF77Nr!VR01`P$dL^kz?5JyqpE?1%o4$KS*t%>y#|#9Rgn$X4RPSd zrC3e(&9d?y@-PB>hE;DJ-yx1SxxtlSy!i$0qR|xM7UMA3;gG+<^&RBtN5gT5;c_-|N&W&CK zjfZz?5qcqM3U2bd#4T6CLf>}3<&76wC+M4N&05iNY1gBw93@BvzKmF%1-!73$-=~m zA5))8ABe@q{rutgdEJwm3B)J3H==COTS>mbuD5Yf9(X>Ni|oHIKv?y*b>Fq=3^Odw zNSZ4RU&_*|C4a_B2$9suV5J82>Tm@a!u9CC>QY3Kb*MZu!<@WWQF{Y4M7ly?#G`pk zSM8!0A!@ymWO>}A9;+#ibgZRTyxW{SOW29yP5f>>K1%aK@`$Fi>#Mn`YK2j`mfrbL zOIXKgxNh(Fxr0_rmJNorA}Y56ESj|0Uk0axwP97Z=?ix|6_=*C33B}Fknd~jsvZX` zsBU$GD1=Pp_V}#d7c90T_?A9%ZdpQNuOEmR^^_c4Wof~d9yvE194Hws+mhDnwm+!z zYfgV^{1l2*$wVR*-UwTZ<19nhIaahk|G3_e75OZDLh+i(!76LudE)1>Z8DH@UBy`^g4;tg#xVd9OGdTX=ly-!Lw z#N)2#1o0VPn9s~yhMX@9i+sIw#HfsLfGusJrwAmUio7(O?ZfB;|r68GR#?7ZkKw`_*%hT~P>R7@mZ$8Ex%05D8(dMnEv--{pR9)n4yUVYe?kR& z{tHRFF_4utrW)p0Q5(EC= z)icHoDJz>^{ZiK!q7{PexFwiJt{HGU7Z$LZSVyJLty9wfm`zi*^e;F_of=bYs^NPf znZfKkg-X+$gFqW6A&^x+E_M~c8L{0zBdjTm#wLmOkK@e|q=BGr6ew%g_k)QFv(H2x zPM^J&86*f1n>+=}?W5m^P2@Ihg&%?h1kB$no1N&mzniuZ+wdY>VqS-vxT5$; zgRU;~`yQUAiuKWvr`+tyx%i|&W>(`^dqLW@%|GGNenXb! zMjxEr91h>h`h3CnkIaW$(GjEzO8q0h%q17 zIoAUE{tYj5Re5*T8k{gEslob^{siwvps+z!aIGNI!!V{EKS?L+$wLKy=(E>_z7R{a z`1f-t8;C_Uq3QhLh9PQeEM^)?M-sxu{Q~IkZ$10m>-EEkDQ+xUjyA}Zz|b2QWVQs> zEwf0$oBypoa{df6D8s5zNrt65K@5L4z^S0yW!MVcWT*Q=u5+8KN5Ch=i`J_x<#gEaI3bA$OgocGL(?p%4|0dR)?39hh*20p?% zoHW)pN~~WL@e&aD%}4NX)iadRur0N-cMMD%RwnKoykG=3wvwZ>Rm6|y^mw0dwN z*G7TWA!B22u_@|%7x}29BkpN&nk5hq*Jt%tK*t6xu}+pAks0#0sMf8x$h2}KA-zm1 zUFXV7)N)fC7NH>ocYgj|^7+j$v8K+N}>dxo~y~D z6Y2KQB+M#0f-V+o1wcML^hMBdDe~WTbpP{B9?yT>LXY$#yK~LVno`0n6?l3+x0B9I z=xBpj_T^_5atV;T;l2%PA+ydBvam^rP{~M9Pn<-COgDjZIu0NY^ z;@PB)+W7q<2#qfDVq<=Kf30Ai1T@q$J^jsf<%vV18FVIPf|=3A-PD7kR++7GZ`gMf&im^M zAySsxuE)jj5kw@#FH2b@;G~r=L9$JBy=c?+_EVe--glH%i|FB!4x6|U1 z_9=xOiDO|%S{oF+OgTJ@Xwqh$LOObtsf#wpaDG7v`M5oO58NJBzclfX3?4`?fmq_0 z9Azd{YeXJyK#-Y>{dujgCTO(H(Fh<~axG=$wjccun_rq-DRmSOmTEDzfuiU1aXe7v zcG6m9$Fljj(W@6ZEQfBv7@dA=fNl|Ixb4u$!h6UJEWX$w3~eFT>er>2Ya7}zrZ_G0 z|31z8k{_$2MciE$S2!oxAmwJDEan16SsO4+L~IbMWX)^V(|h=#1>5iel%~BQ4$P6d zx!26=u+e?xxEws8tt1oYO~lp)miv>2yxvc=K*1aC<+In<-_WYNqcK31Rr}x$T^IhQ zFxnIr1Gtt%xxM;;s3%$CxbJHhh}wm}WeUc80T>^|ybGIaYnO?#N1>hgN>|wf#mPa$ zd^ke}x_1vOf?Y-*lh;TNY7%Nch+P!jVM44^9`Nhud)CPe1v70i5i_uv+JHgkUOgg| zj`uk`oM!JPh=oL8^ODD2sev}ga!;RWZN#ORCUl#+3E(m@4Izz{1J##)_V_kriiy*P zNO_soa=Igm#D|ZI{}57iJ)zK3iD}HnP#z|{F0v<_X!NUNifI~#*y)lQ7{59Aq<4Q$ zo)^)@osr;UP=;m)8h!iwXmibf$Xkoc8xG>uB6+cZF%2XD8Fu_V(9^1&ft161_8m0d zjo42x+~IhS2;pJ?NZb+jc0ONC=~+$C;tbOG!RDpoyoHDnqTCWXIQVhHv4Q~HcQ>Y^ zhEth-aoi;Y;s?>&&?La#h7Fmb2Ci3Xjiknb*){!Sx)t65?tQvXPDI(+Mc>M{~tnsprGD>hc-pnCt7EZsgH? z>VSpRzbpIQ7}Iy5;@%vWjuufbUz=XMR+pxa3Wi$C#Geq`a`H!xI`UVBnKxwnn+t5G zbDhxxA+0;z9>d!KwzwS5LSDz+(?u{a{crx~IT`lJ*|fSG-pwbK&(*CZIQV^C2GMOu zK<0DOjK;}W@d%7(Ienr7rAHN>6{pGD9+Y6;e)6X0)n?Fuuw%A6U_08`%k(%3q3bf&9o$w z5?pVrp~QiqOJmlvVMxB$-`zRZng`d>?okvMHgLog-B^36feIVazNv|l{lB~|qCb&s zDtwPhKdqkv9~}$;`k->G7(g%9uas#b>)Io=pD}GBErjCTfR~;C^4F={mwMLSukwK0wjklA0J~*yZF??&Q#%PYKA@$bEgXgWmoG9m(@FGYR zGE!h@VsXn)*Wnw6>(%MQ^R}`4?LYqEKK{KkJq6FSiA!Co^?WC%{jI?F`fXZ&*D#(0 z-2vEtf-aYn!?ikg6;Xm$$npDk55M;|mZ-(1XXobLxdbO zUV3wE(CAm-An!hp4x+%#_sTf<>c6`g4DwRkyMc9RLv!S2L{~)u%6&Rew>8P4Lh;(>wY?J=fyp;4z`dBt&}vplL6}b? zYgWP(48`@=0~9s~OVn6OKWxJ7Ndjs2+ZWJUJZCMB>I_HPa7AGLSHO4+JWR{oWZ+{p zAHpcLiD?DG*U;jS#Xx&Vgb=wPs}Wy(*xlPa;o}OUW~oRzYoF26)U#4KjvnhVx7S0_ z*;yBGU&V%y$Hi1AlLohspkU?$9LY6*jS}HZ1S0f>?FcJG<*g;N!w?)oT**eBE>mV$ zR$(sgmKXUkT)40bff|R{^!B-AHRR6e(s59#LJ7cs0`jI05%V2dqL#A=<}vupD7DP zq2hbU|82I-|IXBj-H{o_r3B%cNkppu3K&E{%47ULB<_%cxPIxpZy43AURJ@9$S0h> zjkPMxDDwVm)xGAO{O~f~Hdf1N;{G)IgFP_-v{u*WlJ$DcF;yjqu9{NJ7`)8O^n7v` zr`yukEuc;#xrTQlAqFkecN)N=G3GoteUc%0orS$iNx43+N*Cbj_gUT%pREy#q2$Xa zUi{G+alfiGKCmb=iAPxq{=+H!?Q;YX+po;j%Ds#y#BZt$!8|#1Urt@g4g^+SC(0u9 ztQ~e?&Wp*3<}T(o6W#Y2s;2pM6z#)ANR zy8Mmva4Wv`w|QfnzbzL?7@Lr~eT(00?Yg@8>q%-m)a=m{e$PdZ;gPvUwfx7yP0;0ZK61kz{FOOSmyI@xP2$OP0D@0TS3p{1K%vf}t8A z!yG7H;vkbWw zS(obJ+7TF72rdo^sEU!sC568tGC?R0+LK};=ElJKdUK6uWNDdQgiMo7=wSV?+91!a z1!{E|t6X2u^m^u~d8JlV$lz z-Ac-c9n=d!YCkn((Emg>m{{>fHO5H)dP8-$EtTR0J)dwn zH&41T+U5UUM`(zkRrX#zbgXLqPdBr&HAh<(J=6RT3r$hBG_F(ErSqBLR|x|6`0VR; zU1Erx+yiTc;|xuz0OhFBX+#)a02$iCmDFKrB}{# zGWQU<mI*BEQWrpiXg288}F{=-;? zl#qZ4@aN!K|Yxn8}<>MLZ?le9BQ-xff!CcwtiC@DU+hb^U*GK!IX-m)PU(p%-+)H*#8WiXGnX z`uBiT!DhgEotWwKKqr&66I^&Oqdj_8vYt8GKw~g#pczSz5XFW;i4RrwBZ80# zo1lUdtFYvPM9nDWpOH6jerC@Z9l{15nYn*U%CD8gQF($Oi*jA%CtJrg*pIReQwL>x zN=B3bTqRaX5l?SpFHR29+FizIkc9$oy5ib=i-6`d7l#n z(70eB4~Q{eYT4LbtE(+4%c5hXw1G>&8ymeMLzADXZ7t%)9M*MH6he*X%CS3Kup1w`WcL+ENc0VG}%D3yIw;S)k^3&<4h}%urp0GZ31kU|0DUkyFfw! zAk)|NrjpXH$a+!xux+%E`(`4)faL|Rcx+xJ{&PN5?MZ@FF#G2j2QoW6DtIu2m+7}( zG=*xz2Y&Qn&uq@Swq9)Wc!kR!mA34;>%?386Xx6$$w8_N)!M9abXTfOkn5iOuRUy=LRsaW`J(W$`2pt?(x=k}3lZ^Nw!A+;ysbz(icUPMTqIcI+9Q7FJ~l6qa8|@r{K9*K(;@1VPn&F zGY)#-I(`xo*NSOWGefkniQZ}+MUg5&@-vw_`ty3T;s-OqbEKjov<=MKYa(rwiD&Yu zxZi1dDEe|LD(X*m$fG>(SF6EoA>FlfFHQKCUfvPj=Mk+rcSazN=i;k(9~59G-oeb& zekW9W)Wb^LkIQvJyD&e)KW~v*PaPmjX$&yQ;4>kqhL1Hv^;XU3Xyd{GK~Z2a37C%d zFa~O(5IPQz;&RD$x>XtUf>=;i!HDPih<1j-=|aV#VG#gnPIsgNSNdA0&2OK}-`()r z-5G2i8Ou*u3ax4BiFdwtI>q5c(Eji?O4o-lTM$nPvX!^%-rwxlh@nsC!-Ysur@LK| z21aN%Q@K4-0DdZES#}M1;!^(0im{P+3XyvW^B49ftNI#a_1esQrC@OyZmpU1*Z7H& zKxaZRMynz7(Yk_%M4Xm=W9Xj5)ZB8|%Y;r{X8lqnx2uNN% zM8LaT?58y13*ltmem8yA+0AO)tyvzO1ub77(_&lp~Zt^?u(y z@`YQ<`RG@+*|B76zjSuar%49k-CznsiA>}_Mh9j-io?nxVd14Z2w82ag5@7eiFpxj zIy-(I;pMT4EI<$1cq|gXj@b@+Ay1}-5#GUz^L*R?5kT&pK|-;5~J+x;~At@i>$5 zY9X%|GX4B#U-el1Cm8FLQ~R*o+3{Oo?m%6ejexmiHcb{vF&5tu+)(_67Ja#W8j@it z1+M`zmD0kc^edUlC>BoRoiPX1C){{UnRmA%upA!zMJf}-4t(x==OT#Hq)zi#2H$&U zqk!#4U3!c6IFKivOf_=>N;Zt`C~vtRJ8D_^8B^k4wRI7enMb!+LdnpzqxjN=Qw$w( zPIz}*bK(>q2O;&SChn+yh6>1%psR(RJ_2qdPRb+qKjCpHj>n%N8WXAb^ltp=V$oj{ zx>W$4QmX5+S@!^wu$04iW*OnG+4Hq1loOQ^S5Bh_GL)(JyG_ZCGNrSIqc49!tT~#7 z7`bi3IDLfe&HL%N0~P(0Q@`q`u=#9`ljF{sGoK7iV7z7_<;iOcg_Ixe2}vb`ujz3) z@WiZNJ)j+y>o%9IA}#6@1+#Ejq1xCG;xL)kbs?+vpCiWZ)SJU*(Pr;?OHo$UkcE#D zQ~%=Dh?k=d!heeAv7~@|hi>a1X5^50er?Vj@Hu>TsO+o39hL^^fPe(g9Cf-!Zjdp0 zQ%{Xs;(o)Y5jX^wZ`>SxyI%(-b0GzOb7@ls^-=%lLry_mp4^HJpPFtRRW z_~-X*`GsjavuD)FaOun(#gYWYf3ke+Lh35w zOhpjQ3y0-4DQ9GNLJOjc-84q>^%V(tqC{(XMin?s95%M}Y3ILi$l6YcnFLDD?DmLG zzjRnVKK?n)x&3Lo)6$9{7499c(sR&N=L^UyUxlih9@4;sWtwJiH9v%oM|L%6_KcJ5 z36$w253N28i!BQvQy0%p;fH_jkpp4_aOVEYwwe56`{$(kFvHaw*)5Y7mO`(=O#NG2 zHV_Cla=3|t#LUuaEjy97(I=s_x5wxVk#yX>7GbstE2W(fw$_WA?V=ErET2eJ}D&DrUvoFzz z4Na9M*{X;f(toeZ$P-O40az{4QGsT#X{_~=j_0%oCg%KyfWKcbS;b%t-CJ8kc6qQ+ zKk0@1;u`?+9MtBqH$rm}W%c~~m|)W|<|;`u@_ymzBbM-;g1@xF(gXMH+=KW?qR#~QLo6y&iRhI6wgj@Tc~GC`b4+V6tE zkbi`k;Al;E*1t~*OZmDUjZ2CAMR1KdmNQIVis7L+!g4Y=hDe7Do;#py4R zjT4ORwqeWflVPIJ==@%$eh{+_t6_!g?l~7`HqURE#ZQx$nsCyf|CnmTOLKQnVX)5= zlcidp`}<}f?a9=)l8=;jIe~^T$0;*$K1B1iqMO0of9s`wsDa4S;E(t=kg|Z}MebYB z2$}$aPyw?-JdRLe>jHByFJo^{b~2!8c^U z->=#|Lnhwv^$bZb=q&Xv7~LLh0STl$n|MO7P4cNY7cdwhxrX(moTCCbuC)-_SS|!z zNB^W^w93Rd%Wj5oG)j(z<$lgF_x9r)+UTqKjm?vH$wl7b_vV#0nv8Q>CphBKKMEb+ zwptW;neozXTU?0a-RuuZ+HD^7ncs2A?=<;iGj@-RsL<>|RphHXwAMHobai$-WGMzk zDs8XyoG&i{a^!snBSjGkPW;)_1)4( zJuu$j2;bT23hR~pz|wSk5?*QiITiKhO`D`iY_zwhg$zZ!<1e{}5P~WTI zlzuPMCqEY!PJY-9r`zu%CJBZQzSr_9YmC~jUCSL2w36@U5!Ro;RDE)YK2FbnXwAuC z7U3aoycs9o`z#h>{JI`mNu_)@mG_#Mt3wx-UqR(OW}wradTK;LPG#L8M|J{bJ?DDLD*>uwC6M6eX@B|^6OK8pg@cHC3$@=d7Z*ka= zR}#9o=V~oW23Rqo*OE~eOZhgjw{SyELaa+&hPlEzX#5vJ52s|v4K;!jA|--ZcX+Nm ziS+tVg1hicG}b}{`0Z2;DNF2i_O-X_O5&fE-np((zJJ%jaZPVJH7`#3R`ijKF|t*y z`9;;PX0fw;{`9by*%(KR&5GSxk6dTCaIb<}D@4mzvs0ScUs&W zihAXPYigMgSUoD-|1~n?^H7*5susy2z$-0enelH&cT&F{bDaQNEO|k} z_Rym;y&u0fC$l+dc473}z!|IxT@Ok z>DkVRbI)2QsStsJ;FNRD*_U_XG&FmlE!f|;W zbG_!a%EYUtsXY1_`k;Z8GIz7_M%bSHx!?IekRgz^o6b{$+_PVf6DMXdxeflFk;!SC zkGk6nZoi4ut3%ydMI9`yBJX)m+dRgaV7(R>=t>D63bWtI&;YRipN|~jbJ literal 0 HcmV?d00001 diff --git a/pages/getting-started.mdx b/pages/getting-started.mdx index 00331af5..7adc620c 100644 --- a/pages/getting-started.mdx +++ b/pages/getting-started.mdx @@ -1,5 +1,5 @@ import { Cards, Tabs, Steps } from 'nextra/components' -import { javascript, typescript, react, unity, defold, construct3, cocos, haxe, discord, wechat } from '../components/icons/platforms' +import { javascript, typescript, react, unity, defold, construct3, cocos, haxe, discord, wechat, godot } from '../components/icons/platforms' import { SyncIcon, RowsIcon } from '@primer/octicons-react' # Getting Started @@ -13,6 +13,7 @@ Colyseus is unopinionated on the game engine or framework you use in the fronten + diff --git a/pages/getting-started/_meta.tsx b/pages/getting-started/_meta.tsx index d83a2a01..477b437c 100644 --- a/pages/getting-started/_meta.tsx +++ b/pages/getting-started/_meta.tsx @@ -1,10 +1,11 @@ -import { javascript, typescript, react, unity, defold, construct3, cocos, haxe, discord, wechat } from '../../components/icons/platforms' +import { javascript, typescript, react, unity, defold, construct3, cocos, haxe, discord, wechat, godot } from '../../components/icons/platforms' export default { "typescript": { title: {typescript({ width: '19px', marginRight: '2px' })} TypeScript }, "javascript": { title: {javascript({ width: '19px', marginRight: '2px' })} JavaScript }, "react": { title: {react({ width: '19px', marginRight: '2px' })} React }, "unity": { title: {unity({ width: '19px', marginRight: '2px' })} Unity }, + "godot": { title: {godot({ width: '19px', marginRight: '2px' })} Godot }, "defold": { title: {defold({ width: '19px', marginRight: '2px' })} Defold }, "construct3": { title: {construct3({ width: '19px', marginRight: '2px' })} Construct 3 }, "cocos": { title: {cocos({ width: '19px', marginRight: '2px' })} Cocos Creator }, diff --git a/pages/getting-started/godot.mdx b/pages/getting-started/godot.mdx new file mode 100644 index 00000000..71606c50 --- /dev/null +++ b/pages/getting-started/godot.mdx @@ -0,0 +1,146 @@ +--- +title: "Godot Engine" +--- +import { Callout } from "nextra/components"; +import { DevicesIcon } from '@primer/octicons-react' + +# Godot Engine + + + The GDExtension is still in beta and may not be stable. Please [report any issues you find](https://github.com/colyseus/native-sdk/issues). + + +## Installation + + +## Initializing the SDK + +```gdscript filename="Network.gd" +extends Node + +var client: ColyseusClient +var room: ColyseusRoom +var callbacks: ColyseusCallbacks + +func _ready(): + # Create and connect client + client = ColyseusClient.new() + client.set_endpoint("ws://localhost:2567") + + print("Connecting to: ", client.get_endpoint()) + + # Join or create a room + room = client.join_or_create("test_room") + + # Connect signals + if room: + room.joined.connect(_on_room_joined) + room.state_changed.connect(_on_state_changed) + room.message_received.connect(_on_message_received) + room.error.connect(_on_room_error) + room.left.connect(_on_room_left) + +func _on_room_joined(): + print("✓ Joined room: ", room.get_id()) + print(" Session ID: ", room.get_session_id()) + print(" Room name: ", room.get_name()) + + # Get callbacks container for the room + callbacks = ColyseusCallbacks.get(room) + + # Listen to root state property changes + callbacks.listen("currentTurn", _on_turn_change) + + # Listen to collection additions/removals + callbacks.on_add("players", _on_player_add) + callbacks.on_remove("players", _on_player_remove) + + # Send a message + var message = "Hello from Godot!".to_utf8_buffer() + room.send_message("add_item", {"name": "MY NEW ITEM"}) + +func _on_turn_change(current_value, previous_value): + print("↻ Turn changed: ", previous_value, " -> ", current_value) + +func _on_player_add(player: Dictionary, key: String): + print("+ Player joined: ", key) + # Listen to nested schema properties + callbacks.listen(player, "hp", _on_player_hp_change) + # Listen to nested collections + callbacks.on_add(player, "items", _on_item_add) + +func _on_player_remove(player: Dictionary, key: String): + print("- Player left: ", key) + +func _on_player_hp_change(current_hp, previous_hp): + print(" HP changed: ", previous_hp, " -> ", current_hp) + +func _on_item_add(item: Dictionary, index: int): + print(" Item added at index: ", index, " -> ", item) + + callbacks.listen(item, "name", func(name, _prev): + print(" Item name: ", name)) + +func _on_state_changed(): + print("↻ Room state changed") + # Access state as Dictionary + var state = room.get_state() + if state: + print(" State: ", state) + +func _on_message_received(type: Variant, data: Variant): + # type is the message type (String or int for numeric types) + # data is automatically decoded from msgpack to native Godot types: + # - Dictionary for msgpack maps + # - Array for msgpack arrays + # - String, int, float, bool for primitives + # - null for nil + # - PackedByteArray for binary data + print("✉ Message received - type: ", type) + + # Work directly with native Godot types - no manual decoding needed! + if data is Dictionary: + print(" Data (Dictionary): ", data) + # Access fields directly + if data.has("player_name"): + print(" Player: ", data["player_name"]) + if data.has("score"): + print(" Score: ", data["score"]) + elif data is Array: + print(" Data (Array): ", data) + for item in data: + print(" Item: ", item) + elif data is String: + print(" Data (String): ", data) + elif data is int or data is float: + print(" Data (Number): ", data) + elif data == null: + print(" Data: null") + else: + print(" Data (other): ", typeof(data), " = ", data) + + # Example: Handle specific message types + if type == "greeting": + print(" → Got a greeting message!") + elif type == "game_update": + print(" → Got a game update!") + if data is Dictionary and data.has("players"): + for player in data["players"]: + print(" Player update: ", player) + +func _on_room_error(code: int, message: String): + printerr("✗ Room error [", code, "]: ", message) + +func _on_room_left(code: int, reason: String): + print("← Left room [", code, "]: ", reason) + +func _exit_tree(): + # Clean up when node is removed + if room and room.has_joined(): + room.leave() + +``` + +## SDK API + +Navigate to the [ Client SDK](/sdk) for API Reference, and select the **Godot** tab. \ No newline at end of file From 64303305b2f9a9e531614edcda22530aec207909 Mon Sep 17 00:00:00 2001 From: Endel Dreyer Date: Fri, 20 Feb 2026 16:10:18 -0300 Subject: [PATCH 2/7] update godot issue link --- pages/getting-started/godot.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/getting-started/godot.mdx b/pages/getting-started/godot.mdx index 71606c50..19d87601 100644 --- a/pages/getting-started/godot.mdx +++ b/pages/getting-started/godot.mdx @@ -7,7 +7,7 @@ import { DevicesIcon } from '@primer/octicons-react' # Godot Engine - The GDExtension is still in beta and may not be stable. Please [report any issues you find](https://github.com/colyseus/native-sdk/issues). + The GDExtension is **very experimental** at the moment, and may not be stable. Please [report any issues you find](https://github.com/colyseus/native-sdk/issues/8). ## Installation From b12dc81f3d9ebc765bb76cb03748c6178611cc20 Mon Sep 17 00:00:00 2001 From: Endel Dreyer Date: Fri, 20 Feb 2026 23:02:41 -0300 Subject: [PATCH 3/7] installation instructions --- pages/getting-started/godot.mdx | 45 +++++---------------------------- 1 file changed, 6 insertions(+), 39 deletions(-) diff --git a/pages/getting-started/godot.mdx b/pages/getting-started/godot.mdx index 19d87601..7b98f553 100644 --- a/pages/getting-started/godot.mdx +++ b/pages/getting-started/godot.mdx @@ -12,6 +12,9 @@ import { DevicesIcon } from '@primer/octicons-react' ## Installation +- Download the latest Godot SDK from [GitHub Releases](https://github.com/colyseus/native-sdk/releases?q=godot+sdk&expanded=true) +- Extract the addons folder into your Godot project root +- Enable the plugin in **Project Settings** → **Plugins** ## Initializing the SDK @@ -24,7 +27,7 @@ var callbacks: ColyseusCallbacks func _ready(): # Create and connect client - client = ColyseusClient.new() + client = Colyseus.create_client() client.set_endpoint("ws://localhost:2567") print("Connecting to: ", client.get_endpoint()) @@ -46,7 +49,7 @@ func _on_room_joined(): print(" Room name: ", room.get_name()) # Get callbacks container for the room - callbacks = ColyseusCallbacks.get(room) + callbacks = Colyseus.callbacks(room) # Listen to root state property changes callbacks.listen("currentTurn", _on_turn_change) @@ -90,43 +93,7 @@ func _on_state_changed(): func _on_message_received(type: Variant, data: Variant): # type is the message type (String or int for numeric types) - # data is automatically decoded from msgpack to native Godot types: - # - Dictionary for msgpack maps - # - Array for msgpack arrays - # - String, int, float, bool for primitives - # - null for nil - # - PackedByteArray for binary data - print("✉ Message received - type: ", type) - - # Work directly with native Godot types - no manual decoding needed! - if data is Dictionary: - print(" Data (Dictionary): ", data) - # Access fields directly - if data.has("player_name"): - print(" Player: ", data["player_name"]) - if data.has("score"): - print(" Score: ", data["score"]) - elif data is Array: - print(" Data (Array): ", data) - for item in data: - print(" Item: ", item) - elif data is String: - print(" Data (String): ", data) - elif data is int or data is float: - print(" Data (Number): ", data) - elif data == null: - print(" Data: null") - else: - print(" Data (other): ", typeof(data), " = ", data) - - # Example: Handle specific message types - if type == "greeting": - print(" → Got a greeting message!") - elif type == "game_update": - print(" → Got a game update!") - if data is Dictionary and data.has("players"): - for player in data["players"]: - print(" Player update: ", player) + print("✉ Message received - type: ", type, " data: ", data) func _on_room_error(code: int, message: String): printerr("✗ Room error [", code, "]: ", message) From f8d67d7aea42573cfbe55955d16556f617bfb00f Mon Sep 17 00:00:00 2001 From: Endel Dreyer Date: Fri, 20 Feb 2026 23:35:03 -0300 Subject: [PATCH 4/7] add Godot to SDK tabs. --- components/SDKTabs.tsx | 2 +- pages/getting-started/godot.mdx | 35 +++- pages/sdk.mdx | 271 ++++++++++++++++++--------- pages/sdk/state-sync-callbacks.mdx | 108 +++++++++++ public/getting-started/godot-web.png | Bin 0 -> 55025 bytes 5 files changed, 319 insertions(+), 97 deletions(-) create mode 100644 public/getting-started/godot-web.png diff --git a/components/SDKTabs.tsx b/components/SDKTabs.tsx index ef4e16d8..bb8da233 100644 --- a/components/SDKTabs.tsx +++ b/components/SDKTabs.tsx @@ -1,7 +1,7 @@ import { Tabs } from 'nextra/components' export function SDKTabs({ children }: { children: React.ReactNode }) { - return + return {children} } diff --git a/pages/getting-started/godot.mdx b/pages/getting-started/godot.mdx index 7b98f553..1be6b15c 100644 --- a/pages/getting-started/godot.mdx +++ b/pages/getting-started/godot.mdx @@ -10,13 +10,40 @@ import { DevicesIcon } from '@primer/octicons-react' The GDExtension is **very experimental** at the moment, and may not be stable. Please [report any issues you find](https://github.com/colyseus/native-sdk/issues/8). +## Platforms + +- Desktop (Windows, macOS, Linux) +- iOS +- Android +- Web (HTML5) + ## Installation - Download the latest Godot SDK from [GitHub Releases](https://github.com/colyseus/native-sdk/releases?q=godot+sdk&expanded=true) - Extract the addons folder into your Godot project root - Enable the plugin in **Project Settings** → **Plugins** -## Initializing the SDK +## Web Builds + +In **HTML** → **Custom HTML Shell**, use `res://addons/colyseus/web/colyseus.html` + +![Settings](/getting-started/godot-web.png) + +Do **not** use `ColyseusClient`, `ColyseusRoom` or `ColyseusCallbacks`, as they are not available in the web build. + +```gdscript filename="Network.gd" +var client#: ColyseusClient +var room#: ColyseusRoom +var callbacks#: ColyseusCallbacks +``` + +## SDK API + +Navigate to the [ Client SDK](/sdk) for API Reference, and select the **Godot** tab. + +## Quick Example / Reference + +This example shows how to connect to a room, listen for state changes, send messages and leave the room. ```gdscript filename="Network.gd" extends Node @@ -106,8 +133,4 @@ func _exit_tree(): if room and room.has_joined(): room.leave() -``` - -## SDK API - -Navigate to the [ Client SDK](/sdk) for API Reference, and select the **Godot** tab. \ No newline at end of file +``` \ No newline at end of file diff --git a/pages/sdk.mdx b/pages/sdk.mdx index d764df1d..80d915e7 100644 --- a/pages/sdk.mdx +++ b/pages/sdk.mdx @@ -17,7 +17,7 @@ The Client SDK provides everything you need to connect to a Colyseus server from The `Client` instance is your entry point to connect to the server. - + ```ts filename="client.ts" @@ -62,6 +62,13 @@ The `Client` instance is your entry point to connect to the server. ``` + + ```gdscript filename="client.gd" + var client: ColyseusClient = Colyseus.create_client() + client.set_endpoint("ws://localhost:2567") + ``` + + --- @@ -78,7 +85,7 @@ The most common way to connect. Joins an existing room if available, or creates client.joinOrCreate (roomName: string, options: any) ``` - + ```ts filename="client.ts" @@ -142,15 +149,14 @@ client.joinOrCreate (roomName: string, options: any) - ```cpp filename="client.cpp" - client->joinOrCreate("battle", {/* options */}, [=](std::string err, Room* room) { - if (err != "") { - std::cout << "join error: " << err << std::endl; - return; - } + ```gdscript filename="client.gd" + var room: ColyseusRoom = client.join_or_create("battle") - std::cout << "joined successfully" << std::endl; - }); + room.joined.connect(func(): + print("joined successfully")) + + room.error.connect(func(code: int, message: String): + printerr("join error: ", message)) ``` @@ -168,7 +174,7 @@ Always creates a new room instance, even if others exist. client.create (roomName: string, options: any) ``` - + ```ts filename="client.ts" @@ -232,15 +238,14 @@ client.create (roomName: string, options: any) - ```cpp filename="client.cpp" - client->create("battle", {/* options */}, [=](std::string err, Room* room) { - if (err != "") { - std::cout << "join error: " << err << std::endl; - return; - } + ```gdscript filename="client.gd" + var room: ColyseusRoom = client.create("battle") - std::cout << "joined successfully" << std::endl; - }); + room.joined.connect(func(): + print("joined successfully")) + + room.error.connect(func(code: int, message: String): + printerr("join error: ", message)) ``` @@ -257,7 +262,7 @@ Joins an existing room by room name. Fails if no room is available. client.join (roomName: string, options: any) ``` - + ```ts filename="client.ts" @@ -321,15 +326,14 @@ client.join (roomName: string, options: any) - ```cpp filename="client.cpp" - client->join("battle", {/* options */}, [=](std::string err, Room* room) { - if (err != "") { - std::cout << "join error: " << err << std::endl; - return; - } + ```gdscript filename="client.gd" + var room: ColyseusRoom = client.join("battle") - std::cout << "joined successfully" << std::endl; - }); + room.joined.connect(func(): + print("joined successfully")) + + room.error.connect(func(code: int, message: String): + printerr("join error: ", message)) ``` @@ -346,7 +350,7 @@ Joins a specific room by its unique ID. This is useful for invite links or rejoi client.joinById (roomId: string, options: any) ``` - + ```ts filename="client.ts" @@ -410,15 +414,14 @@ client.joinById (roomId: string, options: any) - ```cpp filename="client.cpp" - client->joinById("battle", {/* options */}, [=](std::string err, Room* room) { - if (err != "") { - std::cout << "join error: " << err << std::endl; - return; - } + ```gdscript filename="client.gd" + var room: ColyseusRoom = client.join_by_id("KRYAKzRo2") - std::cout << "joined successfully" << std::endl; - }); + room.joined.connect(func(): + print("joined successfully")) + + room.error.connect(func(code: int, message: String): + printerr("join error: ", message)) ``` @@ -446,7 +449,7 @@ A **"seat reservation"** is a token generated by the server that allows a client client.consumeSeatReservation (reservation) ``` - + ```ts filename="client.ts" @@ -510,15 +513,14 @@ client.consumeSeatReservation (reservation) - ```cpp filename="client.cpp" - client->consumeSeatReservation(reservation, [=](std::string err, Room* room) { - if (err != "") { - std::cout << "join error: " << err << std::endl; - return; - } + ```gdscript filename="client.gd" + var room: ColyseusRoom = client.consume_seat_reservation(reservation) - std::cout << "joined successfully" << std::endl; - }); + room.joined.connect(func(): + print("joined successfully")) + + room.error.connect(func(code: int, message: String): + printerr("join error: ", message)) ``` @@ -541,7 +543,7 @@ Send messages to the room handler. Messages are encoded with MsgPack and can hol room.send (type, message) ``` - + ```ts filename="client.ts" // @@ -611,6 +613,16 @@ room.send (type, message) room.send(0, { direction: "left" }); ``` + + + ```gdscript filename="client.gd" + # sending message with string type + room.send_message("move", {"direction": "left"}) + + # sending message with number type + room.send_message(0, {"direction": "left"}) + ``` + @@ -641,7 +653,7 @@ room.sendBytes("some-bytes", [ 172, 72, 101, 108, 108, 111, 32, 119, 111, 114, 1 Listen for messages sent from the server. - + ```ts filename="client.ts" @@ -693,11 +705,12 @@ Listen for messages sent from the server. - ```cpp filename="client.cpp" - room.onMessage("powerup", [=](msgpack::object message) -> void { - std::cout << "message received from server" << std::endl; - std::cout << message << std::endl; - }); + ```gdscript filename="client.gd" + room.message_received.connect(_on_message_received) + + func _on_message_received(type: Variant, message: Variant): + print("message received from server") + print(message) ``` @@ -725,7 +738,7 @@ room.state: any The `onStateChange` event fires whenever the server synchronizes state updates. - + ```ts filename="client.ts" room.onStateChange.once((state) => { @@ -779,11 +792,12 @@ The `onStateChange` event fires whenever the server synchronizes state updates. - ```cpp filename="client.cpp" - room.onStateChange = [=](State>* state) { - std::cout << "new state" << std::endl; - // ... - }; + ```gdscript filename="client.gd" + room.state_changed.connect(_on_state_changed) + + func _on_state_changed(): + var state = room.get_state() + print("the room state has been updated: ", state) ``` @@ -794,34 +808,41 @@ For better performance and control, listen to specific property changes instead - ```ts {10} filename="client.ts" + ```ts filename="client.ts" // get state callbacks handler const callbacks = Callbacks.get(room); ``` - ```cs {10} filename="client.cs" + ```cs filename="client.cs" // get state callbacks handler var callbacks = Colyseus.Schema.Callbacks.Get(room); ``` - ```lua {10} filename="client.lua" + ```lua filename="client.lua" -- get state callbacks handler local callbacks = ColyseusSDK.callbacks(room) ``` - ```haxe {2,11} filename="client.hx" + ```haxe filename="client.hx" import io.colyseus.serializer.schema.Callbacks; // get state callbacks handler var callbacks = Callbacks.get(room); ``` + + + ```gdscript filename="client.gd" + # get state callbacks handler + var callbacks: ColyseusCallbacks = Colyseus.callbacks(room) + ``` + @@ -846,7 +867,7 @@ Disconnect from the room. Use `consented: true` (default) for intentional leaves room.leave (consented: boolean) ``` - + ```ts filename="client.ts" // consented leave @@ -896,6 +917,13 @@ room.leave (consented: boolean) room.leave(false); ``` + + + ```gdscript filename="client.gd" + # consented leave + room.leave() + ``` + @@ -906,7 +934,7 @@ room.leave (consented: boolean) Triggered when the client leaves the room (either intentionally or due to disconnection). - + ```ts filename="client.ts" @@ -949,10 +977,11 @@ Triggered when the client leaves the room (either intentionally or due to discon - ```cpp filename="client.cpp" - room.onLeave = [=]() -> void { - std::cout << "client left the room" << std::endl; - }; + ```gdscript filename="client.gd" + room.left.connect(_on_room_left) + + func _on_room_left(code: int, reason: String): + print("client left the room: ", reason) ``` @@ -975,7 +1004,7 @@ The SDK automatically attempts to reconnect when the connection is unexpectedly Triggered when the connection is unexpectedly dropped. The SDK will automatically attempt to reconnect. - + ```ts filename="client.ts" room.onDrop((code, reason) => { @@ -1020,6 +1049,15 @@ Triggered when the connection is unexpectedly dropped. The SDK will automaticall }; ``` + + + ```gdscript filename="client.gd" + # The Godot SDK handles reconnection automatically + # Use the error signal to detect connection issues + room.error.connect(func(code: int, message: String): + print("connection error: ", message)) + ``` + @@ -1038,7 +1076,7 @@ Triggered when the connection is unexpectedly dropped. The SDK will automaticall Triggered when the client successfully reconnects after a connection drop. While disconnected, your `room.send()` calls will be queued and sent to the server when the client reconnects. The maximum number of queued messages is configurable using `room.reconnection.maxEnqueuedMessages`. - + ```ts filename="client.ts" room.onReconnect(() => { @@ -1078,6 +1116,15 @@ Triggered when the client successfully reconnects after a connection drop. While }; ``` + + + ```gdscript filename="client.gd" + # The Godot SDK handles reconnection automatically + # The joined signal will fire again after successful reconnection + room.joined.connect(func(): + print("connected/reconnected to the room!")) + ``` + #### Configuration Options @@ -1107,7 +1154,7 @@ You may configure the reconnection behavior using `room.reconnection`. **Customizing reconnection behavior:** - + ```ts filename="client.ts" const room = await client.joinOrCreate("battle"); @@ -1162,11 +1209,18 @@ You may configure the reconnection behavior using `room.reconnection`. }); ``` + + + ```gdscript filename="client.gd" + # Reconnection is handled automatically by the Godot SDK + # Configuration options may vary - check the SDK documentation + ``` + **Custom backoff function:** - + ```ts filename="client.ts" room.reconnection.backoff = (attempt: number, delay: number) => { @@ -1206,6 +1260,13 @@ You may configure the reconnection behavior using `room.reconnection`. }; ``` + + + ```gdscript filename="client.gd" + # Custom backoff functions are not currently exposed in the Godot SDK + # The SDK uses a default exponential backoff strategy + ``` + ### Manual Reconnection @@ -1219,7 +1280,7 @@ For more control, you can manually reconnect using a cached reconnection token. client.reconnect (reconnectionToken) ``` - + ```ts filename="client.ts" @@ -1283,15 +1344,14 @@ client.reconnect (reconnectionToken) - ```cpp filename="client.cpp" - client->reconnect(cachedReconnectionToken, [=](std::string err, Room* room) { - if (err != "") { - std::cout << "join error: " << err << std::endl; - return; - } + ```gdscript filename="client.gd" + var room: ColyseusRoom = client.reconnect(cached_reconnection_token) - std::cout << "joined successfully" << std::endl; - }); + room.joined.connect(func(): + print("reconnected successfully")) + + room.error.connect(func(code: int, message: String): + printerr("reconnect error: ", message)) ``` @@ -1300,7 +1360,7 @@ client.reconnect (reconnectionToken) Listen for errors that occur in the room. - + ```ts filename="client.ts" room.onError((code, message) => { @@ -1347,10 +1407,11 @@ Listen for errors that occur in the room. - ```cpp filename="client.cpp" - room.onError = [=] (int code, std::string message) => void { - std::cout << "oops, error ocurred: " << message << std::endl; - }; + ```gdscript filename="client.gd" + room.error.connect(_on_room_error) + + func _on_room_error(code: int, message: String): + printerr("oops, error occurred: ", message) ``` @@ -1383,7 +1444,7 @@ client.getLatency (options?: LatencyOptions): Promise - `options.pingCount`: Number of pings to send (default: `1`). Returns the average latency when greater than 1. - + ```ts filename="client.ts" const latency = await client.getLatency(); @@ -1444,6 +1505,13 @@ client.getLatency (options?: LatencyOptions): Promise }); ``` + + + ```gdscript filename="client.gd" + # Latency measurement API may vary in the Godot SDK + # Check the SDK documentation for available methods + ``` + #### On an Active Room @@ -1454,7 +1522,7 @@ Measure round-trip time on an existing connection. room.ping (callback: (ms: number) => void) ``` - + ```ts filename="client.ts" room.ping((latency) => { @@ -1494,6 +1562,13 @@ room.ping (callback: (ms: number) => void) }); ``` + + + ```gdscript filename="client.gd" + # Ping API may vary in the Godot SDK + # Check the SDK documentation for available methods + ``` + @@ -1514,7 +1589,7 @@ Client.selectByLatency (endpoints: Array): Promise + ```ts filename="client.ts" import { Client } from "@colyseus/sdk"; @@ -1598,6 +1673,22 @@ Client.selectByLatency (endpoints: Array): Promise + + + ```gdscript filename="client.gd" + # Multi-region server selection may vary in the Godot SDK + # You can manually test latency to multiple endpoints: + var endpoints = [ + "wss://us-east.gameserver.com", + "wss://eu-west.gameserver.com", + "wss://asia.gameserver.com" + ] + + # Select endpoint with lowest latency and create client + var client = Colyseus.create_client() + client.set_endpoint(endpoints[0]) # Set your preferred endpoint + ``` + diff --git a/pages/sdk/state-sync-callbacks.mdx b/pages/sdk/state-sync-callbacks.mdx index 5f00487b..109cc121 100644 --- a/pages/sdk/state-sync-callbacks.mdx +++ b/pages/sdk/state-sync-callbacks.mdx @@ -83,6 +83,21 @@ In order to register callbacks to Schema instances, you must access the instance }); ``` + + + ```gdscript {10} filename="client.gd" + # initialize SDK + var client: ColyseusClient = Colyseus.create_client() + client.set_endpoint("ws://localhost:2567") + + # join room + var room: ColyseusRoom = client.join_or_create("my_room") + + room.joined.connect(func(): + # get state callbacks handler + var callbacks: ColyseusCallbacks = Colyseus.callbacks(room)) + ``` + ### Register the callbacks @@ -184,6 +199,30 @@ In order to register callbacks to Schema instances, you must access the instance }); ``` + + + ```gdscript filename="client.gd" + callbacks.listen("currentTurn", _on_turn_change) + + func _on_turn_change(current_value, previous_value): + pass # ... + + # when an entity was added (ArraySchema or MapSchema) + callbacks.on_add("entities", _on_entity_add) + + func _on_entity_add(entity: Dictionary, session_id: String): + print("entity added: ", entity) + + callbacks.listen(entity, "hp", func(current_hp, previous_hp): + print("entity ", session_id, " changed hp to ", current_hp)) + + # when an entity was removed (ArraySchema or MapSchema) + callbacks.on_remove("entities", _on_entity_remove) + + func _on_entity_remove(entity: Dictionary, session_id: String): + print("entity removed: ", entity) + ``` + @@ -236,6 +275,16 @@ Listens for a single property change within a `Schema` instance. }); ``` + + + ```gdscript filename="client.gd" + callbacks.listen("currentTurn", _on_turn_change) + + func _on_turn_change(current_value, previous_value): + print("currentTurn is now ", current_value) + print("previous value was: ", previous_value) + ``` + **Removing the callback:** The `.listen()` method returns a function that, when called, removes the attached callback: @@ -284,6 +333,15 @@ Listens for a single property change within a `Schema` instance. unbindCallback(); ``` + + + ```gdscript filename="client.gd" + var unbind_callback = callbacks.listen("currentTurn", _on_turn_change) + + # stop listening for "currentTurn" changes + unbind_callback.call() + ``` + --- @@ -335,6 +393,15 @@ Bind properties directly to `targetObject`, whenever the client receives an upda ``` + + ```gdscript filename="client.gd" + # + # callbacks.bind_to() is not implemented in Godot SDK yet + # contributions are very welcome! + # + ``` + + --- @@ -390,6 +457,18 @@ The On Change callback is invoked whenever a direct property of a `Schema` insta }); ``` + + + ```gdscript filename="client.gd" + callbacks.on_add("entities", _on_entity_add) + + func _on_entity_add(entity: Dictionary, session_id: String): + # ... + callbacks.on_change(entity, func(): + # some property changed inside entity + pass) + ``` + --- @@ -466,6 +545,22 @@ By default, the callback is called immediately for existing items in the collect }); ``` + + + ```gdscript filename="client.gd" + callbacks.on_add("players", _on_player_add) + + func _on_player_add(player: Dictionary, session_id: String): + print("player has been added at ", session_id) + + # add your player entity to the game world! + + # detecting changes on object properties + callbacks.listen(player, "field_name", func(value, previous_value): + print(value) + print(previous_value)) + ``` + --- @@ -515,6 +610,17 @@ The `onRemove` callback is called with the removed item and its key on holder ob }); ``` + + + ```gdscript filename="client.gd" + callbacks.on_remove("players", _on_player_remove) + + func _on_player_remove(player: Dictionary, session_id: String): + print("player has been removed at ", session_id) + + # remove your player entity from the game world! + ``` + --- @@ -547,8 +653,10 @@ Usage (C#/Unity) Valid options: --output: fhe output directory for generated frontend schema files + --c: generate for C --csharp: generate for C#/Unity --cpp: generate for C++ + --gdscript: generate for Godot --haxe: generate for Haxe --ts: generate for TypeScript --js: generate for JavaScript diff --git a/public/getting-started/godot-web.png b/public/getting-started/godot-web.png new file mode 100644 index 0000000000000000000000000000000000000000..55c617792f17134f379d65f62b14775c29ce749a GIT binary patch literal 55025 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 Sl}x1!K;Y@>=d#Wzp$Py69WSo{ literal 0 HcmV?d00001 From 0ed70c9bf2c7afe4176406656ced833323f57b98 Mon Sep 17 00:00:00 2001 From: Endel Dreyer Date: Fri, 20 Feb 2026 23:42:41 -0300 Subject: [PATCH 5/7] godot: disclaimer about native sdk --- pages/getting-started/godot.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pages/getting-started/godot.mdx b/pages/getting-started/godot.mdx index 1be6b15c..8bbcea69 100644 --- a/pages/getting-started/godot.mdx +++ b/pages/getting-started/godot.mdx @@ -7,9 +7,11 @@ import { DevicesIcon } from '@primer/octicons-react' # Godot Engine - The GDExtension is **very experimental** at the moment, and may not be stable. Please [report any issues you find](https://github.com/colyseus/native-sdk/issues/8). + The GDExtension is **very experimental**, and may not be stable. Please [report any issues you find](https://github.com/colyseus/native-sdk/issues/8). +We are experimenting with our shared [Colyseus Native SDK](https://github.com/colyseus/native-sdk) for cross-platform support for Colyseus across different engines. Godot is the first engine to support this. The work on Native SDK is still in progress, so expect some breaking changes as we go. + ## Platforms - Desktop (Windows, macOS, Linux) From 4ff09b79a43fac5837c0e0ea9ab9e8e012db16aa Mon Sep 17 00:00:00 2001 From: Endel Dreyer Date: Fri, 20 Feb 2026 23:53:51 -0300 Subject: [PATCH 6/7] godot: schema-codegen --- pages/getting-started/godot.mdx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pages/getting-started/godot.mdx b/pages/getting-started/godot.mdx index 8bbcea69..3d8bf8c7 100644 --- a/pages/getting-started/godot.mdx +++ b/pages/getting-started/godot.mdx @@ -134,5 +134,16 @@ func _exit_tree(): # Clean up when node is removed if room and room.has_joined(): room.leave() +``` + +### State Schema Codegen + +It is not required to use the State Schema Codegen, but it is recommended to use it to get type safety and autocomplete in your IDE. -``` \ No newline at end of file +```sh filename="Terminal" +npx schema-codegen src/rooms/schema/* --gdscript --bundle --output ../colyseus/schema/ +``` + + + See the full [State Schema Codegen documentation](/sdk/state-sync-callbacks#frontend-schema-generation) for more options and details. + From c1924d6949c7861d0e05aadff4a30f697803552c Mon Sep 17 00:00:00 2001 From: Endel Dreyer Date: Mon, 23 Feb 2026 00:29:35 -0300 Subject: [PATCH 7/7] godot web builds are now WASM --- pages/getting-started/godot.mdx | 15 ++++++--------- public/getting-started/godot-web.png | Bin 55025 -> 33865 bytes 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/pages/getting-started/godot.mdx b/pages/getting-started/godot.mdx index 3d8bf8c7..4e2b5716 100644 --- a/pages/getting-started/godot.mdx +++ b/pages/getting-started/godot.mdx @@ -27,18 +27,10 @@ We are experimenting with our shared [Colyseus Native SDK](https://github.com/co ## Web Builds -In **HTML** → **Custom HTML Shell**, use `res://addons/colyseus/web/colyseus.html` +When exporting your project via **Project** → **Export** → **Web (Runnable)**, make sure to enable **Extensions Support**. ![Settings](/getting-started/godot-web.png) -Do **not** use `ColyseusClient`, `ColyseusRoom` or `ColyseusCallbacks`, as they are not available in the web build. - -```gdscript filename="Network.gd" -var client#: ColyseusClient -var room#: ColyseusRoom -var callbacks#: ColyseusCallbacks -``` - ## SDK API Navigate to the [ Client SDK](/sdk) for API Reference, and select the **Godot** tab. @@ -72,6 +64,11 @@ func _ready(): room.error.connect(_on_room_error) room.left.connect(_on_room_left) +func _process(delta): + # Poll the client for messages + # (Only required for web builds) + ColyseusClient.poll() + func _on_room_joined(): print("✓ Joined room: ", room.get_id()) print(" Session ID: ", room.get_session_id()) diff --git a/public/getting-started/godot-web.png b/public/getting-started/godot-web.png index 55c617792f17134f379d65f62b14775c29ce749a..e996017bdb103bc045a9812a9f804316ba954108 100644 GIT binary patch literal 33865 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 literal 55025 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 Sl}x1!K;Y@>=d#Wzp$Py69WSo{