From a96fc8b6a65567aae40da8cd7f393867d810fc70 Mon Sep 17 00:00:00 2001 From: skyace65 Date: Thu, 4 Jun 2020 11:24:16 -0400 Subject: [PATCH 01/39] Update import process images --- .../workflow/assets/img/asset_workflow1.png | Bin 21131 -> 11215 bytes .../workflow/assets/img/asset_workflow2.png | Bin 8119 -> 7811 bytes .../workflow/assets/img/asset_workflow3.png | Bin 8652 -> 13580 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/getting_started/workflow/assets/img/asset_workflow1.png b/getting_started/workflow/assets/img/asset_workflow1.png index 3f146101c4a97800e852c2402bad155980f3b4ec..21f79ad78713fe8bbaeb72d281b2e383817832b6 100644 GIT binary patch literal 11215 zcmYj%1yEc|(>4hjSP}@byAUh^f+V=RI{|{byW8R+*y0}C-Q8U_xVyU(+#v*hxViWJ z{;H`xd!~AN`t)?oJpJ?p%6<_=N5w;hgM&jC7Zdsl2loOA4(??W3j9;gN98fLrw4*D zzcfD_TtztAy)NR@`wRQ8q5^QG!|(Rs;Nan8r4)q8KXD3*%IO)|DySODDd~X;C?0_8WiyB$D{kaudU0odHapU5b@yQy`%`52X8*z5?{`iTj zysD9chNr0o#;j;V$1Kzi>y7-8!p1Gx-8)oVR%2rBkeQY1?H9}=D9gYqoSc@Ys%7f_ zJ?Jw7zmpr(!P&dFe}su$l$k?}Pxxy_c8RG4q+TztRnSRHO4HW2baM3;4QUIF zNLXFlNJ`D6WfDkB&z6)?D=4m_rsHa9@AmbN2nmmiNyrwFP&6>H_3(rSg~ry@w^Gq^ zYUtT{dWST({`3oq{Y1|_I5^BJBya3``vZLSjP0e}qTI@{6fEy7*@2 z{VuJj=Mh#(NiXp84~BfR#;RnB&l_Da>gm3Wbk7tG&1?|@o{H&Z***&l1YL= zK>H(|(D=k8zq+6D_m#?SwAdP5;xC66P^v5=tJr(~)&uWe`Y z3#8e&`LJbY*}muTF|BDjwG!*4F9r#$F16?2poX>o+md-n%ekQk{;Tv=@9%J+?=L{# z*IqH)_rFI39r&#k@B@G8@@?Y|62CKefusZX+=}#^ZTBaEUi@^9d*cP|qr5&&{ef6k zYew`T7SYZvmgAA(i=2z0dV(vV0!oo@aq(!Fk1d?F^wwXMTb0E)Me<+AT;RJ@PN>!q zH?yrN!~{mDJD*!Hlr`{mR=cm2AH_91?m z1Zfn$(hzZ07*5>gzH<(*0Qg0}+79-hjlc)2l&M`RSL2hp4~s+%cY4OU2rXyL`x&yc z^`}P*NeiWD+^nq)J2<*OwakeqJE<1!^iDnRTAlZk+3=weyWc+9QFod*7&ZnigIj^9 zWs*F&s3X&3)SaDlm81 zlS_+sQ*?Q)UcPmI;4Mp6_O&KOSs(+RCMnO1;ncQ&mlW{}BVj@Tg6+(W!0}J>q>=$R zK~Pqkp(}*7*NGVs^Ja*EKcUzPfxOfkc!-Q98mkw+P_9TxSj(wF0O)1*yCFp+f5W~= zY8=Nn@}>nM!9N{~+o-;^PRUm**|;Rim!_(T5T2?QV!>^$M$|pC8CN4FWwXO@5-}XU zWy3N{S8kQJyLkq9LiDYl7(G&NnVx2`D-xnqkSiDK*V=1oS#t*t-|>zXp5bc~rl8Px{6Jk05T4 zbJZ7kB4M*{;@WOt9z!U33xR*JTp#KYSpwUUyotn6|3bhPHlO@+@kp((egt+1E7K$|#($ z0^g-NJQf4l&#ZCMYQx>P?(n4rGJa`s*1O}KWdAm|mgT+i&~Wn>;O~}i0#Ul+%5MWX z+qn_x;Na=nLs_05f7?ZmPLlRg1(%QXw@9@A1&s=bMIxVJ?qsDHrP>VY_*Q(fhV#$6 zdaeE6t>EmnHQUg&H9VN-#7sX}sk!9?-PuGdc>0h)EGuAENK0SR!`)q&Lity?tZoJ^ zk05Gf9M&=h&^yAsUrm^@4_D z$NONh5DXZK3USuhL}@5`yXg+~#V}e2Qj?apnQqdMxN-{?+oXAe~mF(xVvepD& z*hP~!eNYubmza*tI78q?Kcex`lMz=zf&hy^bhm)cA!(wvmK{|R{QrDLyfT@6)-QS_ z4QgZJCtS%a5jtg^blhrv2VWI@N$+4)`V>~H#t$3F&e=7PkXe<|8 z%7r=}ZgLL3@v@YpQ_&Yn(nC>C7!EeUXE=dhfb_HrRZ~J=HMw9O5(4f)sbrvH`b_Dt zUoCqz%>j@$fC9$i@ca3jdZEC+0N|6hZ82N=VLrs?8AHR15&`jq6&g<}i4~W+!TH2b z2$>`k9n-RY4C!A;g|htOc}M);hw2yt1l0y-DtBZ_H!YtRKH&w-L77t9z}M$b5TT+FC&e`b_HM1ABAz z><%O@vNp3pEo>>D?oSkazj-((t;Bb2Grnv1{Gh`Pv$=rDO+qoh;M%RdxFTJ zvqw}k5z?;{Gy^p?g#K7^K+l(!sthUeIl&p}7Uv*6HpIlW@IhVA+coSC^_vik`>he! zPvT!R>o4avBj#dA-$cF;jIZ7ofah@&`y)^V;;O~1LKOi8v>$u2N&y}Szy8%8d8LyM zxr%m;7+d#d2ME9U$yR* z7h_XzA#$<6$P4>f5EmCN@BE>^gM3v1A9GVwLLA#eGb^z9sx5)-L5|5K89+#vM?-gh zMhR8ib-88I00?@>=;i1Zi@yw^tJHPd|_8vI20ZisoJY)+(nbSU0 zWnZmykpa4vaq&(&EZasuYAvyb&ct7#hiNPoQ--vQ9&fx;D?x3y=9td?5!kN`%n@G1 zAS-%V%dT97=BCpdSx^7br|@N)D^ifr)arwPof4^CAxyLlS2^~_Dl4V|QAw59=KDyc zg6(J`UEHg7*=`1G@kDVfO3Wb+zi?%5^&SmGo;w{4a6ECQnQ-5QV316(gd)}{xRd7K zJAW2>#>(IhNB{-q4kbZT-o}Dr1X1MxfT3bPlnRMcURIU+(AahH^O}Ln9QE-02;r^X zWKK#zJ7gTwemB6yKm2a{z4oVcC&7=t)XZ$RD72&38vmjU3H&_45$n6)vk zN?9XXTMOuJ*JdCD2aT|6w2ET6Z*3@X^&@&UG3>`Z$Kf#i%MR%4!-P*({GeP5T8jAQ zE*nWAva%oj2$0He*Q=mqYvPq)p5~xrbWz;c+o3NP)Bg?672HewbQ$Y>Soj&a5Mj_; zFCHt7NnbdyT}P70P+kKa!q&h-<7orf2+AE8^O`Y?CxOu4cHa0EEEd0N$@YrXkIxJu zu_U(64Z54At0D%-WB)?*#*B(aQoo}xH(Q_PajK+0I*H|H=mnMtH1&`S@{MH9azm4t zGvb&=?EvCYYWMSOsu4M#RsB}z(FP+(DJdvUB5&|5_9k@g7S+D!VgPn~y$55y`F5lk zv2_n6j!NR0utO7=V7gwbU7rw5?=HOc*iIN|u8hc;|s@*seZgZrhl5Qw3wK%~O! zznO?A#j;>OWIo;pe+@tr=d@c1Kyj%*ws6&~fBP8Hv` zp=~$=?%CMtPMyOJST|;_M^Z0@;y{}W4#I$A$)0*9MG&Y3!X4D zR*UFTB!kuKa4#V8jAcl-byz4pNhbH_ICM>U|G`rC>`Wp!Rt%(I;p#{u!`Hex8*`I_ zM*u>{xCtBQwbNJbNSg07>LTwKCtdz9zDrRW^egQnsiJ<$GIap4!6sSz=Vzit_0BBz z#rJuxe*XX$S3o0Mz14<7^Ogq|$Veipew2BLuPnYxry_tQYRF!_J}B52UzY-pR?x(Y z2maYA(nHqrj5qNLdV|;8N_*>b+~85@##~Pj z0960vJ6o9V=|tIu(``0~^Op~+0yEygjcWgfm~aWS>Y}<)M;133`hC0i>F{n zWBn&Kq#4>B6#k}j_8^N7aptY<3*qZ=gW>$Wb=3?E3`k}uYGtsyqBXp}4(c#Jb!S^sP*F)_ zfs&OSEG`0d><}ToDl$mzB$n8QK{}xnyaEntQ9jhAkrOZp2DsOhuveD(VhSLVD3M{D zKqj-s7!~0sVZ;0=HcNZ!V2nVjGMt()oC1OdHD!1Y8=xz3X-h z5-hPX_d}KvuE}CVI35tAwFq)@fbPB)UKpM@ae;R~SVsYzy!dB-WP2}|Uu920SB?m> zi1iwHHS>Wzd2eog&=9n-7U{7TL@D}~(dq=yc#B)_l+t^0^ts)6=MI zq;oQ@oCdPJhV$rx*JkV;`rsN=F)a`|HTAs7hLNmz5P1|>9@Dgs1`^GCPR4$3wrZ5z zg=!V@b>9Abbp(opu2E+^s0Vt(`|sXt?tM`+c`l zrB-2k^yb3mN1SLRjx@b?z|!0j^(i7S4iJ%o)1g>CLH4P~#zBofJR!>a-M!5^e!Erc zqy5I|c`7&ZfSG@+WA}hX!YUdKz8@5$)Osh;&>Pq0fT+rBQy!_Neqet#Mf1&ww9tPd zle*Ro3^1*PEdQD39duAM`mZ;n5Lq?fKf(LnxA5fLX?maHkZf{E4JG{&>8cS|X&5wV z71LKwW)m1C6a^V|O81w$$>2AQo{T$i2rPHm2v=P_3rvvV2gToeHvP(c4a9=}P$-#U z^Lln7E|<>s?H9bW;5|8I=r6tb!XwI0iCTD1d***I-y;1V9>5`z?(08)=w^9fKfsKl zbcWj@l+*nu20W&#^nammkZuSv&D^dL{SaM#xuYjwv4KtxhleO$dynW5atj-1`?F!g z$nz6W&DtBEO8{)_4R1!QXKM(! z^|#Mz8PS7o{2lb@=m_y?t6IH62xbieeep87`Cvb*{f$ld1efOng6Hk|3Eg0%M2@a2 z;I6|mn8DfNvk^`R9fsG+M{pS8jUXK?XZ)XUD z0$7gWU8VUojsg~^kbR&D&;9%Qu8^?WQ~%`(b$ei#r$;R!h)Pqu-l)IZ)l26fFwjzq z1opGt)0LpBeRz!JVU*Lz{Ql;0nY{>U#73dQOHG7T7wOU(fw86t>i?`S$jienWy-@ zgc<3iX&B#UI4#;Ab{ZLv)Y@dlGZh0CCw`eAUG+J36S?-dm1@rGH6S+jRy5MsIfLu- zX2t*q?<_aowCLB8=lHr>$6I+t>WM53V?SQ!zp$@=mUx=*Uy1IKf#GkTd)~&$FrI8h z108Rfk^$TjEB4hxDIJ#fn1`)xlR8Jrgce8B`>z;g$DfF;_8yvleEgTX`%d%rUwlCP zobL_Lk-EJbRcC!WePq5}Ybs}B9&Yks^2DTWxiPXFqRm(*9qg^{CWKE3OdBTe%NE`G zqQd^iW80pET#Ep|#pIroeQ?mywVOr03(dW0?04wbc{?F|#bi-5`@S{O*uL6OnXItj zP-P-jm2Fnev82=n>5*BZA_p&P2Fp`9yRRYAqSa#ptQ_R*K}?}ZIFq*Yr~9*AeK(h# z3Q*mbZ4$s62rNdpmT-*bm(qLQH4I)C`7bK z#|o3b)WG3ANtsKr*uXrbE*qc>!RAI{(F*-7IFuc;d@*R5=wC99=3Yl56&_wtvlei5 zTQHeCzcQL!5X4f2& z-*SWUxYVEEuisg2v(Nnl#N14-p7H!&D0cGB66RU=21%5k9o67>ua1j4IBpVj-l>wOXo!k}i_AXNj=XQ4F@~xdT8Sj(c!u;M^ER-!VcX#*6 zD27CmH>@wjIRq%>oO5uFAq9xcl1w+!p|mwqM<9uNO@$jFlURd@JgR!bSGS!TfrS_59Iy3(;h{wsOuz(Kv}03FOh(sW$6 z)Jp#n^5vLNVBQxGOb~*698HQDmCsI9*g*Lg?_dGYbpel{TcO&TOV0_h=uyp-NJU1P zNX3x|CrziZ(=Ma)Qhm+Na1Ru@!K$nU68TGO3lHIT;x>2Qc*${%Ito&FH;=#h&Sb%H zC%w?L>O|3feNo2=({B|Pju5OI1xfx2p32}!pR7*~7Hig`zbBfm9aABi59pQXCn4nxNZaj_9 zU4@)3hD(#W`F8H$K-$x1DCWuBv^sL43l|Q^u)n#=)(->Q9*wFXj05cl0^baPm{l*J z52C2tP|d=~MrrL3T-3IyBU#?;X~IGdKg@XVg|1i-(xNbn$Ng2Ru^;El<66(P25&Q_ z`mMTu>kMm2rDYlhP8H_R;UPx@6ANp(qGr4{vOM2S>A{F}+2Zb&cGg!}XmgqtMRI_v z)b+;ASf3?%(C7Ma1n4i$=G2;C{6lmfGwfG#)}1{xCwo}`B=0`LV2eF!ofAL4=hX!< z`Lv7lM;n!g{`i-F@t_Mp?}r0%py6LqTXC=KeFreFo8RFO9k=~*2GkubG2UF3SO z8Z>#o39?2k1Sm*|tY68C?*XZlg*{TH6|)9*9e8VoeqnP8rwm>HoN`sB+NY6*)V+jq zUmq&^oJT($yczH z@r5AgwG=)LGw1~CcoQHoD{`8+iQF+i#lg0;+!G@$I{1|SKH{tiRPt!dq~pM%9H;YY zBxve}5N&8D!Kod4#*Mo$PfNyfoW~gbuCc>9DBfL0!!m&s&;~X~4;8p+na!IJ1G*@i z_<9X&`AWu6#eUj!q#Q(BqR8*T`@aE}q_?UyigX8GgWZI7tuEiu?MabJ(d2ChIUAM( z1&ZM1z5`oL(zWt6haKxJie&eV9o_?+Wi(qqmQMez&ryMVosO3lCLXu2hT1pnP^|-l z-fxf)QcCpd@VCe|Au!*WUfS~&#O&&+dS8!YF*gHCHD->XeHkq0I1|yas*m zI0YfRR=CsSdoBN5VSj2~lzqX&$*Mo@NkQH_=Sl`RmzN8!lWNj)EiqJ0$ld9-WwFu} zd2nzjy3cn3XwiANF`(PyH*_xMl`#yYyaD|aCTE$1q;Gurac9Y5aC6XoN&J4UZ}+HE z!Y)cCvt-U{zYwALR7QRyM~G6Mv|dpTj$m?i^H9d%=}yMlYN%&v1u z*C$s5erNa2I!&6jYivM>KCakgzc$eE{M5>|EP>Z$TPs%#niV6F8Cf6UHr>wuP>o7s{E?u%$G{S`NQG{pJU}Aq90@-@rsco#_^X?@<+?VyFMk zNXIkehvm-ZwB4;j`S_tviGEBj<4?}t=7~N{C*a65@~GjS!{*}J{8U4}FRE+0d;Beo z<-EClvPfIo>J#nYyN+puoIZfA%jK5WRCaiBk|zyO+H}K$Q>Xp)*S}@o=YqK`0Hf4vmEd_#y69dNdqck;++m9(_3x4M zd|*L8_7caz!_%PQ!odsZrg`9Yt6!3Zmj&$qCL%G#r+Rr9tlOxBDISo{flJ!nPd(~O~Ux*bQvE60LO3%c0Fjw=x4e211{CGY%c{`~A^ zBb>||(>1XIiD^S)Vs-*Hq^v#yi*h-GJ?zT*){KS*c0#f^X9)JH{;~_|(uzq$ikJSg z8uH)J85O^oi{D6X`O_*t{J@P|a%Qpo5TvjUl_!f1-nW?earn?M@KFoqzhzv-%|K=C z9p-EK;@}~U9Rs9+U&nVK z%EeguW~d3ARqZ}~h}MRBb&N<9=PU(`+g4z3&#HoLB7-(JCRjOAc+P?MX+`iY|39z) zTd6q*KWq`@pV7V^K6xWWe|l_WAG$ydW6k}uWKnACX1L0Vj%63RfGBtxNbKwV1sk7% zP8#N`u>t9jP1z#E-b__o!WVpO=sxs*f%T5vo6=Q(mv^S#;{tuwONnlH)U(uVhHe7?jFBfTuJo4vag$F~fq(hMb{$G2%Kx}$A9ldh9v%5J}z2e_k(yg!_*tEN+7hEP5+U64)(J^xpjItg7zpPW+g1NMU&2_@{bl;RC}n0s(VFCOU%>pjKSv z^fK1>)u-kPBoB$DNe2l>$C9b@y$BVuD1oZ<6Xh46-2!C*MHS<3cMV7@F6E?^2)w>h zXSrfBPV1$kuhwJVUb8c`qN1dc%9Pns12OIppM;Wb8DMev;M_LhR*eg)1+OnSI9f%_ zAhq~=Z!p1aQiuOgWTbrGW(Ki>0tterMEfMXC~v>_EWG?uUuldYbBRdm7hzM470v=h zKLu3vsF4^~cQsd64)BT_RG-oy>NS2|;|yp)>@Lm@wz!v~d9)xrdcUV##4-*}YqtDP zoM2x->?{-|h@0%y znskdEUqXuGn>V>T=8*|1e?Qmx_UEu7Zpp;7W}(B5w~E6``xjVHTSh7MHTu(lOthw| zFt5}y;Z{=qLn9_SqeI}tYgcnc>!T9I+(fEAn=JHyxW-u^tn8o|4z>ysnU@0teE36y z4{@Kvxt!GJ;PE7QP!8Pc3e|44Q$V`gP2e5j+UNyX9zWabWGp@Oh(3IZBUkA91|Ce%~O?c<(Vsd(5MCb+e=$`^S^OXP|?KwP9wk zOLMcpL!Y;7lz#CGG55w=l^?Ic9!LZAXUT7l()p*$B$Ew%5BI(LC~W69`z>a`9Rw~N zr1RG|%PMw|dxuNg479RZHQP(uMav{3=iDP>yS0;}5yxCDDOy@4Els@%z>UBe@572G zU^TV#CIZ98vFVT@-rj#Mnxv+phxEUq_dmU m@dCz-^27_RmSbT&0^wB+nQn;WnV)Xt!ifui5h@kX@&11{qb0Kd literal 21131 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 B+Wr6l diff --git a/getting_started/workflow/assets/img/asset_workflow2.png b/getting_started/workflow/assets/img/asset_workflow2.png index a2b5bf3b3b188693755ced3e95515cf87064af3d..b0ea0c3e99d9fe74d3977299a0c5aab13637f767 100644 GIT binary patch literal 7811 zcmZ8`by!s07p{IP3Mz<{NDI=P(h@^=3^8;KFhj!-Lr639(B0h~4kg{C#1JAO2n;A8 z9T)w+-+i8Y|2WS%XRp21I{Tcx-~GPpAk6PiDyZiet8nTl2s>aE;@7;TFPfbY+K+h_yrDthoLDcWhG=ZG=Qe5X<1C{VgbPsVp3{3xdns66M6YXt{wpyS-Bj1QvE~YbWD7FLUMdU zGF?4GA`&VCL*vYx;zgx3HFd2qaj6Qb`XPuoRC^BttBA6?k({#L@aU9`f)>v^fCbo* zUszsTT7!!ppl@W&%pp87Hr>|Q2lM>k>KW?b>;=@fu&{QrwS#437b6q1Sh(JQ>K$@* z_scIRX5|tMkBnpEmhkoq^9zhDuWHOKtc;9FPD;&H(=u*oZ1MgO-rGM~P*`GM=KM}n zNkl?PKup8Y#XBoIFD@Y!pr`})3G(y~?i(2M4@AT#Wjnd~aSKT47=R)6?y6d*#btGg zsRgW@A_2kCS-GXTd4*lw14d?0DLHLV??5{TcSbf*DOpW<6;OO)YX87!MrN*tjs+8& z5XcyklV2VX8n3Bmo0?G&9G=9+BdMipZftJG6^6LOiIq6 zdCLJbshhNgB!HA4#xkA+Wkelp4@FC?v9~wnawSSPY=Y!YL9O z9wV)27@wRAFpJUjtY_eqjEYGRP=H$7`_$Gq6%E_@XV3oXP8au;wH<1H-EE1MO!lH#GfxNV1M^s3WrkYx8if&3$}z{1RY^_Ls7-9P3~A2!B2xl8^vE$}2Spf94x8R=Pp(7Aq5B zaGR+;{l)#0rF~fS?ZMTGdzBKk0y4k3BUMk>*%*~rAs2@O#Mq!?I66a{hW)(F<#7Qn+vF=h2*7@G^Q8z zj^Hzk5>QPRlh^<3lTlF7vSy|n!!^2WUgV0ZR=MVl(DRgWQemxH^4hQe?KaorWf3|MdIT6cnhfYrt;X63$oG*x)tTq#H28UZ|&=%Dzh zPm{=xCY?R}@l|G9?Erc&W&=5V)j`B~V=LtI0p;azx({zztuE_^_~h{s#aP{v3fSN@ zZ-LW(4ci&GaA|s{dJ%PcK*ZW--k@6&X07M#$sF}UfP1U+(7Rl!FHaz>mv5?=h6y|S zYs3qi_3xqfkQwZC1V|$T+GHMW^7QJ-cu}gkiY$(s?Dx}y=^S;KnO!!FoLB`jzwa=! z_h2}4)stAfeqke0PRE##F`XYn+3-yWOk)=iJD z;(^BPZG@}sAlqqFYLDME5b78j>XJC6UlSFpm)Fx8AanRlRN{w!29*Dm=j^E+o<3>tJ)vYyYBM7imZ2>cY4djCMrBs;629qxaa}jvpPjIxw#J%(5!DSD zbsC19Eil_s`%ZNV@H$U_RQICRGk{q4R1Ju0?C@beq&Nq)1;9Vi>>bx0wkRKz{LoFn zsANj_*!SKFTK-HLBh$+<&A+&buv`r{>iViyiaV4*T|HD5JGuUki4~TSjqa=NjINf2 zGlc)n*6YfQWj&|qJ+d{k2+W5fv8MiUmZXuDaJgo_ljZv(0~J*P99dmhO@(!KJd_`v zJ^OdL{rfJv_C1@_@xI>#3xW6Giz%Vbny~g6miZ9Tgv+wEks{-R!^@uVu-|3}jlY2- z{6BJ+#Dx)fehkEZMep2w_KYji>?WmJK@JfS8NF+Bgw=X*T7iw+B^R!_zHIg6zO~=s z!CMvSc7sx_N2Mt#ufll|WV;XMPAOpncR635Eq@uFpVmZKf{b;ZeXgmjT7Uj`Lfu(K;4FaTr*^kd%JFPzqS<+M)jliOT96+W zc1_&u>!VKYco?KB8eom5I6@(#`{d z;R#H;FN9F9iOL`61zR{k=EqhGiLOASz-Yo*bN8;`ZdxJqkxso6=3;cj!Gdi=N*AUL z*V0?YeCb+$0?@qAXp~4YMbc==LDL)Kr-fC9y{RvcFtAwT#fcjE~byC(WYlJQJ2 zG8Aeyn}9x-`h`yyti_L_-YDFhzZ=j_)e?U7uG~%1x2hYh;LTWH6|O|%nb$(+_@NDv zVcNs`I)tf>4=C_TC0A34YD>gee11I)H+ONU4I@a2WizT4I_O_u=redSQe}&mdG(}8 zCqw}s>2IKY=4bCwlw84SftwchvI2){tRCI0O9|h(XvdlH;v(s;D_@Xe=;>qn_meMv zL^qM*y~nZ=h7LB{MO>#mC!$$|VKLp~uNiYiT8`Ub&99w&^G|hcn*_?? z+E;9TOws^~)H!s&T{Uby@j=^bc+F}Y2Wc@chhp+R6ThXcmiF@-xEHk6cI^VTe?Q2+ zs+@f!A7AuSgqep4UYG}OL0sW+k<@{)9LKa|ezkB|R91C$mr@)U zF#~r-PA165h1<0(jEl3^z1y;Gn;S*bTjEh5$UG(oa}BLJJzehWv9_ESea+tMn-L(G z_G}Wk;qp+&mV8_|+Ld&DvbtdN#$`Yos^x$>8l?PJCD7vU${qELg)%&mD`y4mE9sMWRao0^zl6)&E~z(VKvdPSv~ z!Dh}a48A4knHkluDCv4xC(Ne~N>@9=DgX}(>BIOUqKA+LHA<OcP_9-_RsP)vX=CLA?dNU@hVRo#@=w&LGZy z@j15re3`VzH|$ceB@z^;bHhbd9~epC!KHqn3dhtMl5h z35KkVDn|rivOzCH)<68M;0hw|H5_`n#>3wDRsiMs6z^TT9lHBlyq1T%lLJU{ZK#Hz z>~kZ5Dh=qBcUpiQHiBV{vV})K)}zVtX`pI3xc;u;M1_DZYj3_=X^;@AC?|rT9dZez zKENa>hZX>{Jj@1amLAB(dT?WW6bxMJw`0Ey6R2Vs=@~e;O~eig&;`u00_nK&GzUSw z1TR(pH@sL6Nh~a=iPRdltn*($+=sy?b4W1g!|ojFa*IX5SL2ix9E^cpk$a4Zn;z`y zI5$Fu67)JGsTNx(Gb?YB`Ny6|_u-d;7^?FDKcB;&RN{Vf85p+OI>w&>o`=o-ZZ)kR z&)%xn9_H7hx;AGJxAG0m;F->=tFNj*udnt{Ru-R6Z^20bX9)%Z3+K{eoxJ*L!!}rp zXW6sd52+Cu@eXeOnP+{4GSSyDTLSCZ>7CaGbY3@|E9c(_n#cNp3hQS%@#7vXiM>1e zsiDAq0#C;a$DphfN}bhrvmPhY9PHP=j3ZyKdc?QC3uK#|a2O+eFIHK2YTKRZ4RRDR<6@bJ5GPoOdWZ|MEG9zD`5sR7{z|j zN!tVHDP}`N)dX!8iI;@rd{Wh+HcBsxXFt)exqsy+0I_Qy{tZ10gI%Si5ZZj4VSP0;Z}a7=Z_CwPC?`1{lJtx& zqm}I{Y@u!Hcw;6=>KcAmXu5XshP`(4S83}ZeosIaGPFT{M3B$@pUVw_{fAckO_G`Rhv}dU1RV)v>BI4Y%#%qg@9ayOXbawa7EaYEfU}$Wy*3_hma3zCvO|O z3O8NLQYB51lPc!pjBfeh#NJ;(6 zx9kV>iXoV;Z1pyZdIiys49^hOs~!w8^ogF`1Bhwa4`D$vAGc;Ck8n5LcE*Z1Wn** ziDh~@bqg6TcSI!0Sp^9o@%T_R-BJq?p~aJmdM3uxgFhQg*H75aI}xn#@HOUJIGB(q zAb6%$aW_rYb7QMdLB(OrK~NIcMjwOm=-FhiOYW}VLqoIYOWa{Nt_0{ zDH#GQ=uW~Erq13^hxjo3p}N*EXp2HFPBQs~K}TCn2I#mu;xmmezvurL3y78M_jG#y zU+r^8#>nPlT6Qrv?3?Do3IspCk7(fW)KK{iYs}BAZ{x0uWi|DwkSq32m!<0MeL8+4 zzQg{5kDXj=BnXr9OndP0+c)ZmwXuc-XOB!D6P3=y#6VDmfpH`%F%9*Ha%rZRc#vG@ z^tP#m14pKjHW#zN`_B-AcO^;KXwtDMB7%T{_LndD?SIhWqjJz3p<=>6`he=`Y!nHR zlh^a@hozHmdgib5M3Qs+wrDd&C%@G;7To@F?3inr&CxG1f6OEzmp%@cmpJXVAPJ)Q z!mCB+TnubNPfMIH-%L`_0)Zh}6kuw2stcRKZYXE^HXv(r@bvZEYpoGi47il#4E%jP z51WRd=NAjiA3dRA+bERcRXUc0yBrg`U-GPy3j7U>qS6=QaRWax9U(n=`M<jqvB-xA@&cHT@!c!RiCAO;XMw$HVAd`Ovn zX{w-ZLW!jS-ox03S+w)hh)dV+?~todR~P8ZF&V`X;(?DF{SdFHr;lg2u~EOp*w12T zxqq~Bt!KHV2(#NIhZ#1v`l>$@;S%KG&UZG4>ObFf(qUf8K|G5)Be{}C3B959P`UBXGau5D(IQ4Cs zYE3DurSKW5Asplxr9R1bnO1S2>6gxE=QtB4$b#H9@0RiKEpEA)&&Q0)3!6@m9%K3w z=q09WjUPL8lFlDFi|XI_x#oaft?t@a|56K9OP7hosX(>}&pu!|} z`#Fqdi4%f>;adLJ)tqi##O4GO8+2RGpQVoo?-en8MA@hk@mj_en1RIqb=PT;mAM4E zjr$_J{3G}QOcoQ)ETjV>S)zTj+j@~IB2&Act?yF55q9_}`m`A5P2q~zeNb$?E&tle zdqwi!aw4*uE>rZ%8$ev96l}L=rev8OdEuG+L1W)DkLe`rig1|G-0jfd=Ge+1c|Nj; zgQV4UVXy;LYOid1&|oE}e2FP^oj_H~+eOdqRknK_|0*l9y;z^oj{;&){9P8@0gy`c zTrqNGD_>c11GrDt!!L9ojcg7d={{@Id@MXH@G>`b0V>8Y1Et%8!?vQlFEb#E=hiOE z5Am~IDD&2Ri^g9xBM}T57oS6U`F}zuk`(bC(tWqBKhMyrciQUr#}?GiyhC$&eO;Yy z+4Q`;{#Ko{#9x~as_CwxOLsR3UWvX~lDA2rzjKutV)0H=vhCS)(eO2|Yp&iZ9cR}e z3{@QnKeN{4W#z5OG8QDP!iAC#e9;@@Yh7kazha)AdL(=|EmoTUO5vdAs@M1L#7)!l zCO451JE0TlX*^icUae*{mADZEjuG^x<(R;!0u?97B~&WI8AcE4Gw|y^CL6-tom^dz z(i(mhB4vEN6V5V&JGdugZ2ftI+N ze75ZoSb~C2Q|9y*#~hz|eJ)hl?{J1sbmXfBjXO2Pt`J*vk;&2ZkRk2~Yr2y8M~eun z8rBY-cRHV7By(ArXkGr5>*5#jB_vr7#F8*m>a@IC z$Tq+`sUxPs8#B=}sCKNJs+V(j`dk|*vq_NV=v{%uit&5hS>k5^VXRCnINckjCy~00 zcOM=<7(%BOq(-FPCDXY}rabUfj2l5JA4W3HkLjKD&aS9ISSh^1{uoZx)2$y;u_XFqPJyn(H4a}LY4ZMCg{t0}&JJ#@8T3^Zr(Vyv{@qGs6df8XH zT$=Uq-QE<$IUd&m=l|;a*|GiHyL!+AGF+Q~ffF;1mIySe0gpTl3}6jj7F}t0gpoK2 z;4YCxM{5{(Ps++aLn+o;fiZz?=O5Zdlf$kKjI*yU2PRhd1mM|9^yvZQ8_yPNh0$$7 z2jYm6lZuPv?3K&y_Uuldxls(m8CLYIxtX%qRYB-9x2W(zgklu=CDnvOzqo+kWvkrr zm0#!4NQ}ej!*qG?vtRL)3L_hsLSuuAYqg~I^H9I(5eKnP7~_tY*T+3NRu|B%jg8SS zW{_@Ghj@X*(6%(w&P%=?@1MI;d0PjRB-bZVsbY%?h0Zy|AOc@|Za&cK_})^t8pK&< zGrSCW=k}POK3|euJwsoX_Es~dR=%PXTU>dp$?rdgxhu#|0XbYP9zvhQC%M?}KRg+7 zSi-J&jCQRU3eCnX>NM~iEL}9NN{P1{hd4j|_%68m&96R!|B6ATFYXWr!9f0Z$vq&m z=jl>@ORItZ2_sJR){W&dCw6REGIF_E1B26PX5Zv^LKO#3qdg#8;;d2&-9$0)QmP2> zfZko=`7EZu`!!DsB$j5cxL1zymAb@!O0W6nn9EA%-JELdz|K<i4LU0#N?sg?DBv_=UiRxJeAKss6W1ChtQ=&F6P}*WZ`#2e~WHb69g*;ru zMd&(7dGTGOls}PpZhzcGS`->~UwNikPjC?7Hj#>`OuY^@{m+z5V*RZRaHKRj28m z#MvG&a$7PoPtcVP(%u4eNTNz+*<*+GXSaWWb%*P*9^FXtzaQa`nEU(?qrYud=|)it zmR0rLNsiOkUqehL?ePA8O=|-xhctny3*X^Ck41*Q3YZ-!RZD|c^7k?E*`oy6&_wE2 zZYE#BBo4|5hO+ZliAakT_GV^{{Y6RP77>^2`x+$Dzv{#M6 zN_X(3{?#iVeebnWj>S)oFpe{3vu7w0?}G+){w1rsijeCBBqC0bEFrwyOrra z_itYL>Fl_Qc;u;pOfR!#WjQX_+{-T z&Cpl>!M(p_6cF9CyWJwi>&-D{-ky0M@JGuDH9u$oJ#{D$-SwCISBk$cS;8 literal 8119 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 diff --git a/getting_started/workflow/assets/img/asset_workflow3.png b/getting_started/workflow/assets/img/asset_workflow3.png index e5ff996c87279201263a8dc548d2071198142d11..da0379e7831ac2717636df07cbc628afff1dc41a 100644 GIT binary patch literal 13580 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 EADAsj7ytkO literal 8652 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 Awg3PC From 0918317eee6252226cada5688ef869c7d6c11e76 Mon Sep 17 00:00:00 2001 From: skyace65 Date: Fri, 5 Jun 2020 13:35:15 -0400 Subject: [PATCH 02/39] Fix open TileSet instructions --- tutorials/2d/using_tilemaps.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/2d/using_tilemaps.rst b/tutorials/2d/using_tilemaps.rst index 389dcc810..a786fee7e 100644 --- a/tutorials/2d/using_tilemaps.rst +++ b/tutorials/2d/using_tilemaps.rst @@ -81,8 +81,8 @@ TileSet". .. image:: img/tilemap_add_tileset.png -When you do this, the "TileSet" panel will open at the bottom of the editor -window: +Click on the TileSet property, and the "TileSet" panel will open at the bottom +of the editor window: .. image:: img/tilemap_tool.png From 60196d58e24c72a2826b1e209099b8577fca8d26 Mon Sep 17 00:00:00 2001 From: Matthew Date: Fri, 5 Jun 2020 19:25:43 -0400 Subject: [PATCH 03/39] Fix issue in instancing page (#3647) --- .../step_by_step/img/instancing_physicsmat1.png | Bin 32314 -> 0 bytes getting_started/step_by_step/instancing.rst | 10 ++-------- 2 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 getting_started/step_by_step/img/instancing_physicsmat1.png diff --git a/getting_started/step_by_step/img/instancing_physicsmat1.png b/getting_started/step_by_step/img/instancing_physicsmat1.png deleted file mode 100644 index 05616b4af461bf013b588ac1230fe11798549bdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32314 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 g3NrKyZ|GOVzXt4>Nx5}rAmH&yQc Date: Sat, 6 Jun 2020 18:32:14 +0200 Subject: [PATCH 04/39] Add minor doc improvements --- .../introduction_best_practices.rst | 4 +- .../best_practices/scene_organization.rst | 53 ++++++++++--------- .../best_practices/what_are_godot_classes.rst | 4 +- tutorials/gui/gui_containers.rst | 8 +-- 4 files changed, 35 insertions(+), 34 deletions(-) diff --git a/getting_started/workflow/best_practices/introduction_best_practices.rst b/getting_started/workflow/best_practices/introduction_best_practices.rst index 8d6f41be0..d47265568 100644 --- a/getting_started/workflow/best_practices/introduction_best_practices.rst +++ b/getting_started/workflow/best_practices/introduction_best_practices.rst @@ -18,8 +18,8 @@ each problem in fundamental questions, suggest solutions, analyze the pros and cons of each option, and highlight the best course of action for the problem at hand. You should start by reading :ref:`doc_what_are_godot_classes`. It explains how -Godot's nodes and scenes relate to classes and objects in another -Object-Oriented programming language. It will help you make sense of the rest of the series. +Godot's nodes and scenes relate to classes and objects in other +Object-Oriented programming languages. It will help you make sense of the rest of the series. .. note:: diff --git a/getting_started/workflow/best_practices/scene_organization.rst b/getting_started/workflow/best_practices/scene_organization.rst index 886bcdb38..19aecc5c8 100644 --- a/getting_started/workflow/best_practices/scene_organization.rst +++ b/getting_started/workflow/best_practices/scene_organization.rst @@ -13,12 +13,12 @@ How to build relationships effectively When Godot users begin crafting their own scenes, they often run into the following problem: -They create their first scene and fill it with content before the creeping -sense that they need to split it up into re-usable pieces haunts them. They -save branches of their scene into their own scene. However, they then notice -that the hard references they were able to rely on before are no longer +They create their first scene and fill it with content only to eventually end +up saving branches of their scene into separate scenes as the nagging feeling +that they should split things up starts to accumulate. However, they then +notice that the hard references they were able to rely on before are no longer possible. Re-using the scene in multiple places creates issues because the -node paths do not find their targets. Signal connections established in the +node paths do not find their targets and signal connections established in the editor break. To fix these problems, one must instantiate the sub-scenes without them @@ -30,10 +30,9 @@ One of the biggest things to consider in OOP is maintaining focused, singular-purpose classes with `loose coupling `_ to other parts of the codebase. This keeps the size of objects small (for -maintainability) and improves their reusability so that re-writing completed -logic is unnecessary. +maintainability) and improves their reusability. -These OOP best practices have *several* ramifications for the best practices +These OOP best practices have *several* implications for best practices in scene structure and script usage. **If at all possible, one should design scenes to have no dependencies.** @@ -50,7 +49,7 @@ environment can inadvertently trigger bugs and unexpected behavior. To do this, one must expose data and then rely on a parent context to initialize it: -1. Connect to a signal. Extremely safe, but should use only to "respond" to +1. Connect to a signal. Extremely safe, but should be used only to "respond" to behavior, not start it. Note that signal names are usually past-tense verbs like "entered", "skill_activated", or "item_collected". @@ -148,7 +147,7 @@ initialize it: // Child GetNode(TargetPath); // Use parent-defined NodePath. -These options hide the source of accesses from the child node. This in turn +These options hide the points of access from the child node. This in turn keeps the child **loosely coupled** to its environment. One can re-use it in another context without any extra changes to its API. @@ -234,12 +233,14 @@ in another context without any extra changes to its API. So, why do all this complex switcharoo work? Well, because scenes operate best when they operate alone. If unable to work alone, then working with -others anonymously (with minimal hard dependencies, i.e. loose coupling). -If the inevitable changes made to a class cause it to interact with other -scenes in unforeseen ways, then things break down. A change to one class could -result in damaging effects to other classes. +others anonymously (with minimal hard dependencies, i.e. loose coupling) +is the next best thing. Inevitably, changes may need to be made to a class and +if these changes cause it to interact with other scenes in unforeseen ways, +then things will start to break down. The whole point of all this indirection +is to avoid ending up in a situation where changing one class results in +adversely effecting other classes. -Scripts and scenes, as extensions of engine classes should abide +Scripts and scenes, as extensions of engine classes, should abide by *all* OOP principles. Examples include... - `SOLID `_ @@ -259,7 +260,7 @@ a decent structure to start with. A game should always have a sort of "entry point"; somewhere the developer can definitively track where things begin so that they can follow the logic as it -continues elsewhere. This place also serves as a bird's eye view to all of the +continues elsewhere. This place also serves as a bird's eye view of all of the other data and logic in the program. For traditional applications, this would be the "main" function. In this case, it would be a Main node. @@ -298,7 +299,7 @@ If one has a system that... the "World" as the main game node. Any GUI would need to also be a - singleton, be transitory parts of the "World", or be manually added as a + singleton; be a transitory part of the "World"; or be manually added as a direct child of the root. Otherwise, the GUI nodes would also delete themselves during scene transitions. @@ -328,9 +329,9 @@ own place in the hierarchy as a sibling or some other relation. 2. A group, to easily pull a reference to the desired node (assuming there will only ever be one of the targets). - When should one do this? Well, it's up to them to decide. The dilemma - arises when one must micro-manage when a node must move around the SceneTree - to preserve itself. For example... + When should one do this? Well, this is subjective. The dilemma arises when + one must micro-manage when a node must move around the SceneTree to preserve + itself. For example... - Add a "player" node to a "room". - Need to change rooms, so one must delete the current room. @@ -348,7 +349,7 @@ own place in the hierarchy as a sibling or some other relation. - Instantiate and add the new room. - Re-add the player. - The issue is that the player here is a "special case", one where the + The issue is that the player here is a "special case"; one where the developers must *know* that they need to handle the player this way for the project. As such, the only way to reliably share this information as a team is to *document* it. Keeping implementation details in documentation however @@ -356,7 +357,7 @@ own place in the hierarchy as a sibling or some other relation. the intellectual content of a project unnecessarily. In a more complex game with larger assets, it can be a better idea to simply - keep the player somewhere else in the SceneTree entirely. This involves... + keep the player somewhere else in the SceneTree entirely. This results in: 1. More consistency. 2. No "special cases" that must be documented and maintained somewhere. @@ -384,10 +385,10 @@ own place in the hierarchy as a sibling or some other relation. of game connections and the like. The key to scene organization is to consider the SceneTree in relational terms -rather than spatial terms. Do the nodes need to be dependent on their parent's -existence? If not, then they can thrive all by themselves somewhere else. -If so, then it stands to reason they should be children of that parent (and -likely part of that parent's scene if they aren't already). +rather than spatial terms. Are the nodes dependent on their parent's existance? +If not, then they can thrive all by themselves somewhere else. +If they are dependent, then it stands to reason that they should be children of +that parent (and likely part of that parent's scene if they aren't already). Does this mean nodes themselves are components? Not at all. Godot's node trees form an aggregation relationship, not one of composition. diff --git a/getting_started/workflow/best_practices/what_are_godot_classes.rst b/getting_started/workflow/best_practices/what_are_godot_classes.rst index f79b02f63..7b57e8f3c 100644 --- a/getting_started/workflow/best_practices/what_are_godot_classes.rst +++ b/getting_started/workflow/best_practices/what_are_godot_classes.rst @@ -10,7 +10,7 @@ while scripts can contain `imperative code `_. As a result, many best practices in Godot boil down to applying Object-Oriented -design principles to the scenes, nodes, or script that make up your game. +design principles to the scenes, nodes, or scripts that make up your game. This guide explains how scripts and scenes work in the engine's core, to help you get a sense of how Godot works under the hood, and to help you better @@ -127,7 +127,7 @@ The content of a scene helps to define: - What nodes are available to the script - How they are organized -- How are they initialized +- How they are initialized - What signal connections they have with each other Many Object-Oriented principles which apply to written code *also* apply to diff --git a/tutorials/gui/gui_containers.rst b/tutorials/gui/gui_containers.rst index 419d4a3e4..e443d6259 100644 --- a/tutorials/gui/gui_containers.rst +++ b/tutorials/gui/gui_containers.rst @@ -46,8 +46,8 @@ Size flags are independent for vertical and horizontal sizing and not all contai * **Fill**: Ensures the control *fills* the designated area within the container. No matter if a control *expands* or not (see below), it will only *fill* the designated area when this is toggled on (it is by default). -* **Expand**: Attempts to use as most space as possible in the parent container (in this each axis). - Controls that don't expand will be pushed away by those that do. Between those expanding, the +* **Expand**: Attempts to use as much space as possible in the parent container (in each axis). + Controls that don't expand will be pushed away by those that do. Between expanding controls, the amount of space they take from each other is determined by the *Ratio* (see below). * **Shrink Center** When expanding (and if not filling), try to remain at the center of the expanded area (by default it remains at the left or top). @@ -89,8 +89,8 @@ depending on the theme configuration. .. image:: img/containers_margin.png -Again, keep in mind that the margins are a *Theme* value, so they need to be edited at the -constants overrides section if desired for a single control: +Again, keep in mind that the margins are a *Theme* value, so they need to be edited from the +constants overrides section of each control: .. image:: img/containers_margin_constants.png From 762ad4dc94ba1c6341c68cf9ba1ebdc41b9a4ff5 Mon Sep 17 00:00:00 2001 From: Peter Chaplin Date: Tue, 2 Jun 2020 19:06:17 +0100 Subject: [PATCH 05/39] Add autotile tutorial Modify tutorials > 2D > using tilemaps to include section on autotiles, covering different bitmask modes and scripted binding --- tutorials/2d/using_tilemaps.rst | 123 +++++++++++++++++++++++++++++++- 1 file changed, 120 insertions(+), 3 deletions(-) diff --git a/tutorials/2d/using_tilemaps.rst b/tutorials/2d/using_tilemaps.rst index 389dcc810..dc93d5a95 100644 --- a/tutorials/2d/using_tilemaps.rst +++ b/tutorials/2d/using_tilemaps.rst @@ -1,7 +1,7 @@ .. _doc_using_tilemaps: Using tilemaps -~~~~~~~~~~~~~~ +============== Introduction ------------ @@ -127,8 +127,10 @@ Atlas tiles ----------- Rather than adding individual tiles one at a time, you can define a group of -tiles all at once using an atlas. Click "New Atlas" and drag to select the -entire tile sheet. +tiles all at once using an atlas. This also allows you to randomly generate +tiles from the group. + +Click "New Atlas" and drag to select the entire tile sheet. .. image:: img/tileset_atlas.png @@ -150,6 +152,121 @@ tiles it contains: In addition to saving time when defining the tiles, this can help by grouping similar tiles together when you're working with a large number of tiles. +Random tile priorities +~~~~~~~~~~~~~~~~~~~~~~ + +When drawing with atlas tiles, enabling the "Use priority" option causes tiles +to be selected at random. By default, each tile in the tileset has an equal +likelihood of occurring. You can change the likelihood by setting different +priorities for each tile. For example, a tile with priority 2 is twice as +likely to be selected as a tile with priority 1, and a tile with priority 3 is +50% more likely to be selected than a tile with priority 2. + +Autotiles +--------- + +Autotiles allow you to define a group of tiles, then add rules to control which +tile gets used for drawing based on the content of adjacent cells. + +Click "New Autotile" and drag to select the tiles you wish to use. You can add +collisions, occlusion, navigation shapes, tile priorties, and select an icon +tile in the same manner as for atlas tiles. + +Tile selection is controlled by bitmasks. Bitmasks can be added by clicking +"Bitmask", then clicking parts of the tiles to add or remove bits in the mask. +Left-clicking an area of the tile adds a bit, right-click removes "off", +and shift-left-click sets an "ignore" bit. + +Whenever Godot updates a cell using an autotile, it first creates a pattern +based on which adjacent cells are already set. Then, it searches the autotile +for a single tile with a bitmask matching the created pattern. If no matching +bitmask is found, the "icon" tile will be used instead. If more than one +matching bitmask is found, one of them will be selected randomly, using the +tile priorities. + +The rules for matching a bitmask to a pattern depend on the tileset's autotile +bitmask mode. This can be set in the "Inspector" tab, under the "Selected Tile" +heading. Allowed values are "2x2", "3x3 (minimal)", and "3x3". + +All "on" and "off" bits must be satisfied for a bitmask to match, but "ignore" +bits are ignored. + +2x2 +~~~ + +In 2x2 mode, each bitmask contains four bits, one for each corner. + +Where a bit is "on", all cells connected to that corner must be filled using +the same autotile, in order for the bitmask to match. +For example, if the top-left bit is set, the cell directly above, +directly left, and diagonally above-left must be filled. + +Where a bit is "off", at least one cell connected to that corner must not be +set using the same autotile. + +At least one bit must be set for the tile to be used, so a total of 15 tiles +would be needed to provide exactly one tile for each arrangement that this mode +can test for. + +2x2 mode can only match cells that are part of a 2-by-2 block - cells with no +neighbors and lines only one cell wide are not supported. + +3x3 (minimal) +~~~~~~~~~~~~~ + +In 3x3 (minimal) mode, each bitmask contains 9 bits (4 corners, 4 edges, +1 center). + +The 4 corner bits work the same as in 2x2 mode. + +When an edge bit is "on", the cell which shares that edge must be filled. +When an edge bit is "off", the cell which shares that edge must be empty. + +The center bit should be "on" for any tile you wish to use. + +Note that in this mode, it makes no sense for a corner bit to be "on" when +either edge bit adjacent to it is not "on". + +A total of 47 tiles would be needed to provide exactly one bitmask for each +arrangement that this mode can test for. + + +3x3 +~~~ + +In 3x3 mode, each bitmaks contains 9 bits (4 corners, 4 edges, 1 center) + +Each bit checks a single adjacent cell. Corner bits only check diagonally +adjacent cells. The center bit should be "on" for any tile you wish to use. + +A total of 256 tiles would be needed to provide exactly one bitmask for each +arrangement that this mode can test for. + + +Disabling autotile +~~~~~~~~~~~~~~~~~~ + +When using an autotile, it is possible to turn of the autotile behaviour and +select tiles manually, by clicking "Disable Autotile" at the top of the tile +selection window. + +Autotile binding +~~~~~~~~~~~~~~~~ + +By default, autotile only checks for adjacent cells filled using the same +autotile. This behaviour can be overridden in order to have autotiles bind to +each other, or even bind to empty cells. At present, this can only be done +through scripting. You will need to add a script to your tileset, and define +a function named "_is_tile_bound(drawn_id, neighbor_id)". This function will +be called for each adjacent cell that does not contain the same autotile, and +should return true if you want the drawn cell to "bind" to the neighbor cell. +You can find the id of an autotile using "find_tile_by_name(name)", empty cells +are given an id of -1. + +Note that to use this in the editor, the script should start with a "tool" +declaration, and you may need to close and reload the scene for these changes +to take effect. + Tips and tricks --------------- From eb5d5cc90f69fe303914a01a869d34caa4276dd8 Mon Sep 17 00:00:00 2001 From: skyace65 Date: Sat, 6 Jun 2020 20:58:16 -0400 Subject: [PATCH 06/39] Clarify GDScript match --- getting_started/scripting/gdscript/gdscript_basics.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/getting_started/scripting/gdscript/gdscript_basics.rst b/getting_started/scripting/gdscript/gdscript_basics.rst index dd889ad08..273af5b1e 100644 --- a/getting_started/scripting/gdscript/gdscript_basics.rst +++ b/getting_started/scripting/gdscript/gdscript_basics.rst @@ -863,7 +863,7 @@ Basic syntax:: The patterns are matched from top to bottom. If a pattern matches, the first corresponding block will be executed. After that, the execution continues below the ``match`` statement. -If you want to have a fallthrough, you can use ``continue`` to stop execution in the current block and check for an additional match in the patterns below it. +You can use ``continue`` to stop execution in the current block and check for an additional match in the patterns below it. There are 6 pattern types: From 08e298c08218a45e281d1520b8427dfb93c15bf4 Mon Sep 17 00:00:00 2001 From: Maganty Rushyendra Date: Mon, 8 Jun 2020 09:28:44 +0800 Subject: [PATCH 07/39] Replace register_method with bind_method ClassDB exposes `bind_method` in order to register functions, and not `register_method` anymore. --- development/cpp/object_class.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/development/cpp/object_class.rst b/development/cpp/object_class.rst index 46c5f8a31..fceaec5e2 100644 --- a/development/cpp/object_class.rst +++ b/development/cpp/object_class.rst @@ -66,13 +66,13 @@ Registering functions is one: .. code-block:: cpp - ClassDB::register_method(D_METHOD("methodname", "arg1name", "arg2name"), &MyCustomMethod); + ClassDB::bind_method(D_METHOD("methodname", "arg1name", "arg2name"), &MyCustomMethod); Default values for arguments can be passed in reverse order: .. code-block:: cpp - ClassDB::register_method(D_METHOD("methodname", "arg1name", "arg2name"), &MyCustomType::method, DEFVAL(-1)); // default value for arg2name + ClassDB::bind_method(D_METHOD("methodname", "arg1name", "arg2name"), &MyCustomType::method, DEFVAL(-1)); // default value for arg2name ``D_METHOD`` is a macro that converts "methodname" to a StringName for more efficiency. Argument names are used for introspection, but when @@ -223,7 +223,7 @@ languages). Connecting to them is rather easy: obj->connect("enter_tree", this, "_node_entered_tree") The method ``_node_entered_tree`` must be registered to the class using -``ClassDB::register_method`` (explained before). +``ClassDB::bind_method`` (explained before). Adding signals to a class is done in ``_bind_methods``, using the ``ADD_SIGNAL`` macro, for example: From e0554d9c0a173466e94c814beeee51f99d70fecd Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 8 Jun 2020 10:02:08 +0200 Subject: [PATCH 08/39] Update the editor help shortcut for recent Godot versions This closes #3656. --- getting_started/step_by_step/intro_to_the_editor_interface.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/getting_started/step_by_step/intro_to_the_editor_interface.rst b/getting_started/step_by_step/intro_to_the_editor_interface.rst index 88e589dd5..1f61019bf 100644 --- a/getting_started/step_by_step/intro_to_the_editor_interface.rst +++ b/getting_started/step_by_step/intro_to_the_editor_interface.rst @@ -135,7 +135,7 @@ related to the 3D viewport. The **Script** workspace is a complete code editor with a debugger, rich auto-completion, and built-in code reference. Press :kbd:`F3` (or :kbd:`Alt + 3` on macOS) -to access it, and :kbd:`F4` to search the reference. +to access it, and :kbd:`Shift + F1` to search the reference. .. image:: img/editor_ui_intro_editor_06_script_workspace_expanded.png From 251b86949c1a95d93eea7f0dcd475d9d6f0541a6 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 8 Jun 2020 11:22:55 +0200 Subject: [PATCH 09/39] Document the lack of dynamic loops in WebGL 1.0 I documented it in both places where it could be relevant to ensure people don't miss it. This closes #2980. --- getting_started/workflow/export/exporting_for_web.rst | 6 ++++++ tutorials/shading/shading_reference/shading_language.rst | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/getting_started/workflow/export/exporting_for_web.rst b/getting_started/workflow/export/exporting_for_web.rst index 2411c678b..7879abe78 100644 --- a/getting_started/workflow/export/exporting_for_web.rst +++ b/getting_started/workflow/export/exporting_for_web.rst @@ -108,6 +108,12 @@ The default HTML page does not display the boot splash while loading. However, the image is exported as a PNG file, so :ref:`custom HTML pages ` can display it. +Shader language limitations +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +When exporting a GLES2 project to HTML5, WebGL 1.0 will be used. WebGL 1.0 +doesn't support dynamic loops, so shaders using those won't work there. + Unimplemented functionality ~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tutorials/shading/shading_reference/shading_language.rst b/tutorials/shading/shading_reference/shading_language.rst index 3d54a3929..a7c9bab2e 100644 --- a/tutorials/shading/shading_reference/shading_language.rst +++ b/tutorials/shading/shading_reference/shading_language.rst @@ -437,6 +437,11 @@ Godot Shading language supports the most common types of flow control: Keep in mind that, in modern GPUs, an infinite loop can exist and can freeze your application (including editor). Godot can't protect you from this, so be careful not to make this mistake! +.. warning:: + + When exporting a GLES2 project to HTML5, WebGL 1.0 will be used. WebGL 1.0 + doesn't support dynamic loops, so shaders using those won't work there. + Discarding ---------- From e629ab5baa67310fb131300cd6825ddc9ca530a8 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 8 Jun 2020 11:15:53 +0200 Subject: [PATCH 10/39] Update and clarify C# gotchas for Godot 3.2.2 This closes #3583. --- .../scripting/c_sharp/c_sharp_basics.rst | 34 +++---------------- 1 file changed, 5 insertions(+), 29 deletions(-) diff --git a/getting_started/scripting/c_sharp/c_sharp_basics.rst b/getting_started/scripting/c_sharp/c_sharp_basics.rst index cbf910bff..8314e2ad1 100644 --- a/getting_started/scripting/c_sharp/c_sharp_basics.rst +++ b/getting_started/scripting/c_sharp/c_sharp_basics.rst @@ -141,29 +141,6 @@ version control system. ``.mono`` can be safely added to the ignore list of your When troubleshooting, it can sometimes help to delete the ``.mono`` folder and let it regenerate. -Note that currently, there are some issues where Godot and the C# project -don't stay in sync; if you delete, rename or move a C# script, the change -may not be reflected in the C# project file. -In cases like this, you will have to edit the C# project file manually. - -For example, if you created a script (e.g. ``Test.cs``) and delete it in Godot, -compilation will fail because the missing file is still expected to be there -by the C# project file. For now, you can simply open up the ``.csproj`` file -and look for the ``ItemGroup``, there should be a line included -like the following: - -.. code-block:: xml - :emphasize-lines: 2 - - - - - - -Simply remove that line and your project should build correctly again. -Same for renaming and moving things, simply rename and move them -in the project file if needed. - Example ------- @@ -224,15 +201,9 @@ you should be aware of when diving into C# in Godot, but if in doubt, also take a look over the official `issue tracker for Mono issues `_. -- As explained above, the C# project isn't always kept in sync automatically - when things are deleted, renamed or moved in Godot - (`#12917 `_). - Writing editor plugins is possible, but it is currently quite convoluted. - State is currently not saved and restored when hot-reloading, with the exception of exported variables. -- Exporting Mono projects is supported for desktop platforms - (Linux, Windows and macOS), Android, HTML5, and iOS. UWP is not currently supported. - (`#20271 `_). - Attached C# scripts should refer to a class that has a class name that matches the file name. - There are some methods such as ``Get()``/``Set()``, ``Call()``/``CallDeferred()`` @@ -242,6 +213,11 @@ take a look over the official the API is expecting the original ``snake_case`` version ``add_child``. However, you can use any custom properties or methods without this limitation. + +As of Godot 3.2.2, exporting Mono projects is supported for desktop platforms +(Linux, Windows and macOS), Android, HTML5, and iOS. The only platform not +supported yet is UWP. + Performance of C# in Godot -------------------------- From 18cd7466b990020b7c2c6345d371d153af74860b Mon Sep 17 00:00:00 2001 From: Matthew Date: Mon, 8 Jun 2020 10:21:41 -0400 Subject: [PATCH 11/39] Update Importing 3D scenes to add information about exporters (#3657) --- getting_started/workflow/assets/importing_scenes.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/getting_started/workflow/assets/importing_scenes.rst b/getting_started/workflow/assets/importing_scenes.rst index 75ec2b5da..a8391ca47 100644 --- a/getting_started/workflow/assets/importing_scenes.rst +++ b/getting_started/workflow/assets/importing_scenes.rst @@ -61,7 +61,8 @@ Blender has built-in COLLADA support, but it does not work properly for the need and should not be used as is. Godot provides a `Blender plugin `_ -that will correctly export COLLADA scenes for use in Godot. +that will correctly export COLLADA scenes for use in Godot. It does not work in Blender 2.8 or +newer, but there are plans to update it in the future. Exporting ESCN files from Blender ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -69,7 +70,8 @@ Exporting ESCN files from Blender The most powerful one, called `godot-blender-exporter `__. It uses a .escn file, which is kind of another name for a .tscn file (Godot scene file); -it keeps as much information as possible from a Blender scene. +it keeps as much information as possible from a Blender scene. However, it is considered +experimental. The ESCN exporter has a detailed `document `__ describing its functionality and usage. From 7ee50012130b32384747bd692f23c5e5e348d0a1 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 8 Jun 2020 15:45:18 +0200 Subject: [PATCH 12/39] Add a page about common methods in Godot's C++ codebase This is geared towards beginner engine contributors, but it could also be useful to those writing custom C++ modules. --- .../cpp/common_engine_methods_and_macros.rst | 245 ++++++++++++++++++ development/cpp/index.rst | 1 + 2 files changed, 246 insertions(+) create mode 100644 development/cpp/common_engine_methods_and_macros.rst diff --git a/development/cpp/common_engine_methods_and_macros.rst b/development/cpp/common_engine_methods_and_macros.rst new file mode 100644 index 000000000..f1dae6d0b --- /dev/null +++ b/development/cpp/common_engine_methods_and_macros.rst @@ -0,0 +1,245 @@ +.. _doc_common_engine_methods_and_macros: + +Common engine methods and macros +================================ + +Godot's C++ codebase makes use of dozens of custom methods and macros which are +used in almost every file. This page is geared towards beginner contributors, +but it can also be useful for those writing custom C++ modules. + +Print text +---------- + +.. code-block:: cpp + + // Prints a message to standard output. + print_line("Message"); + + // Prints a message to standard output, but only when the engine + // is started with the `--verbose` command line argument. + print_verbose("Message"); + + // Prints a formatted error or warning message with a trace. + ERR_PRINT("Message"); + WARN_PRINT("Message"); + + // Prints an error or warning message only once per session. + // This can be used to avoid spamming the console output. + ERR_PRINT_ONCE("Message"); + WARN_PRINT_ONCE("Message"); + +If you need to add placeholders in your messages, use format strings as +described below. + +Format a string +--------------- + +The ``vformat()`` function returns a formatted :ref:`class_String`. It behaves +in a way similar to C's ``sprintf()``: + +.. code-block:: cpp + + vformat("My name is %s.", "Godette"); + vformat("%d bugs on the wall!", 1234); + vformat("Pi is approximately %f.", 3.1416); + + // Converts the resulting String into a `const char *`. + // You may need to do this if passing the result as an argument + // to a method that expects a `const char *` instead of a String. + vformat("My name is %s.", "Godette").c_str(); + +In most cases, try to use ``vformat()`` instead of string concatenation as it +makes for more readable code. + +Convert an integer or float to a string +--------------------------------------- + +This is mainly useful when printing numbers directly. + +.. code-block:: cpp + + // Prints "42" using integer-to-string conversion. + print_line(itos(42)); + + // Prints "123.45" using real-to-string conversion. + print_line(rtos(123.45)); + +Internationalize a string +------------------------- + +There are two types of internationalization in Godot's codebase: + +- ``TTR()``: **Editor ("tools") translations** will only be processed in the + editor. If an user uses the same text in one of their projects, it won't be + translated if they provide a translation for it. When contributing to the + engine, this is generally the macro you should use for localizable strings. +- ``RTR()``: **Run-time translations** will be automatically localized in + projects if they provide a translation for the given string. This kind of + translation shouldn't be used in editor-only code. + +.. code-block:: cpp + + // Returns the translated string that matches the user's locale settings. + // Translations are located in `editor/translations`. + // The localization template is generated automatically; don't modify it. + TTR("Exit the editor?"); + +To insert placeholders in localizable strings, wrap the localization macro in a +``vformat()`` call as follows: + +.. code-block:: cpp + + vformat(TTR("Couldn't open \"%s\" for reading.")); + +.. note:: + + When using ``vformat()`` and a translation macro together, always wrap the + translation macro in ``vformat()``, not the other way around. Otherwise, the + string will never match the translation as it will have the placeholder + already replaced when it's passed to TranslationServer. + +Clamp a value +------------- + +Godot has provides macros for clamping a value with a lower bound (``MAX``), an +upper bound (``MIN``) or both (``CLAMP``): + +.. code-block:: cpp + + int a = 3; + int b = 5; + + MAX(b, 6); // 6 + MIN(2, a); // 2 + CLAMP(a, 10, 30); // 10 + +This works with any type that can be compared to other values (like ``int`` and +``float``). + +Microbenchmarking +----------------- + +If you want to benchmark a piece of code but don't know how to use a profiler, +use this snippet: + +.. code-block:: cpp + + uint64_t begin = OS::get_singleton()->get_ticks_usec(); + + // Your code here... + + uint64_t end = OS::get_singleton()->get_ticks_usec(); + print_line(vformat("Snippet took %d microseconds", end - begin)); + +This will print the time spent between the ``begin`` declaration and the ``end`` +declaration. + +.. note:: + + You may have to ``#include "core/os/os.h"`` if it's not present already. + + When opening a pull request, make sure to remove this snippet as well as the + include if it wasn't there previously. + +Get project/editor settings +--------------------------- + +There are four macros available for this: + +.. code-block:: cpp + + // Returns the specified project setting's value, + // defaulting to `false` if it doesn't exist. + GLOBAL_DEF("section/subsection/value", false); + + // Returns the specified editor setting's value, + // defaulting to "Untitled" if it doesn't exist. + EDITOR_DEF("section/subsection/value", "Untitled"); + +If a default value has been specified elsewhere, don't specify it again to avoid +repetition: + +.. code-block:: cpp + + // Returns the value of the project setting. + GLOBAL_GET("section/subsection/value"); + // Returns the value of the editor setting. + EDITOR_GET("section/subsection/value"); + +It's recommended to use ``GLOBAL_DEF``/``EDITOR_DEF`` only once per setting and +use ``GLOBAL_GET``/``EDITOR_GET`` in all other places where it's referenced. + +Error macros +------------ + +Godot features many error macros to make error reporting more convenient. + +.. warning:: + + Conditions in error macros work in the **opposite** way of GDScript's + built-in ``assert()`` function. An error is reached if the condition inside + evaluates to ``true``, not ``false``. + +.. note:: + + Only variants with custom messages are documented here, as these should + always be used in new contributions. Make sure the custom message provided + includes enough information for people to diagnose the issue, even if they + don't know C++. In case a method was passed invalid arguments, you can print + the invalid value in question to ease debugging. + + For internal error checking where displaying a human-readable message isn't + necessary, remove ``_MSG`` at the end of the macro name and don't supply a + message argument. + + Also, always try to return processable data so the engine can keep running + well. + +.. code-block:: cpp + + // Conditionally prints an error message and returns from the function. + // Use this in methods which don't return a value. + ERR_FAIL_COND_MSG(!mesh.is_valid(), vformat("Couldn't load mesh at: %s", path)); + + // Conditionally prints an error message and returns `0` from the function. + // Use this in methods which must return a value. + ERR_FAIL_COND_V_MSG(rect.x < 0 || rect.y < 0, 0, + "Couldn't calculate the rectangle's area."); + + // Prints an error message if `index` is < 0 or >= `SomeEnum::QUALITY_MAX`, + // then returns from the function. + ERR_FAIL_INDEX_MSG(index, SomeEnum::QUALITY_MAX, + vformat("Invalid quality: %d. See SomeEnum for allowed values.", index)); + + // Prints an error message if `index` is < 0 >= `some_array.size()`, + // then returns `-1` from the function. + ERR_FAIL_INDEX_V_MSG(index, some_array.size(), -1, + vformat("Item %d is out of bounds.", index)); + + // Unconditionally prints an error message and returns from the function. + // Only use this if you need to perform complex error checking. + if (!complex_error_checking_routine()) { + ERR_FAIL_MSG("Couldn't reload the filesystem cache."); + } + + // Unconditionally prints an error message and returns `false` from the function. + // Only use this if you need to perform complex error checking. + if (!complex_error_checking_routine()) { + ERR_FAIL_V_MSG(false, "Couldn't parse the input arguments."); + } + + // Crashes the engine. This should generally never be used + // except for testing crash handling code. Godot's philosophy + // is to never crash, both in the editor and in exported projects. + CRASH_NOW_MSG("Can't predict the future! Aborting."); + + +.. seealso:: + + See `core/error_macros.h `__ + in Godot's codebase for more information about each error macro. + + Some functions return an error code (materialized by a return type of + ``Error``). This value can be returned directly from an error macro. + See the list of available error codes in + `core/error_list.h `__. diff --git a/development/cpp/index.rst b/development/cpp/index.rst index deb3276f6..301fd0aa7 100644 --- a/development/cpp/index.rst +++ b/development/cpp/index.rst @@ -7,6 +7,7 @@ Engine development introduction_to_godot_development configuring_an_ide/index + common_engine_methods_and_macros core_types variant_class object_class From 9bf6080991ca04bc081833664d9cfbf08f76a355 Mon Sep 17 00:00:00 2001 From: Matthew Date: Tue, 9 Jun 2020 08:42:40 -0400 Subject: [PATCH 13/39] Update Exporting Projects page for Godot 3.2 (#3654) --- .../workflow/export/exporting_projects.rst | 26 +++++------------- .../workflow/export/img/export.png | Bin 4100 -> 6326 bytes .../workflow/export/img/export_dialog.png | Bin 7853 -> 6324 bytes .../workflow/export/img/export_error.png | Bin 6425 -> 10148 bytes .../workflow/export/img/expres.png | Bin 7043 -> 8818 bytes .../workflow/export/img/expselected.png | Bin 47218 -> 20318 bytes .../workflow/export/img/exptemp.png | Bin 3678 -> 6230 bytes 7 files changed, 7 insertions(+), 19 deletions(-) diff --git a/getting_started/workflow/export/exporting_projects.rst b/getting_started/workflow/export/exporting_projects.rst index 445735f51..9836c927b 100644 --- a/getting_started/workflow/export/exporting_projects.rst +++ b/getting_started/workflow/export/exporting_projects.rst @@ -107,28 +107,16 @@ Export mode When exporting, Godot makes a list of all the files to export and then creates the package. There are 3 different modes for exporting: -- Export every single file in the project -- Export only resources (+ custom filter), this is the default. -- Export only selected resources (+ custom filter) +- Export all resources in the project +- Export selected scenes (and dependencies) +- Export selected resources (and dependencies) .. image:: img/expres.png -- **Export every single file** - This mode exports every single file in - the project. This is good to test if something is being forgotten, - but developers often have a lot of unrelated stuff around in the project - directory, which makes it a bad idea. - -- **Export only resources** - Only resources are exported. For most - projects, this is enough. However many developers like to use custom - datafiles in their games. To compensate for this, filters can be - added for extra extensions (for instance, ``*.txt,*.csv``). - -- **Export only selected resources** - Only select resources from a - list are exported. This is probably overkill for most projects, but - in some cases it is justified (usually huge projects). This mode - offers total control of what is exported. Individual resources can be - selected and dependency detection is performed to ensure that - everything needed is added. +**Export all resources in the project** will export every resource in the +project. **Export selected scenes** and **Export selected resources** gives +you a list of the scenes or resources in the project, and you have to +select every scene or resource you want to export. .. image:: img/expselected.png diff --git a/getting_started/workflow/export/img/export.png b/getting_started/workflow/export/img/export.png index 399ad32966cca77bf69c1141f214699799da0076..00bb18523bd0b007a02b5e4f9969824299c264ae 100644 GIT binary patch literal 6326 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 M6g1^)WM7B>AMhed9smFU literal 4100 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 A*Z=?k diff --git a/getting_started/workflow/export/img/export_dialog.png b/getting_started/workflow/export/img/export_dialog.png index e4a84ca975ccce87139e2068587e2cdbc12433fb..ac11129114d79fa4ef21c8f66682fc28a860199b 100644 GIT binary patch literal 6324 zcmc&(2UJtp*2clXC<5^pM5U=HD2|9qClINT7J32%5<)K~1nDK95M}5N7%8EMQF;}r zL875amnt0*q)Q1P5K11-y#LL-HRYdqYyS1ty6fI`@45T?&N+LZZ|`$&m_8K3apd$7 z78Vu`&0A`QEG(=97M5>10j&E^B%h^h?OzT$DC;V-uoTCz@1Vckzdzt^2vK1vXy>2Z zf15>L$5{P_g5H@6*L?6{J^^9pFUdG2&$PC8i+rabE(JLya1m|qp{a*Npj6Y&E<_rr)fhPL;^A15Sd+`AvEV`K-na8$izqGO0wRM9s@-qzGZscXU2 zG+}Y^Pfd}oj##{>-}k`}V#t|A)irghS{6wunTDp0Q9q=lr02*e>7ng#My9qPWjzb4 z+iKc~2jP#^bu3l2EFUG1GqQ`zDqmMq>n*Ku4!3;~Xjdb+E%i;Kt|1C$flqQIKX)Q-s_d}!J5Q+mf%Nf=Ntj&c?^%`XPtR_?2%FD-7HVJE8pA!gj)!H z{~^l9ppGnD5Vs|Jj@1znrJJc%&mX^27MQ=)KtCI zLE5UW_C<|dyQcQTdCk}#kFLfc+KUCufXe*S8AiNpcTJy~8{ZDXQv+?bK6Y`3Ak0tA zl!84Znr!f&;(i>pU}kBL;TED@{meJ`B2ly+c*4;#$G`6}k+_k!Xl=P z8Dszw859oO%|6A`qCt2Aqk@Ch5(LrKF`Ik7e511)&==i1sLT0hc-rU85JT?35cSBS zxhEAb=e*tO`&kMC)+$RriqgU~__>mJ;NH5x=&*^d?GyFF+S=abT}O=2!zI(-u|;eo zFH;O8bL4BD$OlRuknzL6Gy=_6wo9$7vqCI*WAqw6Ud#7WJI)_{V$CW2IPDzdBwlV9 z2`ApAD1{5gOzch9t$esRC(y`B>yK!15+;0$DU$d1)TsB9J*{rTN*hgFrP>)tN=Aoz zM@_JkXOd)Vz>y<-%BJtw;^v?35B#x_X)7QN0H8`rDpx?b1q2#PmZB$IuKUwoNR;vI z!%6t-X0$v>E#*ETOk03(m(&L0Ja#At(d(B}(!wWpa|9zAtNGdw7e=23DxHSs6`n>v z=Rva17dCk$_I8J^tNTGuE-5fYR}cpV@~DS!!V_k0cXkGxVRt+|^qKrL_(vc8Ei%mf zz!&pf&rb0|GhX$GWto+(>8Ckeo5St?b*@TMerqJw+7JrW(x4df{$i*^Qjx<}JOkm> z)req~)dXq*wSx73iiLkaV+<7TKkcA0ClnlBq&~~fe)+lKI7zj_D29ur{~^zI7^Ymd z#${(}kN=}@sJVfV1#^=a6O8LVA`^ovr<3DIio2>3^-;@V#h-)ZX4czU502YcO{B6Hkuv_Er?@m5r0`sU}vi9u)#FDeb0jQneY=erhENx@&gJudScU` z!)8#;PS^o%!H0!_ir1!(7dQ_&T1Nl_mk*C0;*VPVLOvDKBfKDyVZU~KHDu@gXhFY3 zb?+Rdfb__pmAnF`3-ZX*giu06Bwjgmn#`^5O36|QhYOgGx)L8?%@ZfazqfXS$mvxiJbQJ@aVd7a#ehpTr|df{rF zrPJkYdI4&Luv$jphJxP7RpUL}+Pe?=lEXsB%EO;_^L`q;$s7ezmnZ9;ooK}o0a51M>$$S6uo$87V9H*qa{okrF8qCD zQ_T;m6PyN;73Y|2IYq}tuQ{nLo})Q@qu%xDx)IuLAf z9zZVKwf)jBh#_wa4Y<}36y3ea?3{iz+O-Lz-6(0}3*48ZV;&RBP|KuAKOOAH9Mx5n z5EpHRmXx+27!_W4QX*hY1K{rZ!9>YMOpuU5t#X`91&1$g;nnMh1nzi~rwei|`y?_p zB=_DYk}{FsvkklLbp+vEO^KCZlU260?=ygbR)_}@RaZHu3CEqq9=DC2MA!1o%w??w zhLVL|3PnDJ(9`rm))>vUyUQy`4mN*9Easo$`O|_CW9*r!o7Pe`F7cq3)DsLliI4P};Jw@_ z^(?)Hv^V9Ns=xKpMZnp8gnh;=J#iW=ZNNtbI43N;An!W5d_`&>lOYS_Oa*^fY!TTf zOX5INCx@gAJa#(KAJ@Jp_bcv(3I#!X9If%p(b_}aoUGGpX}&uSbH`w>x+vc7)46YE zVSd0IHBAfAr^HGusb<-!?e=a^!2vuY&78?B4J4{F>npWBV`D z|Gj8`f&Nb{)c+dVPdf3Z=zk|Xe(kpZ0@^P{?|12egU`My-S24S@0$Id0U-VJiLbKz zPxbum#q%G|&i^r3Dp8h}3{*>4f-idJh zZ^iIS|NO~009OJ`2m{y)KbJO$p3E|IJ!SISH5Zu>B|iFYGR*l zWUP7ZnovGR;pQK6eywzVEO-9x#O`Z^E!O_Rt^(Mv`$M9GC8(E{2Cw&E+=nKJX>GcT zWAupo_i&fvL9L_nF?i{~&F9mj%u{V4MV_R0!)>P+4Nlp^3+~z(pPeB@926aS+M(xfNza$SEoTMI z`)oEH7>t5=D2(?Pbqt6qFh>PYpS^CP&kR>x=x7aWkSVF%N~Fa|tXG5`_qHVYepJ8m zr5#L81TGRQPr)n2FEY$>Y#D9tdKg}|6Jtu5^aobCwp%Sk)!30wT=Wt>WTM|z54v)C z%%g>FJ4e4XA4~EiPS8qd+LOqfE#MxuwrXeGam4#XZ_ToXSnt%_pm!gE!h{>G=3Y>^ zPFpL!`W%%~;aycAN&*!{GiO+7(NB z>q6rw44h25v;!b>Qdgf11yc-4HmIx39($+S!X(y9C4NPm}s=&d(C;qay?oVATp>BlDSqwE2v#>!59|B-jQ~nl z##h5V#K9_) z#<=Mv=AM(_w>(?LMp(bv8vt+(hff{rBZ`8Xl!JV;0&ZP5ESLOl)M=$kU^ThOC=)7r zKMa235c*2{kuj(&2=CDHsDp zOWInUehYMdAKp*@?bzZ z+N$|sbE`?h1!7puV$&N(MH(aCS&7gx(d0`A`aVv*<^w!isKQNqgML(=|SGLVT-Wo4>MbJlrrYQN9$kbvZpd z<;X$w?zm&l$fMZ$L_A8PJ(i#5rF(2I&)*v3W>?#UobSt?b&q3LC@+U{YPi0wv0xil zZHvP7caiCUP{}hoQ3#`AkzVmY8(+u%=*ZS{#nxA~3(FJ{;a%s%V z)T@BCYW*-JEl3AcaTkakh@H0YI4YAm`ym=`FZfpQskEQQ>NyJ;@2!$?+5GeA9@g_c zMXiEYB5jYQZlba?N(wDXWx++)mn}h}ayRjtJyoEuQ_{eGqXqW<6A)P=DR*0t`My;p zCNDSFva~ixZKdnjEaK|iBW&kI=O=lLIc^H9G+vP$(hIxHt72t-s8^zXP~} zpl1L`tsecZD8<=6-1g)(nLuW9>6U}!JcK(Gw0vi-wYercw$h<6VRR~^$Ohrr9o`+w ze&ZCOTMK3}dJw&VNZoCSC1qS~KiZR@^!T**+}Uj7vF6Y?u1haEnqL{Oo&`}dJlY?| z`*Y+{C06Mb;5OM+u1xWz?e`qnJxLrFCa_><$X-!RN4-lNhnI82ai#Ywv6FMtJsrs5 zm1P89*+3j8btZE1OAM+5G}{z^WV)7d#e%-S<4$#&L-Tr9+Zy-tD9NonHR_v6>&z4C zE7vZ_)VXYCaeb1PI1qCY>My^2Or32!oKH+tM$zxHl5hJX1h)O0PKun}aI-CHOaDtP zBlHD;51DfcoCn^9N3itGeNLz+RL7`@};VIiYtNQBFI;XjzS^W`RvlHcSkz8 zN+&Cs(cBA#`NWq)_SEdY$>%$Zjt7K?pF184Ot_%OtmN8HA^nlsdqn66_G>mFxixLf ze%X>F08gA$VS>|{#KZr}Gq~;B&3l`L;62JNkTF61`Qz1*BIY4zK#Q6k%xV9x0}G3$ LI#jJd#VYt8Y^{Gz literal 7853 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 AOaK4? diff --git a/getting_started/workflow/export/img/export_error.png b/getting_started/workflow/export/img/export_error.png index b6c8d04926d6e4cfc6d57d2aa97ad2935e4afe1b..c50d82799cf63b8b7986d43e6a872196f0570d9d 100644 GIT binary patch literal 10148 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 Nz+_cq-a<@6{~uJmoKFA% literal 6425 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 literal 47218 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 diff --git a/getting_started/workflow/export/img/exptemp.png b/getting_started/workflow/export/img/exptemp.png index 3e817350dee7a464bc5ec972f27fa584b4b34fb2..eb9a49079c9d28828d692558b7f300af263aeb6a 100644 GIT binary patch literal 6230 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 TtAF)l07q3xOR-$uD*S%{Y%tZl literal 3678 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 From 953b86a591021943c326f3d7261750e27b383971 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 9 Jun 2020 22:30:48 +0200 Subject: [PATCH 14/39] Add an Editor style guide page This page describes the writing style used throughout the Godot editor. It complements the already-established Docs writing guidelines. --- development/editor/editor_style_guide.rst | 98 +++++++++++++++++++++++ development/editor/index.rst | 1 + 2 files changed, 99 insertions(+) create mode 100644 development/editor/editor_style_guide.rst diff --git a/development/editor/editor_style_guide.rst b/development/editor/editor_style_guide.rst new file mode 100644 index 000000000..68be1ea40 --- /dev/null +++ b/development/editor/editor_style_guide.rst @@ -0,0 +1,98 @@ +.. _doc_editor_style_guide: + +Editor style guide +================== + +Introduction +------------ + +Thanks for your interest in contributing to the Godot editor! + +This page describes the grammar and writing style used throughout the Godot +editor. Following this style guide will help your contribution get merged faster +since there will be fewer review steps required. + +Writing style +------------- + +- **Write messages (errors, warnings, ...) as full sentences.** They should start + with an uppercase letter and end with a period. +- **Try to keep sentences short.** This makes it more likely that their translations + will be short as well, which is a good thing to avoid UI bugs. +- **Use contractions.** For example, use "isn't" instead of "is not". An exception + to this rule can be made when you specifically want to emphasize one of the + contraction's words. +- **Use double quotes in messages** (``""``) instead of simple quotes (``''``). + Double quotes should be used to quote user input, file paths and possibly + other things depending on the context. + +.. seealso:: + + Try to follow the :ref:`doc_docs_writing_guidelines` in addition to the + guidelines outlined above. + +Button and menu texts +--------------------- + +Capitalize text in buttons and menu actions: + +- **Good:** *Open Editor Data Folder* +- **Bad:** *Open editor data folder* + +If a menu action opens a modal dialog, suffix it with an ellipsis (``...``). + +- **Good:** *Editor Settings...* +- **Bad:** *Editor Settings* + +Inspector sections +------------------ + +In general, don't create sections that contain less than 3 items. Sections that +contain few items make it difficult to navigate the inspector, while missing the +benefits of using sections such as folding. + +There are some valid exceptions for this, such as material features in +:ref:`class_StandardMaterial3D`. + +This advice also applies to the Project Settings and Editor Settings. + +Inspector performance hints +--------------------------- + +Enum properties that noticeably impact performance should have a performance +hint associated. The hint should refer to the *absolute* performance impact, +rather than being relative to the other options provided in the enum. Here are +some examples taken from the Godot editor: + +- **Screen-space antialiasing:** *Disabled (Fastest), FXAA (Fast)* +- **MSAA quality:** *Disabled (Fastest), 2x (Fast), 4x (Average), 8x (Slow), 16x + (Slower)* +- **DirectionalLight mode:** *Orthogonal (Fast), PSSM 2 Splits + (Average), PSSM 4 Splits (Slow)* + +For consistency, try to stick to the terms below (from fastest to slowest): + +- *Fastest, Faster, Fast, Average, Slow, Slower, Slowest* + +Their usage doesn't have to be contiguous. For example, you can use only "Fast" +and "Slow" from the list above. + +If you're adding a new enum, its values should be ordered from the fastest +option to the slowest option. + +Tooltips +-------- + +Consider adding tooltips whenever the action performed by a button or menu +action isn't obvious. You can also provide additional context or highlight +caveats in the tooltip. + +You can do this by calling ``set_tooltip(TTR("Text here."))`` on the +Control-based node in question. If the tooltip is particularly long (more than +~80 characters), wrap it over several lines by adding line breaks using ``\n``. + +Tooltips should follow the writing style described above. In addition to this, +use indicative mood instead of imperative mood: + +- **Good:** *Computes global illumination for the selected GIProbe.* +- **Bad:** *Compute global illumination for the selected GIProbe.* diff --git a/development/editor/index.rst b/development/editor/index.rst index 19d025688..7dc093f97 100644 --- a/development/editor/index.rst +++ b/development/editor/index.rst @@ -6,3 +6,4 @@ Editor development :name: toc-devel-editor creating_icons + editor_style_guide From 8d7e85a26a1b0f5913c43e5c510331551a8c80b5 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 11 Jun 2020 08:51:58 -0400 Subject: [PATCH 15/39] Update JDK installation instructions in Exporting for Android (#3653) --- .../workflow/export/exporting_for_android.rst | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/getting_started/workflow/export/exporting_for_android.rst b/getting_started/workflow/export/exporting_for_android.rst index 3c2301e2f..f7950f623 100644 --- a/getting_started/workflow/export/exporting_for_android.rst +++ b/getting_started/workflow/export/exporting_for_android.rst @@ -14,12 +14,11 @@ Download and install the Android SDK from If you install Android Studio, you need to run it once to complete the SDK setup. -Install OpenJDK or Oracle JDK ------------------------------ +Install OpenJDK 8 +----------------- -Download and install `OpenJDK `__ or `Oracle JDK `__. Versions below JDK 8 may not work; some users have reported issues with the jarsigner (used to sign the APKs) in JDK 7. - -If you install OpenJDK, choose ``1.8``. Don't choose the ``openjdk-jre`` files as that only contains the JRE, not the JDK which is required here. +Download and install `OpenJDK 8 `__, +newer versions do not work. Create a debug.keystore ----------------------- From 96f627e5b8feec5d306b5ed86b83e8f7424d80c1 Mon Sep 17 00:00:00 2001 From: DerekWang Date: Thu, 11 Jun 2020 22:53:47 +1000 Subject: [PATCH 16/39] Update C# scripts to use current APIs in Your first game (#3648) 1. Shorten line. Fix camelCase naming of a local variable. 2. Replace deprecated API. --- getting_started/step_by_step/your_first_game.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/getting_started/step_by_step/your_first_game.rst b/getting_started/step_by_step/your_first_game.rst index 21bbf864a..41bc434c4 100644 --- a/getting_started/step_by_step/your_first_game.rst +++ b/getting_started/step_by_step/your_first_game.rst @@ -629,8 +629,9 @@ choose one of the three animation types: public override void _Ready() { - var _mobTypes = GetNode("AnimatedSprite").Frames.GetAnimationNames(); - GetNode("AnimatedSprite").Animation = _mobTypes[_random.Next(0, _mobTypes.Length)]; + var animSprite = GetNode("AnimatedSprite"); + var mobTypes = animSprite.Frames.GetAnimationNames(); + animSprite.Animation = mobTypes[_random.Next(0, mobTypes.Length)]; } First, we get the list of animation names from the AnimatedSprite's ``frames`` @@ -877,7 +878,7 @@ Note that a new instance must be added to the scene using ``add_child()``. { // Choose a random location on Path2D. var mobSpawnLocation = GetNode("MobPath/MobSpawnLocation"); - mobSpawnLocation.SetOffset(_random.Next()); + mobSpawnLocation.Offset = _random.Next(); // Create a Mob instance and add it to the scene. var mobInstance = (RigidBody2D)Mob.Instance(); @@ -894,7 +895,7 @@ Note that a new instance must be added to the scene using ``add_child()``. mobInstance.Rotation = direction; // Choose the velocity. - mobInstance.SetLinearVelocity(new Vector2(RandRange(150f, 250f), 0).Rotated(direction)); + mobInstance.LinearVelocity = new Vector2(RandRange(150f, 250f), 0).Rotated(direction); } .. important:: Why ``PI``? In functions requiring angles, GDScript uses *radians*, From 619ce2e9d61d07561a406eee5ba46e1af5150772 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81ngel=20M?= Date: Thu, 11 Jun 2020 19:48:20 +0200 Subject: [PATCH 17/39] Small typo in the "Your First Game" tutorial --- getting_started/step_by_step/your_first_game.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/getting_started/step_by_step/your_first_game.rst b/getting_started/step_by_step/your_first_game.rst index 41bc434c4..35349b151 100644 --- a/getting_started/step_by_step/your_first_game.rst +++ b/getting_started/step_by_step/your_first_game.rst @@ -449,7 +449,7 @@ We want ``Player`` to detect when it's hit by an enemy, but we haven't made any enemies yet! That's OK, because we're going to use Godot's *signal* functionality to make it work. -Add the following at the top of the script, after ``extends Area2d``: +Add the following at the top of the script, after ``extends Area2D``: .. tabs:: .. code-tab:: gdscript GDScript From bd87719ce83bc0608bb2377a6118efb0df590a43 Mon Sep 17 00:00:00 2001 From: nice-shot Date: Fri, 12 Jun 2020 01:15:21 +0300 Subject: [PATCH 18/39] =?UTF-8?q?Added=20missing=20=E2=80=9Cshould?= =?UTF-8?q?=E2=80=9D=20in=20audio=5Fbuses.rst?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tutorials/audio/audio_buses.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/audio/audio_buses.rst b/tutorials/audio/audio_buses.rst index 7f07b5957..c84eb96ec 100644 --- a/tutorials/audio/audio_buses.rst +++ b/tutorials/audio/audio_buses.rst @@ -32,7 +32,7 @@ For those unfamiliar with it, it can be explained with a few facts: This limit is not the human limit, but a limit from the sound hardware. Audio with amplitudes that are too high to be represented properly below 0 dB create a kind of distortion called *clipping*. -- To avoid clipping, your sound mix be arranged so that the output of the +- To avoid clipping, your sound mix should be arranged so that the output of the *master bus* (more on that later) never exceeds 0 dB. - Every 6 dB below the 0 dB limit, sound energy is *halved*. It means the sound volume at -6 dB is half as loud as 0dB. From 84d2b1e848dec022c45466b041f7d931302512ec Mon Sep 17 00:00:00 2001 From: Paul Joannon <437025+paulloz@users.noreply.github.com> Date: Sat, 13 Jun 2020 13:31:25 +0200 Subject: [PATCH 19/39] Update WebAssembly export templates' ZIP archive names (#3680) --- development/compiling/introduction_to_the_buildsystem.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/development/compiling/introduction_to_the_buildsystem.rst b/development/compiling/introduction_to_the_buildsystem.rst index 28e6c5b88..4b4066f98 100644 --- a/development/compiling/introduction_to_the_buildsystem.rst +++ b/development/compiling/introduction_to_the_buildsystem.rst @@ -307,8 +307,8 @@ platform: android_debug.apk android_release.apk - javascript_debug.zip - javascript_release.zip + webassembly_debug.zip + webassembly_release.zip linux_server_32 linux_server_64 linux_x11_32_debug From 566b51c37f46c27e88700d92590b5f74cd5b6360 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 13 Jun 2020 13:38:21 +0200 Subject: [PATCH 20/39] Switch continuous integration to GitHub Actions This allows freeing up some Travis CI jobs for the main Godot repository, as job parallelism limits are shared across an organization. --- .github/workflows/ci.yml | 20 ++++++++++++++++++++ .travis.yml | 34 ---------------------------------- 2 files changed, 20 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..840ec330b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,20 @@ +name: Continuous integration +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-20.04 + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Lint and build documentation + run: | + # Append the `PATH` so we can run `codespell`. + export PATH="$HOME/.local/bin:$PATH" + pip3 install -r requirements.txt + pip3 install codespell + bash _tools/format.sh + codespell -I _tools/codespell-ignore.txt {about,community,development,getting_started,tutorials}/**/*.rst + # Use dummy builder to improve performance. + sphinx-build --color -b dummy -d _build/doctrees . _build/html diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 51281c256..000000000 --- a/.travis.yml +++ /dev/null @@ -1,34 +0,0 @@ -os: linux -dist: bionic -language: python - "3.8" - -env: - global: - - SPHINX_NO_GDSCRIPT=1 - - SPHINX_NO_SEARCH=1 - - SPHINX_NO_DESCRIPTIONS=1 - -matrix: - include: - - name: Static checks (format.sh) + Sphinx build - stage: build - os: linux - addons: - apt: - packages: - - dos2unix - - recode - -install: - - pip install -r requirements.txt - - pip install codespell - -script: - - bash _tools/format.sh - - # Check for possible typos - - codespell -I _tools/codespell-ignore.txt {about,community,development,getting_started,tutorials}/**/*.rst - - # TODO: Add `-W` to turn warnings into errors. - # This can only be done once all warnings have been fixed. - - sphinx-build --color -b dummy -d _build/doctrees . _build/html From 3f69884e193b21d2fd3c55e4aa4bb3cfdca67064 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 13 Jun 2020 18:10:56 +0200 Subject: [PATCH 21/39] Fix shellcheck warnings in `format.sh` This makes the script behave correctly if the path to the cloned repository contains spaces. --- _tools/format.sh | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/_tools/format.sh b/_tools/format.sh index f96caef25..1b0e22f0b 100755 --- a/_tools/format.sh +++ b/_tools/format.sh @@ -1,18 +1,21 @@ -#!/bin/bash +#!/usr/bin/env bash + +set -uo pipefail +IFS=$'\n\t' # Loops through all text files tracked by Git. git grep -zIl '' | while IFS= read -rd '' f; do # Exclude csproj and hdr files. - if [[ $f == *"csproj" ]]; then + if [[ "$f" == *"csproj" ]]; then continue - elif [[ $f == *"hdr" ]]; then + elif [[ "$f" == *"hdr" ]]; then continue fi # Ensures that files are UTF-8 formatted. - recode UTF-8 $f 2> /dev/null + recode UTF-8 "$f" 2> /dev/null # Ensures that files have LF line endings. - dos2unix $f 2> /dev/null + dos2unix "$f" 2> /dev/null # Ensures that files do not contain a BOM. sed -i '1s/^\xEF\xBB\xBF//' "$f" # Ensures that files end with newline characters. @@ -20,7 +23,7 @@ while IFS= read -rd '' f; do done git diff > patch.patch -FILESIZE=$(stat -c%s patch.patch) +FILESIZE="$(stat -c%s patch.patch)" MAXSIZE=5 # If no patch has been generated all is OK, clean up, and exit. From 0d6f2e87039c63b4c913be52cc8f248a76d04cce Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 13 Jun 2020 19:07:40 +0200 Subject: [PATCH 22/39] Document that `light()` functions aren't run if vertex shading is forced See https://github.com/godotengine/godot/issues/39513. --- tutorials/shading/shading_reference/spatial_shader.rst | 7 +++++++ tutorials/shading/your_first_shader/what_are_shaders.rst | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tutorials/shading/shading_reference/spatial_shader.rst b/tutorials/shading/shading_reference/spatial_shader.rst index 50b56545b..b859dfdec 100644 --- a/tutorials/shading/shading_reference/spatial_shader.rst +++ b/tutorials/shading/shading_reference/spatial_shader.rst @@ -298,6 +298,13 @@ Below is an example of a custom light function using a Lambertian lighting model If you want the lights to add together, add the light contribution to ``DIFFUSE_LIGHT`` using ``+=``, rather than overwriting it. +.. warning:: + + The ``light()`` function won't be run if the ``vertex_lighting`` render mode + is enabled, or if + **Rendering > Quality > Shading > Force Vertex Shading** is enabled in the + Project Settings. (It's enabled by default on mobile platforms.) + +-----------------------------------+-----------------------------------------------------+ | Built-in | Description | +===================================+=====================================================+ diff --git a/tutorials/shading/your_first_shader/what_are_shaders.rst b/tutorials/shading/your_first_shader/what_are_shaders.rst index 79756aff8..56ff4e044 100644 --- a/tutorials/shading/your_first_shader/what_are_shaders.rst +++ b/tutorials/shading/your_first_shader/what_are_shaders.rst @@ -90,7 +90,14 @@ between the vertices to provide the values for the ``fragment()`` function. The ``light()`` function runs for every pixel and for every light. It takes variables from the ``fragment()`` function and from previous runs of itself. -For more information about how shaders operate specifically in Godot see the :ref:`Shaders ` doc. +For more information about how shaders operate specifically in Godot, see the :ref:`Shaders ` doc. + +.. warning:: + + The ``light()`` function won't be run if the ``vertex_lighting`` render mode + is enabled, or if + **Rendering > Quality > Shading > Force Vertex Shading** is enabled in the + Project Settings. (It's enabled by default on mobile platforms.) Technical overview ------------------ From c6aafe6be986f1be0f53771d503996734e9d880e Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 13 Jun 2020 18:58:25 +0200 Subject: [PATCH 23/39] Add a note about the introduction in Encrypting save games Many contributors have opened pull requests to remove it, but the consensus over the years is that most people are actually fine with the paragraph in question. --- tutorials/io/encrypting_save_games.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tutorials/io/encrypting_save_games.rst b/tutorials/io/encrypting_save_games.rst index 6e28737d4..94060c5ac 100644 --- a/tutorials/io/encrypting_save_games.rst +++ b/tutorials/io/encrypting_save_games.rst @@ -6,6 +6,9 @@ Encrypting save games Why? ---- +.. This introduction is an Easter egg and is not intended to be taken seriously. +.. Please don't remove it :) + Because the world today is not the world of yesterday. A capitalist oligarchy runs the world and forces us to consume in order to keep the gears of this rotten society on track. As such, the biggest market for From b75fd032ef91059a584152f3f8be03b70c22e05a Mon Sep 17 00:00:00 2001 From: Matthew Date: Sat, 13 Jun 2020 18:13:51 -0400 Subject: [PATCH 24/39] Put Debugger panel info on a new page and add info (#3673) Co-authored-by: Hugo Locurcio --- tutorials/debug/debugger_panel.rst | 105 ++++++++++++++++++ tutorials/debug/img/video_ram.png | Bin 0 -> 23661 bytes tutorials/debug/index.rst | 1 + .../debug/overview_of_debugging_tools.rst | 103 +---------------- 4 files changed, 112 insertions(+), 97 deletions(-) create mode 100644 tutorials/debug/debugger_panel.rst create mode 100644 tutorials/debug/img/video_ram.png diff --git a/tutorials/debug/debugger_panel.rst b/tutorials/debug/debugger_panel.rst new file mode 100644 index 000000000..8d9774f53 --- /dev/null +++ b/tutorials/debug/debugger_panel.rst @@ -0,0 +1,105 @@ +.. _doc_debugger_panel: + +Debugger panel +============== + +Many of Godot's debugging tools, including the debugger, can be found in the +debugger panel at the bottom of the screen. Click on **Debugger** to open it. + +.. image:: img/overview_debugger.png + +The debugger panel is split into several tabs, each focusing on a specific task. + +Debugger +++++++++ + +The Debugger tab opens automatically when the GDScript compiler reaches +a breakpoint in your code. + +It gives you a `stack trace `__, +information about the state of the object, and buttons to control +the program's execution. + +You can use the buttons in the top-right corner to: + +- Skip all breakpoints. That way, you can save breakpoints for future + debugging sessions. +- Copy the current error message. +- **Step Into** the code. This button takes you to the next line of code, + and if it's a function, it steps line-by-line through the function. +- **Step Over** the code. This button goes to the next line of code, + but it doesn't step line-by-line through functions. +- **Break**. This button pauses the game's execution. +- **Continue**. This button resumes the game after a breakpoint or pause. + +Errors +++++++ + +This is where error and warning messages are printed while running the game. + +You can disable specific warnings in **Project Settings > Debug > GDScript**. + +Profiler +++++++++ + +The debugger comes with three profilers for your processor, network operations, +and video memory. + +The profiler is used to show why individual frames take as long as they do +to process and render. + +Unlike other debugging tools, the profiler does not start automatically. It can +be started at any time during gameplay by pressing the start button. You can +even start the profiler before opening the game to profile startup performance. +It can also be started and stopped while the game is running without losing +information from when it was last running. The information it records won't +go away unless you click clear, or close the game, reopen it and start +the profiler again. + +After starting and stopping the profiler, you should see things being kept track +of on the left and a graph on the right. The items listed on the left are +everything that contributes to frame time, and they should each have a value +for time and calls for the current frame you are looking at. + +The frame number in the top right tells you which frame you are currently +looking at. You can change this by using the up or down arrows, typing in the +frame number, or clicking on the graph. + +If you want to add something to your graph or think it looks too cluttered, +you can check and uncheck the box next to an item to add or remove it +from the graph. + +Network Profiler +++++++++++++++++ + +The Network Profiler contains a list of all the nodes that communicate over the +multiplayer API and, for each one, some counters on the amount of incoming and +outgoing network interactions. It also features a bandwidth meter that displays +the total bandwidth usage at any given moment. + +Monitors +++++++++ + +The monitors are graphs of several aspects of the game while its running such as +FPS, memory usage, how many nodes are in a scene and more. All monitors keep +track of stats automatically, so even if one monitor isn't open while the game +is running, you can open it later and see how the values changed. + +Video RAM ++++++++++ + +The **Video RAM** tab shows the video RAM usage of the game while it is running. +It provides a list of every resource using video RAM by resource path, the type +of resource it is, what format it is in, and how much Video RAM that resource is +using. There is also a total video RAM usage number at the top right of the panel. + +.. image:: img/video_ram.png + +Misc +++++ + +The **Misc** tab contains tools to identify the control nodes you are clicking +at runtime: + +- **Clicked Control** tells you where the clicked node is in the scene tree. +- **Clicked Control Type** tells you the type of the node you clicked is. diff --git a/tutorials/debug/img/video_ram.png b/tutorials/debug/img/video_ram.png new file mode 100644 index 0000000000000000000000000000000000000000..c2929f7ca0f921c1523c1654fd374d483973d4a6 GIT binary patch literal 23661 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 literal 0 HcmV?d00001 diff --git a/tutorials/debug/index.rst b/tutorials/debug/index.rst index 3ba7f9896..fd09c5e4e 100644 --- a/tutorials/debug/index.rst +++ b/tutorials/debug/index.rst @@ -6,3 +6,4 @@ Debug :name: toc-learn-features-debug overview_of_debugging_tools + debugger_panel diff --git a/tutorials/debug/overview_of_debugging_tools.rst b/tutorials/debug/overview_of_debugging_tools.rst index 1dd46e488..bc1ed0b11 100644 --- a/tutorials/debug/overview_of_debugging_tools.rst +++ b/tutorials/debug/overview_of_debugging_tools.rst @@ -14,6 +14,12 @@ in the running game. Finally, you have options to debug the game running on a remote device and to reload changes to your scenes or your code while the game is running. +Debugger Panel +-------------- + +Many of Godot's debugging tools are part of the Debugger panel, which you can +find information about in :ref:`doc_debugger_panel`. + Debug menu options ------------------ @@ -109,103 +115,6 @@ Shapes Shapes are where you can adjust the color of shapes that only appear for debugging purposes, such as collision and navigation shapes. -Debugging tools ---------------- - -You can find the debugger in the bottom panel. Click on **Debugger** to open it. - -.. image:: img/overview_debugger.png - -The debugger is split into several tabs, each focusing on a specific task. - -Debugger -++++++++ - -The debugger tab opens automatically when the GDScript compiler reaches -a breakpoint in your code. - -It gives you a `stack trace `__, -information about the state of the object, and buttons to control -the program's execution. - -You can use the buttons in the top-right to: - -- Skip all breakpoints. That way, you can save breakpoints for future - debugging sessions. -- Copy the current error message. -- **Step Into** the code. This button takes you to the next line of code, - and if it's a function, it steps line-by-line through the function. -- **Step Over** the code. This button goes to the next line of code, - but it doesn't step line-by-line through functions. -- **Break**. This button pauses the game's execution. -- **Continue**. This button resumes the game after a breakpoint or pause. - -Errors -++++++ - -This is where errors and warning messages are printed while running the game. - -Profiler -++++++++ - -The debugger comes with three profilers for your processor, network operations, -and video memory. - -The profiler is used to show why individual frames take as long as they do -to process and render. - -Unlike other debugging tools, the profiler does not start automatically. It can -be started at any time during gameplay by pressing the start button. You can -even start the profiler before opening the game to profile startup performance. -It can also be started and stopped while the game is running without losing -information from when it was last running. The information it records won't -go away unless you click clear, or close the game, reopen it and start -the profiler again. - -After starting and stopping the profiler you should see things being kept track -of on the left and a graph on the right. The items listed on the left are -everything that contributes to frame time, and they should each have a value -for time and calls for the current frame you are looking at. - -The frame number in the top right tells you which frame you are currently -looking at. You can change this by using the up or down arrows, typing in the -frame number, or clicking on the graph. - -If you want to add something to your graph, or think it looks too cluttered, -you can check and uncheck the box next to an item to add or remove it -from the graph. - -Network Profiler -++++++++++++++++ - -The Network Profiler contains a list of all the nodes that communicate over the -multiplayer API and, for each one, some counters on the amount of incoming and -outgoing network interactions. It also features a bandwidth meter that displays -the total bandwidth usage at any given moment. - -Monitors -++++++++ - -The monitors are graphs of several aspects of the game while its running such as -FPS, memory usage, how many nodes are in a scene and more. All monitors keep -track of stats automatically, so even if one monitor isn't open while the game -is running, you can open it later and see how the values changed. - -Video Memory -++++++++++++ - -The **Video Mem** tab lists the video memory usage of the running game -and the resources using it. - -Misc -++++ - -The **Misc** tab contains tools to identify the control nodes you are clicking -at runtime: - -- **Clicked Control** tells you where the clicked node is in the scene tree. -- **Clicked Control Type** tells you the type of the node you clicked is. - Remote in scene dock -------------------- From c822ecff8215d10df89c6720d58a23eb07f81bad Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 15 Jun 2020 10:30:05 +0200 Subject: [PATCH 25/39] Add a style guide for project organization This closes #3104. --- .../project_setup/project_organization.rst | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/getting_started/workflow/project_setup/project_organization.rst b/getting_started/workflow/project_setup/project_organization.rst index b9225e22e..59eab6952 100644 --- a/getting_started/workflow/project_setup/project_organization.rst +++ b/getting_started/workflow/project_setup/project_organization.rst @@ -44,6 +44,23 @@ They can then use a separate folder to store built levels that use them. /characters/npcs/suzanne/suzanne.png /levels/riverdale/riverdale.scn +Style guide +----------- + +For consistency across projects, we recommend following these guidelines: + +- Use **snake_case** for folder and file names (with the exception of C# + scripts). This sidesteps case sensitivity issues that can crop up after + exporting a project on Windows. C# scripts are an exception to this rule, + as the convention is to name them after the class name which should be + in PascalCase. +- Use **PascalCase** for node names, as this matches built-in node casing. +- In general, keep third-party resources in a top-level ``addons/`` folder, even + if they aren't editor plugins. This makes it easier to track which files are + third-party. There are some exceptions to this rule; for instance, if you use + third-party game assets for a character, it makes more sense to include them + within the same folder as the character scenes and scripts. + Importing --------- From b495c744235bf8ee172fc3301f517c9d209aeb9b Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 15 Jun 2020 10:59:56 +0200 Subject: [PATCH 26/39] Change C# page titles to describe the pages' contents The page title will be used in the tab name, which can impact search engine results as well as general usability. Using just "Introduction" or "Features" doesn't make it very meaningful. --- getting_started/scripting/c_sharp/c_sharp_basics.rst | 5 ++++- getting_started/scripting/c_sharp/c_sharp_differences.rst | 4 ++-- getting_started/scripting/c_sharp/c_sharp_features.rst | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/getting_started/scripting/c_sharp/c_sharp_basics.rst b/getting_started/scripting/c_sharp/c_sharp_basics.rst index 8314e2ad1..e74dd0a8f 100644 --- a/getting_started/scripting/c_sharp/c_sharp_basics.rst +++ b/getting_started/scripting/c_sharp/c_sharp_basics.rst @@ -1,7 +1,10 @@ .. _doc_c_sharp: +C# basics +========= + Introduction -============ +------------ .. warning:: C# support is a new feature available since Godot 3.0. As such, you may still run into some issues, or find spots diff --git a/getting_started/scripting/c_sharp/c_sharp_differences.rst b/getting_started/scripting/c_sharp/c_sharp_differences.rst index a3a81652e..bef9df062 100644 --- a/getting_started/scripting/c_sharp/c_sharp_differences.rst +++ b/getting_started/scripting/c_sharp/c_sharp_differences.rst @@ -1,7 +1,7 @@ .. _doc_c_sharp_differences: -API differences to GDScript -=========================== +C# API differences to GDScript +============================== This is a (incomplete) list of API differences between C# and GDScript. diff --git a/getting_started/scripting/c_sharp/c_sharp_features.rst b/getting_started/scripting/c_sharp/c_sharp_features.rst index 4d3db4abc..d61803a83 100644 --- a/getting_started/scripting/c_sharp/c_sharp_features.rst +++ b/getting_started/scripting/c_sharp/c_sharp_features.rst @@ -1,7 +1,7 @@ .. _doc_c_sharp_features: -Features -======== +C# features +=========== This page provides an overview of the commonly used features of both C# and Godot and how they are used together. From c7f36b60a4dd4b24dd2ecc0adc1b2b8e74f2f7a2 Mon Sep 17 00:00:00 2001 From: Secret Panda <47739858+SecretPanda420@users.noreply.github.com> Date: Mon, 15 Jun 2020 22:26:22 +0530 Subject: [PATCH 27/39] Fix Stack Exchange reference name in the FPS tutorial (#3697) Co-authored-by: Hugo Locurcio --- tutorials/3d/fps_tutorial/part_one.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/3d/fps_tutorial/part_one.rst b/tutorials/3d/fps_tutorial/part_one.rst index 75edbd336..92f5ffc7f 100644 --- a/tutorials/3d/fps_tutorial/part_one.rst +++ b/tutorials/3d/fps_tutorial/part_one.rst @@ -518,7 +518,7 @@ The space in which an object's position is the origin of the universe. Because t of the origin can be at ``N`` many locations, the values derived from local space change with the position of the origin. -.. note:: This stack overflow question has a much better explanation of world space and local space. +.. note:: This question from Game Development Stack Exchange has a much better explanation of world space and local space. https://gamedev.stackexchange.com/questions/65783/what-are-world-space-and-eye-space-in-game-development (Local space and eye space are essentially the same thing in this context) From 34f97a754446dc274fe1abdc14c1f4fbdd11cbe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Tue, 16 Jun 2020 16:21:39 +0200 Subject: [PATCH 28/39] GitHub linguist: Mark .rst files as detectable Linguist excludes documentation by default, which is not so useful on a repo dedicated to documentation. This attribute forces it to take .rst files into account and properly report this report as being 99% reStructuredText. --- .gitattributes | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..4631c3bd3 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Properly detect languages on GitHub +*.rst linguist-detectable=true From a135d305ff0e82ea24269d7a8279654114c15d94 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 16 Jun 2020 16:53:51 +0200 Subject: [PATCH 29/39] Fix `vformat()` example in Common engine methods and macros --- development/cpp/common_engine_methods_and_macros.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/development/cpp/common_engine_methods_and_macros.rst b/development/cpp/common_engine_methods_and_macros.rst index f1dae6d0b..48e6e1478 100644 --- a/development/cpp/common_engine_methods_and_macros.rst +++ b/development/cpp/common_engine_methods_and_macros.rst @@ -89,7 +89,8 @@ To insert placeholders in localizable strings, wrap the localization macro in a .. code-block:: cpp - vformat(TTR("Couldn't open \"%s\" for reading.")); + String file_path = "example.txt"; + vformat(TTR("Couldn't open \"%s\" for reading."), file_path); .. note:: From 59731584abfa0fcc9d3ea8e4985a17545fcfc5e7 Mon Sep 17 00:00:00 2001 From: Amanda Steinwedel Date: Tue, 16 Jun 2020 05:48:11 -0700 Subject: [PATCH 30/39] C# Correct how to type cast Dictionaries returned from JSONParseResult Casting with either `(Godot.Collections.Dictionary)parsedResult` or `parsedResult as Godot.Collections.Dictionary` fails with an InvalidCastException (or silently returning null with the `as` keyword). Instead, a typed constructor using `new` should be used. --- tutorials/io/saving_games.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/io/saving_games.rst b/tutorials/io/saving_games.rst index 6ab07dba3..4e87531cf 100644 --- a/tutorials/io/saving_games.rst +++ b/tutorials/io/saving_games.rst @@ -267,7 +267,7 @@ load function: while (saveGame.GetPosition() < save_game.GetLen()) { // Get the saved dictionary from the next line in the save file - var nodeData = (Godot.Collections.Dictionary)JSON.Parse(saveGame.GetLine()).Result; + var nodeData = new Godot.Collections.Dictionary((Godot.Collections.Dictionary)JSON.Parse(saveGame.GetLine()).Result); // Firstly, we need to create the object and add it to the tree and set its position. var newObjectScene = (PackedScene)ResourceLoader.Load(nodeData["Filename"].ToString()); From 532f93fbcc2c017cb51eea05c970c24e41c780a1 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Wed, 17 Jun 2020 23:05:09 +0200 Subject: [PATCH 31/39] Install tools required by `format.sh` on GitHub Actions The script would silently fail otherwise. --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 840ec330b..abfc2662b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,6 +10,9 @@ jobs: - name: Lint and build documentation run: | + # Install tools used by `_tools/format.sh`. + sudo apt-get update -qq + sudo apt-get install -qq dos2unix recode # Append the `PATH` so we can run `codespell`. export PATH="$HOME/.local/bin:$PATH" pip3 install -r requirements.txt From 91c508d21062bfcd18bad26e95d2a89a0465ea58 Mon Sep 17 00:00:00 2001 From: binotaliu <59665613+binotaliu@users.noreply.github.com> Date: Thu, 18 Jun 2020 14:59:12 +0000 Subject: [PATCH 32/39] fix slash to backslash in resources (#3706) --- getting_started/step_by_step/resources.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/getting_started/step_by_step/resources.rst b/getting_started/step_by_step/resources.rst index 20af48605..cadef8c14 100644 --- a/getting_started/step_by_step/resources.rst +++ b/getting_started/step_by_step/resources.rst @@ -152,7 +152,7 @@ Creating your own resources Like any Object in Godot, users can also script Resources. Resource scripts inherit the ability to freely translate between object properties and serialized -text or binary data (/*.tres, /*.res). They also inherit the reference-counting +text or binary data (\*.tres, \*.res). They also inherit the reference-counting memory management from the Reference type. This comes with many distinct advantages over alternative data From bd4d9f4cd68ee0b08bfac14078b556c3364b920b Mon Sep 17 00:00:00 2001 From: Andy Maloney Date: Fri, 19 Jun 2020 17:37:15 -0400 Subject: [PATCH 33/39] Add note about register_types file locations (#3702) --- development/cpp/binding_to_external_libraries.rst | 14 +++++++++----- development/cpp/custom_modules_in_cpp.rst | 13 +++++++++---- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/development/cpp/binding_to_external_libraries.rst b/development/cpp/binding_to_external_libraries.rst index c8f9ecd5f..d5818b8b6 100644 --- a/development/cpp/binding_to_external_libraries.rst +++ b/development/cpp/binding_to_external_libraries.rst @@ -75,7 +75,11 @@ need to be created: register_types.h register_types.cpp -With the following contents: +.. important:: + These files must be in the top-level folder of your module (next to your + ``SCsub`` and ``config.py`` files) for the module to be registered properly. + +These files should contain the following: .. code-block:: cpp @@ -124,8 +128,8 @@ installation commands for Linux below, for reference. apt-cache search festvox-* <-- Displays list of voice packages sudo apt-get install festvox-don festvox-rablpc16k festvox-kallpc16k festvox-kdlpc16k <-- Installs voices -.. note:: - **Important:** The voices that Festival uses (and any other potential external/3rd-party +.. important:: + The voices that Festival uses (and any other potential external/3rd-party resource) all have varying licenses and terms of use; some (if not most) of them may be be problematic with Godot, even if the Festival Library itself is MIT License compatible. Please be sure to check the licenses and terms of use. @@ -148,8 +152,8 @@ can link to them instead by adding them as submodules (from within the modules/t git submodule add https://github.com/festvox/festival git submodule add https://github.com/festvox/speech_tools -.. note:: - **Important:** Please note that Git submodules are not used in the Godot repository. If +.. important:: + Please note that Git submodules are not used in the Godot repository. If you are developing a module to be merged into the main Godot repository, you should not use submodules. If your module doesn't get merged in, you can always try to implement the external library as a GDNative C++ plugin. diff --git a/development/cpp/custom_modules_in_cpp.rst b/development/cpp/custom_modules_in_cpp.rst index 89d8f3458..9d95b71f3 100644 --- a/development/cpp/custom_modules_in_cpp.rst +++ b/development/cpp/custom_modules_in_cpp.rst @@ -119,7 +119,11 @@ need to be created: register_types.h register_types.cpp -With the following contents: +.. important:: + These files must be in the top-level folder of your module (next to your + ``SCsub`` and ``config.py`` files) for the module to be registered properly. + +These files should contain the following: .. code-block:: cpp @@ -423,7 +427,7 @@ library that will be dynamically loaded when starting our game's binary. # next to the Godot binary. shared_lib = module_env.SharedLibrary(target='#bin/summator', source=sources) - # Finally, notify the main env it has our shared lirary as a new dependency. + # Finally, notify the main env it has our shared library as a new dependency. # To do so, SCons wants the name of the lib with it custom suffixes # (e.g. ".linuxbsd.tools.64") but without the final ".so". # We pass this along with the directory of our library to the main env. @@ -441,8 +445,9 @@ during runtime with the ``LD_LIBRARY_PATH`` environment variable: export LD_LIBRARY_PATH="$PWD/bin/" ./bin/godot* -**note**: Pay attention you have to ``export`` the environ variable otherwise -you won't be able to play your project from within the editor. +.. note:: + You have to ``export`` the environment variable otherwise + you won't be able to play your project from within the editor. On top of that, it would be nice to be able to select whether to compile our module as shared library (for development) or as a part of the Godot binary From 0f8054882a5089f2eab5d5b972bc7851d563dd6f Mon Sep 17 00:00:00 2001 From: Timo Schwarzer Date: Mon, 15 Jun 2020 18:40:15 +0200 Subject: [PATCH 34/39] Update Android IAP tutorial for 3.2.2 --- .../platform/android_in_app_purchases.rst | 188 ++++++++++-------- 1 file changed, 107 insertions(+), 81 deletions(-) diff --git a/tutorials/platform/android_in_app_purchases.rst b/tutorials/platform/android_in_app_purchases.rst index 4df1feb64..999c8ae0c 100644 --- a/tutorials/platform/android_in_app_purchases.rst +++ b/tutorials/platform/android_in_app_purchases.rst @@ -3,125 +3,151 @@ Android in-app purchases ======================== -Godot Engine has integrated GooglePaymentsV3 module with which we can implement in-app purchases in our game. +Godot offers a first-party ``GodotGooglePlayBilling`` Android plugin since Godot 3.2.2. +The new plugin uses the `Google Play Billing library `__ +instead of the now deprecated AIDL IAP implementation. -The `Godot demo projects repository `__ -has an `android_iap `__ -example project. It includes a GDScript interface for Android IAPs. +If you learn better by looking at an example, you can find the demo project +`here `__. -Find the ``iap.gd`` script in: -.. code-block:: none +Migrating from Godot 3.2.1 and lower (GodotPaymentsV3) +------------------------------------------------------ - godot-demo-projects/misc/android_iap +The new ``GodotGooglePlayBilling`` API is not compatible with its predecessor ``GodotPaymentsV3``. -Copy it to your project, then open the Project Settings, add it to the AutoLoad -list and name it as IAP so that we can reference it anywhere in the game. +Changes +******* -Getting the product details ---------------------------- +- You need to enable the Custom Build option in your Android export settings and install + the ``GodotGooglePlayBilling`` plugin manually (see below for details) +- All purchases have to be acknowledged by your app. This is a + `requirement from Google `__. + Purchases that are not acknowledged by your app will be refunded. +- Support for subscriptions +- Signals (no polling or callback objects) -When starting our game, we will need to get the item details from Google such as the product price, description, localized price string, etc. + +Usage +----- + +Getting started +*************** + +If not already done, make sure you have enabled and successfully set up :ref:`Android Custom Builds `. +Grab the``GodotGooglePlayBilling`` plugin binary and config from the `releases page `__ +and put both into `res://android/plugins`. +The plugin should now show up in the Android export settings, where you can enable it. + + +Getting started +*************** + +To use the ``GodotGooglePlayBilling`` API you first have to get the ``GodotGooglePlayBilling`` +singleton and start the connection: :: - # First, listen to the SKU details update callback. - IAP.connect("sku_details_complete", self, "sku_details_complete") + var payment - # Then ask Google the details for these items. - # pid1 and pid2 are our product IDs entered in the Google Play dashboard. - IAP.sku_details_query(["pid1", "pid2"]) + func _ready(): + if Engine.has_singleton("GodotGooglePlayBilling"): + payment = Engine.get_singleton("GodotGooglePlayBilling") + + # These are all signals supported by the API + # You can drop some of these based on your needs + payment.connect("connected", self, "_on_connected") # No params + payment.connect("disconnected", self, "_on_disconnected") # No params + payment.connect("connect_error", self, "_on_connect_error") # Response ID (int), Debug message (string) + payment.connect("purchases_updated", self, "_on_purchases_updated") # Purchases (Dictionary[]) + payment.connect("purchase_error", self, "_on_purchase_error") # Response ID (int), Debug message (string) + payment.connect("sku_details_query_completed", self, "_on_sku_details_query_completed") # SKUs (Dictionary[]) + payment.connect("sku_details_query_error", self, "_on_sku_details_query_error") # Response ID (int), Debug message (string), Queried SKUs (string[]) + payment.connect("purchase_acknowledged", self, "_on_purchase_acknowledged") # Purchase token (string) + payment.connect("purchase_acknowledgement_error", self, "_on_purchase_acknowledgement_error") # Response ID (int), Debug message (string), Purchase token (string) + payment.connect("purchase_consumed", self, "_on_purchase_consumed") # Purchase token (string) + payment.connect("purchase_consumption_error", self, "_on_purchase_consumption_error") # Response ID (int), Debug message (string), Purchase token (string) + + payment.startConnection() + else: + print("Android IAP support is not enabled. Make sure you have enabled 'Custom Build' and the GodotGooglePlayBilling plugin in your Android export settings! IAP will not work.") + +All API methods only work if the API is connected. You can use ``payment.isReady()`` to check the connection status. - # This will be called when SKU details are retrieved successfully. - func sku_details_complete(): - print(IAP.sku_details) # This will print the details as JSON format. Refer to the format in `iap.gd`. - print(IAP.sku_details["pid1"].price) # Print formatted localized price. +Querying available items +************************ -We can use the IAP details to display the title, price and/or description on our shop scene. +As soon as the API is connected, you can query SKUs using ``querySkuDetails``. -Check if user purchased an item -------------------------------- - -When starting our game, we can check if the user has purchased any product. **You should do this only after 2/3 seconds after your game is loaded.** If we do this as the first thing when the game is launched, IAPs might not be initialized and our game will crash on start. +Full example: :: - # Add a listener first. - IAP.connect("has_purchased", self, "iap_has_purchased") - IAP.request_purchased() #Ask Google for all purchased items + func _on_connected(): + payment.querySkuDetails(["my_iap_item"], "inapp") # "subs" for subscriptions - # This will call for each and every user's purchased products. - func iap_has_purchased(item_name): - print(item_name) #print the name of purchased items + func _on_sku_details_query_completed(sku_details): + for available_sku in sku_details: + print(available_sku) -The Google IAP policy says the game should restore the user's purchases if the user replaces their phone or reinstalls the same app. We can use the above code to check what products the user has purchased and we can make our game respond accordingly. +Purchase an item +**************** -Simple Purchase ---------------- - -We can put this purchase logic on a product's buy button. +To initiate the purchase flow for an item, call ``purchase``. +You **must** query the SKU details for an item before you can +initiate the purchase flow for it. :: - # First, listen for purchase_success callback. - IAP.connect("purchase_success", self, "purchase_success_callback") + payment.purchase("my_iap_item") - # Then call `purchase()` like this: - IAP.purchase("pid1") # Replace pid1 with one of your product IDs. - IAP.purchase("pid2") # Replace pid2 with another of your product IDs. - # This function will be called when the purchase is a success. - func purchase_success_callback(item): - print(item + " has purchased") -We can also implement other signals for the purchase flow and improve the user experience as you needed. +Check if the user purchased an item +*********************************** -- ``purchase_fail``: When the purchase is failed due to any reason. -- ``purchase_cancel``: When the user cancels the purchase. -- ``purchase_owned``: When the user already bought the product earlier. +To get all purchases, call ``queryPurchases``. Unlike most of the other functions, ``queryPurchases`` is +a synchronous operation and returns a :ref:`Dictionary ` with a status code +and either an array of purchases or an error message. -Consumables and Non-Consumables -------------------------------- - -There are two types of products - consumables and non-consumables: - -- **Consumables** are purchased and used, for example, healing potions which can be purchased again and again. -- **Non-consumables** are one time purchases, for example, level packs. - -Google doesn't have this separation in their dashboard. If our product is a consumable, and if a user has purchased it, it will not be available for purchase until it is consumed. So we should call the consume method for our consumables and don't call consume for your non-consumables. +Full example: :: - IAP.connect("consume_success", self, "on_consume_success") - IAP.consume("pid") + var query = payment.queryPurchases() + if query.status == OK: + for purchase in query.purchases: + if purchase.sku == "my_iap_item": + premium = true # Entitle the user to the content they bought + if !purchase.is_acknowledged: + payment.acknowledgePurchase(purchase.purchase_token) - func on_consume_success(item): - print(item + " consumed") -If our game has only consumables, we don't have to do this. We can set it to consume the item automatically after a purchase. +Consumables +*********** + +If your in-app item is not a one-time purchase but a consumable item (e.g. coins) which can be purchased +multiple times, you can consume an item by calling ``consumePurchase`` with a purchase token. +Call ``queryPurchases`` to get the purchase token. Calling ``consumePurchase`` automatically +acknowledges a purchase. :: - IAP.set_auto_consume(true) + var query = payment.queryPurchases() + if query.status == OK: + for purchase in query.purchases: + if purchase.sku == "my_consumable_iap_item": + if !purchase.is_acknowledged: + payment.consumePurchase(purchase.purchase_token) + # Check the _on_purchase_consumed callback and give the user what they bought -If our game has only non-consumables, we can -:: +Subscriptions +************* - IAP.set_auto_consume(false) - -We should set the auto consume value only once when the game starts. - -Testing -------- - -If we add a Gmail ID as a tester in the Google Play dashboard, that tester can purchase items and they will not be charged. Another way to test IAP is using redeem codes generated by us for our game because the purchase flow is the same. - -Third way of testing is in development side. If we put the product ids as shown below, we will get a static fixed response according to the product ID. This is a quick way of testing things before going to the dashboard. - -- android.test.purchased -- android.test.canceled -- android.test.refunded -- android.test.item_unavailable +Subscriptions don't work much different from regular in-app items. Just use ``"subs"`` as second +argument to ``querySkuDetails`` to get subscription details. +Check ``is_auto_renewing`` in the results of ``queryPurchases()`` to see if a +user has cancelled an auto-renewing subscription From c94495233948211007ac48b3a4b6538c081aac3a Mon Sep 17 00:00:00 2001 From: Yuri Roubinsky Date: Fri, 19 Jun 2020 20:53:15 +0300 Subject: [PATCH 35/39] Added note about global shader arrays --- .../shading_reference/shading_language.rst | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/tutorials/shading/shading_reference/shading_language.rst b/tutorials/shading/shading_reference/shading_language.rst index a7c9bab2e..c172bdd02 100644 --- a/tutorials/shading/shading_reference/shading_language.rst +++ b/tutorials/shading/shading_reference/shading_language.rst @@ -195,13 +195,12 @@ Arrays ------ Arrays are containers for multiple variables of a similar type. -Note: As of Godot 3.2, only local and varying arrays have been implemented. Local arrays ~~~~~~~~~~~~ Local arrays are declared in functions. They can use all of the allowed datatypes, except samplers. -The array declaration follows a C-style syntax: ``typename + identifier + [array size]``. +The array declaration follows a C-style syntax: ``[const] + [precision] + typename + identifier + [array size]``. .. code-block:: glsl @@ -252,6 +251,23 @@ Arrays also have a built-in function ``.length()`` (not to be confused with the Note: If you use an index below 0 or greater than array size - the shader will crash and break rendering. To prevent this, use ``length()``, ``if``, or ``clamp()`` functions to ensure the index is between 0 and the array's length. Always carefully test and check your code. If you pass a constant expression or a simple number, the editor will check its bounds to prevent this crash. +Global arrays +~~~~~~~~~~~~~ + +You can declare arrays at global space like: + +.. code-block:: glsl + shader_type spatial; + + const lowp vec3 v[1] = lowp vec3[1] ( vec3(0, 0, 1) ); + + void fragment() { + ALBEDO = v[0]; + } + +.. note:: + Global arrays have to be declared as global constants, otherwise they can be declared the same as local arrays. + Constants --------- @@ -556,6 +572,9 @@ Passing values to shaders is possible. These are global to the whole shader and When a shader is later assigned to a material, the uniforms will appear as editable parameters in it. Uniforms can't be written from within the shader. +.. note:: + Uniform arrays are not implemented yet. + .. code-block:: glsl shader_type spatial; From 1faf5210d9acb8df1365b47fd51d4b45ff990172 Mon Sep 17 00:00:00 2001 From: clayjohn Date: Sat, 20 Jun 2020 12:56:08 -0700 Subject: [PATCH 36/39] Update screen reading shader doc with 3D info --- tutorials/shading/screen-reading_shaders.rst | 43 +++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/tutorials/shading/screen-reading_shaders.rst b/tutorials/shading/screen-reading_shaders.rst index bc687e809..bfd9b17a0 100644 --- a/tutorials/shading/screen-reading_shaders.rst +++ b/tutorials/shading/screen-reading_shaders.rst @@ -20,10 +20,10 @@ few tools that make this process easy! SCREEN_TEXTURE built-in texture ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Godot :ref:`doc_shading_language` has a special texture, "SCREEN_TEXTURE" (and "DEPTH_TEXTURE" for depth, in the case of 3D). +Godot :ref:`doc_shading_language` has a special texture, ``SCREEN_TEXTURE`` (and ``DEPTH_TEXTURE`` for depth, in the case of 3D). It takes as argument the UV of the screen and returns a vec3 RGB with the color. A special built-in varying: SCREEN_UV can be used to obtain the UV for -the current fragment. As a result, this simple 2D fragment shader: +the current fragment. As a result, this simple canvas_item fragment shader: .. code-block:: glsl @@ -39,10 +39,15 @@ a chunk of the screen, it also does an efficient separatable gaussian blur to it This allows for not only reading from the screen, but reading from it with different amounts of blur at no cost. +.. note:: + + Mipmaps are not generated in GLES2 due to poor performance and compatibility with older + devices. + SCREEN_TEXTURE example ~~~~~~~~~~~~~~~~~~~~~~ -SCREEN_TEXTURE can be used for many things. There is a +``SCREEN_TEXTURE`` can be used for many things. There is a special demo for *Screen Space Shaders*, that you can download to see and learn. One example is a simple shader to adjust brightness, contrast and saturation: @@ -68,25 +73,24 @@ and saturation: Behind the scenes ~~~~~~~~~~~~~~~~~ -While this seems magical, it's not. The SCREEN_TEXTURE built-in, when +While this seems magical, it's not. In 2D, the ``SCREEN_TEXTURE`` built-in, when first found in a node that is about to be drawn, does a full-screen copy to a back-buffer. Subsequent nodes that use it in shaders will not have the screen copied for them, because this ends up -being inefficient. +being inefficient. In 3D, the screen is copied after the opaque geometry pass, +but before the transparent geometry pass, so transparent objects will not be +captured in the ``SCREEN_TEXTURE``. -As a result, if shaders that use SCREEN_TEXTURE overlap, the second one +As a result, in 2D, if shaders that use ``SCREEN_TEXTURE`` overlap, the second one will not use the result of the first one, resulting in unexpected visuals: .. image:: img/texscreen_demo1.png In the above image, the second sphere (top right) is using the same -source for SCREEN_TEXTURE as the first one below, so the first one +source for ``SCREEN_TEXTURE`` as the first one below, so the first one "disappears", or is not visible. -In 3D, this is unavoidable because copying happens when opaque rendering -completes. - In 2D, this can be corrected via the :ref:`BackBufferCopy ` node, which can be instantiated between both spheres. BackBufferCopy can work by either specifying a screen region or the whole screen: @@ -97,19 +101,28 @@ With correct back-buffer copying, the two spheres blend correctly: .. image:: img/texscreen_demo2.png +In 3D, there is less flexibility to solve this particular issue because the +``SCREEN_TEXTURE`` is only captured once. Be careful when using +``SCREEN_TEXTURE`` in 3D as it won't capture transparent objects and may capture +some opaque objects that are in front of the object. + +You can reproduce the back-buffer logic in 3D by creating a :ref:`Viewport ` +with a camera in the same position as your object, and then use the +:ref:`Viewport's ` texture instead of ``SCREEN_TEXTURE``. + Back-buffer logic ~~~~~~~~~~~~~~~~~ So, to make it clearer, here's how the backbuffer copying logic works in Godot: -- If a node uses the SCREEN_TEXTURE, the entire screen is copied to the +- If a node uses the ``SCREEN_TEXTURE``, the entire screen is copied to the back buffer before drawing that node. This only happens the first time; subsequent nodes do not trigger this. - If a BackBufferCopy node was processed before the situation in the - point above (even if SCREEN_TEXTURE was not used), the behavior + point above (even if ``SCREEN_TEXTURE`` was not used), the behavior described in the point above does not happen. In other words, - automatic copying of the entire screen only happens if SCREEN_TEXTURE is + automatic copying of the entire screen only happens if ``SCREEN_TEXTURE`` is used in a node for the first time and no BackBufferCopy node (not disabled) was found before in tree-order. - BackBufferCopy can copy either the entire screen or a region. If set @@ -117,14 +130,14 @@ Godot: not in the region copied, the result of that read is undefined (most likely garbage from previous frames). In other words, it's possible to use BackBufferCopy to copy back a region of the screen - and then use SCREEN_TEXTURE on a different region. Avoid this behavior! + and then use ``SCREEN_TEXTURE`` on a different region. Avoid this behavior! DEPTH_TEXTURE ~~~~~~~~~~~~~ For 3D Shaders, it's also possible to access the screen depth buffer. For this, -the DEPTH_TEXTURE built-in is used. This texture is not linear; it must be +the ``DEPTH_TEXTURE`` built-in is used. This texture is not linear; it must be converted via the inverse projection matrix. The following code retrieves the 3D position below the pixel being drawn: From 01d5ec63b8fd1fc55c2df0ce54bf9ea1e97c08bb Mon Sep 17 00:00:00 2001 From: Jonas Mun <36166368+JonasMun@users.noreply.github.com> Date: Sun, 21 Jun 2020 08:23:40 -0500 Subject: [PATCH 37/39] Fix incorrect class name in in GDNative C example image (#3714) Co-authored-by: Jonas --- .../plugins/gdnative/gdnative-c-example.rst | 6 ++++++ .../gdnative/img/nativescript_library.png | Bin 11443 -> 30167 bytes 2 files changed, 6 insertions(+) diff --git a/tutorials/plugins/gdnative/gdnative-c-example.rst b/tutorials/plugins/gdnative/gdnative-c-example.rst index 2807cdce4..bd4863e8a 100644 --- a/tutorials/plugins/gdnative/gdnative-c-example.rst +++ b/tutorials/plugins/gdnative/gdnative-c-example.rst @@ -510,6 +510,12 @@ select our ``.gdnlib`` file by clicking on *Library* and selecting *Load*: .. image:: img/nativescript_library.png +.. note:: + + The *Class Name* must have the same spelling as the one given in ``godot_nativescript_init`` + when registering the class. + + Finally, click on the save icon and save this as ``bin/simple.gdns``: .. image:: img/save_gdns.gif diff --git a/tutorials/plugins/gdnative/img/nativescript_library.png b/tutorials/plugins/gdnative/img/nativescript_library.png index fccf86460de72ecf85475d9088cc02987b7cb359..b46e930da186f5df644c9b445dd5bb6c07034981 100644 GIT binary patch literal 30167 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

n8%a-@>E1O3AugR$tt!aE<9 z>Kh7S5#P1FH6hRow?N&OOC|R+0VbEvPrDaL+Vq9hq#qwJBPKW;~XkBY@pneVn0^QW*~LC78#VYGWdu zw6>$;omt(a%21$y>S&mtYz^VbDd?G=R{J=K!H)Ym)#=}TD7AvlKSsgaKXf{nru`VY zk@DxypI{_ZEC<*jMLMO+RgVF5kle-r6S5|DEP8@YQiy{?BG?}A1%P3IdMa`ZWd%?k zqkurHax@#{=@Rm{WX46?lfNT+bZ@u9u0Iebo13+;zCOK&qpmGfR>?sb_3`7?gM)!9 zbYGI>7_jD{v%^hM#r)Q19AL!&taa*qA{nWHlNF*VE z6SvOy)1G4{uExLphw%^pXVmW)J%9bWYwrlH(Fq9+u8D$3N89d$<4SJ5zzZ-)m}4~? zyaRt?bPWwj2=uc5hS6+&pOu85&}%-(L`1rx<^w2DZ=fNzf@%oRsp1%tRi$+OgfB`GBeJ zYL&uDTdJZa+mepZ&4pVZ-Z`+O@_1<+ogn9%IfhEhwr|!&pbjD(N|tEl6JN_?I|>Y{ zL-#Ys{&)Ds2}a}KU-*{%KjB-`MQ}+#04Q06g>gZ^N-zGufZYGM@DJ+yPt5x#tUbWM i|L4O0`W|Z!m`6B1g_LFc#OcFnmf|8Z!iAr-z5fsR`Py#) literal 11443 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 From fc6d5ae8911fff28cd16af1fb8db5284772afc2b Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 22 Jun 2020 11:01:29 +0200 Subject: [PATCH 38/39] Add a page describing Godot's release policy (#3662) --- about/img/eol.png | Bin 0 -> 435 bytes about/img/partial.png | Bin 0 -> 435 bytes about/img/supported.png | Bin 0 -> 435 bytes about/img/unstable.png | Bin 0 -> 374 bytes about/index.rst | 1 + about/release_policy.rst | 84 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 85 insertions(+) create mode 100644 about/img/eol.png create mode 100644 about/img/partial.png create mode 100644 about/img/supported.png create mode 100644 about/img/unstable.png create mode 100644 about/release_policy.rst diff --git a/about/img/eol.png b/about/img/eol.png new file mode 100644 index 0000000000000000000000000000000000000000..ad9cb36e39a904aa08477b363da7f7d73ac8a1a5 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMpGmw;6C|3leSkfJR9T^xl_H+M9WCilq1^9%x zZZq}VYT~)Z&~clI$2N2C9p*mU&AhjndC!-(-(lvn-P~u3me*D@@0kq7+s%Bofkn2P z`s_6Gs%Nm@YU&A80McdZxmM40vx#>o0|U^6Z3Z4dai9%Aa)+@u(EKeXK=lkj?LfsK zEv6uHi;?#>kafOWjXbv+du{~_ZZq@PX6glWz+x2-pcbHMTTHz`=2-Xw4Q%PzX$hpP zN`m}?vz#R~{r2w)V_UsLD2`=G@78!9W~+URT?Lhxwg@yc9?)`#VqRpq-))ilTo+^A zviaOa^SGG~2^~JdAQ1C?HPDnSPZ!4!4q4lSp+biZL|6{;8XH@kk-1$}{J&duDSv6V z!v@><{?%+9Khw%PW_^`GYZGg$^y~J^YS2cL1F7^&f{kl&mI#5l0eyG7v+Hr2s(N}?$8m56Q|@F zq8Lt}l|OnKq-9nc15nwSa}q$ku3-#7l|UQLUz7$ij+~MMnhcapYXFIZ5y-R?r)0ov z>9gnMkDZYLnsW%`44?uaS7Fy0KA?J_X+Uw1;`1N_-)w&30i>)-g8YKBB*HYESMS=- z<|nix&S&w~eXfE^%<)!BSb7DvFf}u39f)#R#B90WZISw1V;9{r?)gRYxS0+K9X`S! zb#>1lpeb3NE{-7_vbG09g$^5tupHzyHnut=bGxeef4AyV{?cxT4c7PjE=n9J*=xJT z?W@)+{(0@Tad02PE8ZUj^ivBNBI zn^DkKV~7cXV5}W?XUov8DeRC07zMt1o;I!vq@;~U%e|V%TH)W+!B`F zeXj9Jf?Jt=tQIo~Y+-CZpyd#?h}m+#+amS3F2=fL^SO(-=P?};I(&rTOYEhOKvS|j zT^vI=WNi|xA&jf59F=#ba4!kxSX7DfHi66@|EX{X1+A@UOkId z%Oo}->PnBR@%QsK2H7Wjc4Rs^EX;W}^W*02XRMeSjmyuR$x2I}vCgE}(1(L3{QQNK z885Ah7-o7Z~zUkqaiHjbbNlQ5>x%aOS4^NM= zZu+^owHePI&TMadvPhEen~%bBW8dp@BTbU;o%wnB^fKw=MhE|1IcXcq!Ld^^gN=b{ zentm}-8Lzpt5r)}BT7;dOH!?pi&B9UgOP!efv$m>u7O2}p^25DnU%4rwtFVdQ&MBb@0L3_lMF0Q* literal 0 HcmV?d00001 diff --git a/about/index.rst b/about/index.rst index 355c022b6..4ebbb2f51 100644 --- a/about/index.rst +++ b/about/index.rst @@ -8,6 +8,7 @@ About introduction faq docs_changelog + release_policy .. history .. authors diff --git a/about/release_policy.rst b/about/release_policy.rst new file mode 100644 index 000000000..d30a86930 --- /dev/null +++ b/about/release_policy.rst @@ -0,0 +1,84 @@ +.. _doc_release_policy: + +Godot release policy +==================== + +Godot versioning +---------------- + +Godot uses ``major.minor.patch`` version numbering. However, it does not +strictly follow `Semantic Versioning `__. This means that +releases considered "semver-minor" by that standard (such as 3.1 -> 3.2) will +most likely introduce breaking changes. Still, there won't be as many breaking +changes as a "semver-major" version bump such as 3.2 -> 4.0. + +In the interest of stability and usability, patch releases may occasionally +introduce small breaking changes as well. When repackaging Godot projects (e.g. +in a Flatpak), make sure to always use the same patch version as the one used to +initially export the project. + +.. note:: + + The first release in a major/minor release series doesn't end with a + trailing zero. For example, the first release in the 3.2 series is ``3.2``, + not ``3.2.0``. + +Release support timeline +------------------------ + +Godot versions are supported for a certain amount of time. While these durations +are not set in stone, here's a table with the expected level of support +for each Godot version: + ++-------------+-------------------+--------------------------------------------------------------------------+ +| **Version** | **Release date** | **Support level** | ++-------------+-------------------+--------------------------------------------------------------------------+ +| Godot 4.0 | ~2021 (see below) | |unstable| *Current focus of development (unstable).* | ++-------------+-------------------+--------------------------------------------------------------------------+ +| Godot 3.2 | January 2020 | |supported| Backwards-compatible new features (backported from the | +| | | ``master`` branch) as well as bug, security, and platform support fixes. | ++-------------+-------------------+--------------------------------------------------------------------------+ +| Godot 3.1 | March 2019 | |partial| Only critical, security and platform support fixes. | ++-------------+-------------------+--------------------------------------------------------------------------+ +| Godot 3.0 | January 2018 | |partial| Only critical, security and platform support fixes. | ++-------------+-------------------+--------------------------------------------------------------------------+ +| Godot 2.1 | July 2016 | |partial| Only critical, security and platform support fixes. | ++-------------+-------------------+--------------------------------------------------------------------------+ +| Godot 2.0 | February 2016 | |eol| No longer supported. | ++-------------+-------------------+--------------------------------------------------------------------------+ +| Godot 1.1 | May 2015 | |eol| No longer supported. | ++-------------+-------------------+--------------------------------------------------------------------------+ +| Godot 1.0 | December 2014 | |eol| No longer supported. | ++-------------+-------------------+--------------------------------------------------------------------------+ + +.. |supported| image:: img/supported.png +.. |partial| image:: img/partial.png +.. |eol| image:: img/eol.png +.. |unstable| image:: img/unstable.png + +**Legend:** +|supported| Full support - +|partial| Partial support - +|eol| No support (end of life) - +|unstable| Development version + +Pre-release Godot versions aren't intended to be used in production and are +provided on a best-effort basis. + +When is the next release out? +----------------------------- + +While Godot contributors aren't working under any deadlines, there's usually a +major or minor Godot release made available every year. Following this trend, +this means Godot 4.0 will most likely be released in **2021**. + +Patch releases are made available more frequently, typically every 2-6 months +while a release is fully supported. Partially supported releases will only have +new patch releases once an important security or platform support fix has been +merged. + +.. seealso:: + + The `roadmap `__ repository + documents features that have been agreed upon and may be implemented in future + Godot releases. From ed3a146befef99461abd22bf7f6c38690760a2fc Mon Sep 17 00:00:00 2001 From: Shai Angress Date: Mon, 22 Jun 2020 12:04:05 +0300 Subject: [PATCH 39/39] Clarify build instructions for Android (#3315) --- development/compiling/compiling_for_android.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/development/compiling/compiling_for_android.rst b/development/compiling/compiling_for_android.rst index 24f1c777d..a2b6174d7 100644 --- a/development/compiling/compiling_for_android.rst +++ b/development/compiling/compiling_for_android.rst @@ -83,8 +83,8 @@ As Google will require all APKs to include ARMv8 (64-bit) libraries starting from August 2019, the commands below will build an APK containing both ARMv7 and ARMv8 libraries. -Compiling the standard export templates is done by calling SCons with -the following arguments: +Compiling the standard export templates is done by calling SCons from the Godot +root directory with the following arguments: - Release template (used when exporting with **Debugging Enabled** unchecked)