From d8c09790f9f7d6f18b62880a9aa0deb45487c079 Mon Sep 17 00:00:00 2001 From: Carter Anderson Date: Wed, 6 Jan 2021 13:34:38 -0800 Subject: [PATCH 1/2] N17: Bevy Engine --- content/posts/newsletter-017/bevy_logo.png | Bin 0 -> 13762 bytes content/posts/newsletter-017/index.md | 136 +++++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 content/posts/newsletter-017/bevy_logo.png diff --git a/content/posts/newsletter-017/bevy_logo.png b/content/posts/newsletter-017/bevy_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..22508c73cf13ec8b3b65afaafc314b59533c68a0 GIT binary patch literal 13762 zcmc(Gg7w;g_NJ%KAD1ssl0@5Xd(jrpQjg)jF-AH!}f*^=ANXHl;Al)V10wR6a zKHt56!+oCPQJ9&%-@V@TuJwyGp~{Mnui#VTqfn?TaV^DB7ZP6)Q2qKm)9L1X*fQ!HFb0`cx{4madBa{u(5J5GO#mYw|#Avwk1rB zLfu5kNlU1?rf*KU>BKJ{i|zFCw14XPbpH}V$ffq&*;s_{9 zht@OSqnM+;KMJE+D@wZMd*TPX+4#w^$aOR>lO}Xx7>{1pUphLI;1PRkop@qES$ep> zxW2N}eV~JWYnACyXG3%;EG#T`cxXtZ!(PWHb9oW<8|8_r#dv$kj{MJg0Ewh5b1{}O zRyLtH1KNHS#qE~aY;0@mBlzG!)ssRRhZ4-cn-eu=Qc~@gP|q+3F>V@o5liASbl?wR z3iR6R=y-XZRhN{M2(kKCu&m_n?Ch)x_cmX?N$DG+qJzAT(!w=UjGZi$?_GZWCRR%t zb>E=h&%nSy5u({`)GY;tAQDO3Rlia@+8P!%HftRDyBji8j&(Zpo%WMH7!jO&*bJ~l zYI|Cj)a9f6)z#IcNVn$EKK_obuJMP0g5F>4C)H7n5q0;Fw`t*`c9OQH8ie*YCk}u2 zr13up`ZAWyygxgu?-MHhIb-=KnD9vq+>jwips3$G^J{l^_rT#5cjSiWH_`Sd7_Kx4 z)X0?x?UNR2zgbvVd^^@D8L@=dMS~V<^Rf*UaTx*}6X}I}vv3IrJfyS2g*+vRiHUuZ zmyh%?1d`ML_v!q3H}BUnGF|0=*)40bFCKP#6Z#Si48mtg3`6jv77Qn7ylpG8ad2=> zCdS6@ya^h^gO{Evf89IHj);gj9c~(3qji7vsw6}D))*1X609gBe`ij>MreHW_4Hb} zqN3vVp76!HYztB(#>#J|>Yb$Q?RRe+`s8%J^>B4{)yrItlL-ERJZoa%TyM_dU;)Rp z*zcda!p#_J-T&Rq1V`6*EeZ92*`+$D`+}vDTl}{gqW7L8!uaYRd8J7#YcaOuu zrx(Llhy8FtV2d(BKrsPXj%glcc<1?xGF`So(HssGg#+>g;~_(q2UlCNq_%FwnAf}Q zA$t%KQ*a5zZ{Bxv`NM|~9@+m3pOu=nrsnFs52dB_|2HmGuj8NObKOE=_GBQBB^iOX zpG1+O>gulkcM-YYw=$QDvaiBjh85T^&6;ho{<%c2 z8JzsxR4!7xWP)5?O|8#bM_!&#y+i}U*48#|{`cad!O(~2vI+_&@z)`ciG|q{cgr;* zsB~R1_Lh1u(f0C&e7wA~6}_VEa70r&ZU>OGMb&E8*lec=;k6|;Hj11d`dm;wd#`As z-i;y7NXEd#gncUp_uIE`C~7f*ug2W2Zf>nZLlp2k%PMN>$e=MV*l@>)%s%Ugj0`%_ z{68m)c=ObY?T_~@JdYNWYTfn<>IUF3(xj!f_>6bwJCj8`s#Uhx?%r+L zT|nEP9Xkm;eAwF46RD{S>uGd9Xxm>M$mutK8ynlk%Eu7!R;H48N`{b{7gtH_tWstB z>}WY__ZxGT_(ye2^K>eo`B3Ja)4kpbc~WO*XV@)qdfiTknXsK2kP9;gD?~a@w%n)P8<;qFI24>NDr9wVS)NR~ta`YpDNf z{gvd04os(KXOZsP(~TYzIx$TS%Zl$}dLrWtzGfmcxlf%D%|JH}3lQ+_$PLU6K`<7&XW9%vh z1_mx6p|rR-%G1;HCS`ca^wW>(3(#Gl3`@(%V8_PA#bjhCXk+88<`!ma*A*7t-CyZ% zUpYKEIjK47n5-~U%3GK&D=8tg{j!T~X=RntS$UZj&2a11rSkIfYr?La?uT2}gM-0b zuqgL~wLslQ_qmwI^ca1$8Jr9Z7>}c9TaWgZ(-iVQHMwYLTsuD8Cg$MasI9B3st@c> z|4>}KyNkZz@(+WVmzTUfnD{XqnM;_MP}?vSv@{xH?(2+Xcq}X|*~)j{W@bhO1YAxRbo!nhLtCU4#%0u{ zKl;hw?T4`*wM)mNouOExjJe_Nk(xJpk|OC%ZYxy!S!@>RMW1A|8Kdm$Q6= zREvzs23lJ&c+7rw_+b$^4qzp2Y}U+lLDFk~`Dsrp6HOl(NI)gYp0rN!6iNw_iq+N= z-P}VAF|wQ%zZm7y_^v?6+?$b&((^fc@ONWuU<*e$MmC_%Vc8H)(%Wyw?wz7;e;D~* zjryLRdN%HHC91J>R$2^jntUg}jD@v&Kp!dN4?AFVc6?A+SV$ruwFjqlakxa&KRNkY zoZ;!;3EO`o&F4cK!Gmz7cfQ{*OHQSC%|th!A8?!=ua_~QKa-2N@3*WC6_b*Y8E&cV z=c*QcGC~u1o@~}IMZR_1o~E-JE|IXa<80puaN3%D_~ra~y+=1ZEUfLb$qy1zQUkT_ z_;~U!M@wmUIXKK>a&@r@ulXKMdl2jD>dK&NU3YJtpC2~YXpN?)r|)bvY|rNe({l^h zz=4_e*cM3_a{0M3DLB8p99-6XPOVxrSa^7!9RJJlTJhJO9+UJG6XfhPU7UODuMPe9 zE$}3t?7d=!q=Lc~NXqEGKIJ&0Kf=)utcLYxn!J#Q@%Hu}t+a@HE}Su~l%uTQllnlw z<8Mjp_QBu3T}wS_bE~WO#7*0Z%F57#MbA{8KgUA3p6;S|kr@3xAe57nb3GV(A!Oay z21&-{b?g|o@b29^{jtv`Ju<(AMMTP-H?`tKvp)=3mgv-x;o;#iEsv(&d77yIE%pvm zXRXUNeWv%ZMSOfb=lAb_l#Q<6=eL~}uC1?6rA7DmlfJH_jfsh262UUx6^?dVA2xu} zQ$GT=6^??Aj?V1Lig|*_%!^VTi$1&ecVeF8Ula2dhGz6OJ$-VG_o>y!#>URJ&jk&% zv`c1RGc{OcEG=2KChPn|uQJacjOdwt?rQDrC8nUDsC7SJ@n;qK3zd`Sh-7tP!T-w_ zVPi8hO!LV<_3#VNBOGc$r#MGyxIBtHz?!fo^2hRe5hx$#|P`O za&rA5a+eiKA42nZkjj$4^-6hfL$BV~_5rtozLMaJ6<&Re%{+e7L*yEtAm znrjREx0s}-{Ne?gck2wI5~m{Y5$`I~Y+sHP$~Q^ZJ#@@R8>&O|#o4w-z2m)s&SVu8 zm7TpkBeM0m;2T}85Xs(TE~B7ng4cp+&Q)b>$(#n4pkepVInko$pw?{%Le2g6&;<)c?;hIG1+J2R8&Tb z-xHwX2gowEZH!f1IYt}V+D6Z{2j6C4!EbQhY^$;wx!gT$7Znw?r1+)?Hu08-2wn5( zpQmXf`&(0KtA8Ik^kqKHhF-lp|0sg?VXWpxf8OJTni+2+%CZL#H~9rQMlwiF$s)D+ zmN%HLf5*(y9`JAv&3A^|&$eJN+`4s( zdo{dBz@nmmyb9mi`=^xYVitK$^Q0?-lw4{fF?4wWmZZS z7DZc!9)C9swE8gg;b4xI8wGz;TD{7wXdK^v!MvY}hc=)jdy4FRby&kDi+PyXREUlYGdjs;%ClqN1Rq;@aBg_M)l}31hS_bTg|9_!b`zR6k{};zrrVmlPCi)-FbN+FK7($(8r!K; z>~nFBYB`;y0H}(-;qzr+yvX?xoR0p-H>?k=y7>NlVoXU%={fJNH_CY%UV@wqVN*!5 z@R4fUnV+Ykd&|B2tL1anwL&;^ZuMlH1CDm}t5)cVyF)MZsv4APKl(|HBGqf4@n_=v>CqmWw=Xjj z6L%vH+TM@w3TB&d&inlQD%X!WIT&K+|8DPji0pP;l@T#{EF**e>+8zST)Q8ghB2Nw zQ6nZg`o`nu&ncF=Q~VjEg8KSwX(|<75YY(++<#H(SUUt5QE0T*KChJPXQRjA+k}L` z{HICP^$OpA{2(|#Kktrqd_a}(Bv488=yGRgr}AC$yKHQaUcRKGrlwYY_6#%Ip8nUj zZ+OrkaEXYzzQ)|{FVhoiZNkaR&3(1Dn*Z+I<>D7*HoNtbIV~ANF3C1})ZE4)rJ4ly zp>N7BA6IGJUqO*jQ3ZE~Q}NKb?eFbLy?VtOMK5C6cM{+#h;#EFrIbV7+8{=xOrFrJ z!TISC!mRn{Ls*0a@577eXAU(6BgRvNNbRaK4F*xs05ScriK zij5^xQ&U?Bd)QYi*icxA8yXt=4{Gf0d^pE^(fdrYjX^yv@prj-=r?1Zs8d;cG^Sd;6DF{|7Vzb~oMsZiG(M*e<|^UgI&9PaA#z zqzjEUg3EVrZLY3{ih3R2ynjDjQ=Y*c1$~$Qq|dcE%ljCw!mQWS{hzX|EN;*hnu5a| z@!OB1$c+2I1F}uC1@zZ;W!$3ON%3QU)%?2d#!6RN8QBusdu)pgTi|%4(#v z6RJI@VMhp`kg}V*dv*PIHIxbKuERfn+U}Qq@q71@z zCje_smn|L7{r<;vL`P#RP{{y$UozKG*3i|RUULF&piyZ~>gnYL;G2Ym#Mdm-4O>D& z!hObUW3=3LH9u)~bF+ul$0`=`6OfYWZoufC)i({7o3xzzs0!wDKxRu0f2bp|lQ{IY zcIrVq@C2MFzkP*QG~dPe&+l*DR9;I8o;;1u+R)u6YGK^#$qhlryLm1;L zGa%OqZg}os0K^W4!ot1%&NMVPFAu7<#*T1wme0B74lxgiF>out_wV0lAC~j73dNUu z->SeaQQ9-&ie^uEf^}r)4g|x$RLtWqtLn37DNCF-leK)k?j(j>lRoErS?muapI|j! zrJ$sok5dwDMF>p~{|v7X)_2OrfAisQpXAqi9I{8<5M%#$MoUM>Wi`y&x@~mtoodmv z714f9@9Bq+{Vt1DO@99V3g^n#DJVKUMWn2)*;G|k3B70FJSJ0017hvY5^L^U2l^5c z8fxHt10~?JM!rYPm>7j$e;t@DlmVRe;g3>sa-nqtq!BeW{FxqG4^fc>zXgqO#LdkM zZx;Kr^+OFbFhiRzTLAk_VqF1&v?q$}0R`HgDNE>PhjUd&M+aqO`o8_<_=BaqYXb!e zR^`2C&`VAJHWKnGKJwb_r0Sm6B!JMq0|gMkDK&#WU39$~!%_Iw$T33|e|IkL7^!1Lnl(Dm$KWOt{X znBZ5|m};o>Ed<=bXEil7{pep7f}E3{9s&3o&zbls9HmIWrqvSxXp$>eu8cN%@W*Kk zhd4>xfL_zD{S!nJQhNHIyf?BJLmh%@oz^Ld=!L&>(&+z8e`x3IjEzEo5s*@SN^RiH zK+H`kdsCI)3j{&#LI;RIq=CUg6~9W3N*M+Q1|&Al+tbKGrKP1gr>wLzG(v!qGBPoZ zJ01#v<|d!Yix(|+E-+APBjmh6QhBFX{o?!#Yi31pzE4D=p0?P|{GiBupHc+O#o>d@%vJvO-fhYQr6 zKWE_LidoGq0TglVc^{O>URE47N{89}{QS{+r~A5|yN|H1KS%|545#P~WCC}%CP*UI z6V+VdX4Zw-X*W4JNgS5CTi?mWAb4pOY#X;K;6KAGEn)Tm3$lY9f)zPdFNtUHcbs!`nhyM4{QmPPz1dwSE38%6T zAx;GziF9;ySG>oG2ndWsf4KnBDF}{*T;!hV>iQ1Ck`0v%&x zqNaCk}euvD?EJ^;G$$9y0jb-&z#)c+@744pdjqYCNCP4)>Osz#zsVT_RR=7Atid?+uHxHR#)jp|V{+D7ySux7Y_5~_ zPQ{(_p>!hdl|QOntqCah)ukUlHiBZU@!41|>6l^kdcD&+cGLn$$m2SZAC&JZ>**1f zYfKuHZvnWMiJ}et`t>WjOJ+?IgdJ(zNWJA~+*eJyHpb~}xdcT-KNSsV{-BNPLg(A(9PRLn*ywYMx@v$;U12T=#2g3DDST6zcJ{xab zTY!7lII~&PA-2&C!y5j6=#8h~CQWARq+8F4_jZM*-SzZI^6f?;u z`@-r5nOuk_Ywbao&IA!jlO9O&HEv_shLI5ITT3{faUV`jtEsC~I&V#m-8-zG0kZq* z9M@9H>BvviW>NsbS1UusNp;Uw$q4VQblDIS5)y8x;>;!ktG@&oc!)0EfWS4Af0ZQr z=XBHXd!-u%LgpZ%CCB=O^xU`C+qJ;dT6*zem3zs`P->&+i0@In=B_U&s)?2=$%Kz-2uetO>d40 zdK)o^CHeQ&d(Vs1y0vSajR9QC(=3gKv1|8Hv1<6f(DO>DZ*=0`EK-up!rWe3G94Vw zFSUez#aFIeT3wweXZ35w=ORObFA}VTaS^fvCkZjIm2%cmGy|kjoazSJwlraQ4aMn-B#!4v!u^3U00(AkHv2`m`$tLJFA$CE_gL=KZM3O9{MwMm4^oe9BXC>Wi#Jv^a-UVRs^`gJW9ZE9N)3xZ@ zYVxsJAWabm#nhAu!0=@%Dk?({+79?Q=48{~iWQXRR@ z$!^#pXJJKFvl-z$yq5jfWpOuKKo&aW)l?B{|43l)~&GyfSlgzJNy-ou4Y$@dq3 zBpLmBC%2@S_oD$270dnm(DlaIR)Xk1_o?5$nYnCz-Vy}4JqIOC-U#1*E$P9B!a|6# z$Axe`Sc(Igc<3lP9__fK0&u=|pqlYSrhrBFg{_S3^O0YZ>#kvU3J-eHf<)ZqPh4|z zv&z&zotH1QyTijf=lO_R%+1X?h2`#7n)T8b>}r(NSDUiFXaGg3R?{{R^fxY%up`iL zyA4w;M@nDHFL;60$agW9j+K@vck{2Od- zWo_;74N(ii^?5L;K;?a-sr5cJl^Osam(?5#StwY|xg&=qAB(}m z0JAA&vp+gCw4cH;kzl^iiW=ipZMK<-$s81TP8Vuy6_y0V|FD@>WF%WvBuxWdo8EO6 zOe^y*5UyNMFhD}3+aewj)l3_2ExYd&YuNbw+tgGB{&AM~#hHsKmRCmz>A&WS6EOg| zruSQiEUU&|)Li|czvr+rET7kZ^Y(2_L@WahrQC5<6*2Hw2ojtdRGYoe#$URX(mk9L z`1#w~%+Hjk%md)$ur27>GEKbnp9J(D>_@fdU3dj5LU^Y_ed6GiGsSXQ#3g;HH?_bAc z|GC5FX)a_>oW~)MsU<3!C>s7KH+hzop3Rx&tg+@Q5Pl4SXUQ8TBqTU#5jz61my)5kPU7#ajpom5Gl^aG1-oL*MB^hwas(m%Em2N}LR9|0IclyIP zi|*s&WA+LuaXqNwva+(UUu?9(t|U%QPD_gZ8n`Sg>RT)QdC++L>jumRptE2BN#@`v zb5=@MEgq^j=mASLE_fpC5BMMTGb5_59v((8Ss;H=>f4pMKFs-NU<|bO?hHvD;ofyo z)~lCBcUTTfjo|m|_(Sq-vpF4`@B)l$4UUVmP-kd+cf97^S4Q zncxXTwF93me>KJpeqe^1XU=&hC5LW=W`!vpSp(aQ_X(R~xLLXc%; z%+2q@q(n+bczAd_n7_%}ES&MGMIGPbn0rz&%Y|X&1KfMxPI3p3Y5_D}6YezvqYNZj zn*%{e7hsPIkRx`lU;io&uGRV|V_|Xc%a<>Nf^t2-4xd|1TuRf{)y>?J7S`sn9K36a zB?1{l#i48Ly-}3oeRlAoBEv(GHOb^6{w<)kv!y+OG zp*(`){;r*v5okChn7E1xDY&q+(6Qm}>q9C(V_hz3#6njXn`F2KY|ogQgPr|n3D(QJ z{ysY)3knKHnpSs)lyb#P;Ub|kXi=Kh^p^HZ-PhAay{N?(>@(;NO3I3h+s7)*oX*C8 z1K7d1hp~xC4ycj!M`P7t9*-Rc-|cSipJTIBD^D)Ieh3a`vRC2BLbRB&ni}I*KWQ%= zPjl+9ifH|{S7pKg=U3s_Qa89f_QL*dvi5LU~1UL%VmZ}$%-ncPi zX=|UktfHnCkehq!T|q%xPtTRDtt~JPf{TlbOAqdc-|!tCeLX?~EY8Y4TjBZhgp|() zXfW(S*g<5XI9CWt2<%_%ou|niJml8TZ(9TJ!~|5<2by`slCq{|DF3u8Ccq{z7~5ey zNUL!RdSJc56yTjktqLY)=5;S+S->?Qc3#%(w;|~K$OdUW+T`UCK4P8U8c|$)zrv4* zH&de7ZmvyHyRh&%tQSlN$2E~iiDx=X5|JjaT0k1;sb48>YNEGoJfM8-;J}dZWOwkH zQq@0+_Zf#14K5r2BJ}n38??tNZKl6iaG5bAB_xa)tANaaC^T0mzhP=_*0>G@wumZ8_f7>0@$`UoNAx+lzP3aVhhAch*%>~QK%Ll*+OQz?aZ&d`=1|lHh9yn0cDtr7A(gq8EFBt?C zefkO!Ag1aS*GdZtx>!VAN2#H7m4IL5y4`q4INsD5tM#!dUy))G)BY89);OEeR8w(7Xog)iaP-t7~uIj~nS*zmdsnO?_YmDoPGt*|(maPEhg% zx$YZGHuL!g!ufVt!^s4>QL88Cp>VHu_gAeKl2}tuB7r~x>9ca6sOtk?Was>38*x2h zvMO1~#ioM65vFrMSeZT9Zhj2LD>(0*aLmBcT%%|%Ec|-w#h*+8`!=S`U&S9j>MOT+ycH?D(GalKYHxju<5103o;R#^jBnt(y2Se|&cXaFk zsId$8PTOpWfr@k5dvQt(Rtiitasq{z($&jX4F#Tpg@}pn?t(C#20;O0g;=VM^H#jn z;dE<@ZuHw<_J{_s)HB$i(;|}6{uZzEza0ZcW@du)1iJv?JDXsKg5Uo^f47RycKVf* zHpi;Q$WJr~BAOR61MG&szs6`(zq*d}{fb2((4Sr}K7m6jaVtiD`iol#Oma*$xFDw* zREjnAT2Q8L2?}a$OO__2q=W*|!iy2*nVz2hw~`mlYS@t71Xk28P!dC!xWHC2admfx z;@;#N9UUz`hL;BpSU43&7mSo*H2`4{N9GBGnVf*A=){~^&l10> ze2rsL_*_rSyCjY^g%6Nu7G}TrJsQ5jB#`G$D~>Wt0+h(MFK&BaZTUmi+-7Ee?2-ZW z;P>l?FuHZ6=`jp~MA1Gpq!9ap%vXV@hDAWxGB7YOxmsBSW*1~<3-ASGCMj# zHUxU9esadA^OKni=kM_nptgyg?npJhkKcFt^IOgnra|0oCn|YML^qTrMu;gK2`DKj z0w0A_8bBj9?STiB;J;C7T{^$G82I_~XVVh}5n*8xGO|k`SmjZz-C<)-AI%mB z`UkTdLYtXDQ^7gMSnACxvobf1039SY8_MjmUGLt>=EU zbICr_Wk zG+HF=S)9ymd6>O|6b_HM{WurMw|mC^3s7SR2i4#*v(O1Yr38s8$mOdN(g~7-DN~EveP0eFaHep!9etTL3@v}dDA^{5m$l5z*2TZ74BrquDiqHf&gK7J#nF&AzJOLMu z);XAkmny+vfvBh`lsz2Kce;!xbmZjlz-;_zSU9B&ARMqKvdzed8Y~>#e;E5+86RBB ztFNbq!i6}f1_lg3RH2Cm!+_aJRPUX{zy*PS|Ngb0(KygBK$Z@IX&WdOko;h3V+2aV ze+FA>p;sW>GOewxFedQ`tkSr^+pN4Wya|FQf_WT0TmbfiCP_RMcWvEB3&y7Gz~V?_ zT{f zg)Ow=+~@!a2|;KM?+3d-YS-8S3tX_%p-Fn*IHlLr8d9TMC;hkzk~ zQxYo!_+$V8PB^AFxw*-J27msV&;mdhL2fZfFh;4OO|n z^!65ovA@~nWgJlPktr(PNnPN9V0X;}EV#?g&L>C&6QqCpa|JN#K-EIjHn7n^GE#D$`QyxLU<^91}ySSM`ko6n!QCmURpKGBcE z5OZoCvm>Sg%!KBK*EyfO0C)>bP5)1yGkgS}fIvk<Q>(|_f+Z_|rpZ_A_s-*0TM_5zhOPROJVAjXd^262$NZ`p;2aGW0-dLDTBfH|9 zswLc;mz|A5%mD}+ME))4|C5uG>=V9$@ZEz6cw5NO!%=9$pztHc|Gj(tXWK~WULR(g z{Ngt7s<9Bpd^K)pE!x~H*B}Ia15{&RZ9tJ*zI~G$@qNUSuvYB`lIrSG1&k`IKq!G& z#wR5qV08Z-%+m&3cbDXUtMw748!N~6Lg8|wOfhv=|C{|@E&OjboX;0u5XOBCG5>%4 zD2=l0$+-OA1iI?&OUefScLF{3HL33t2Qvv|W<5?V1ob;jhyb=GAem7QzRnT!{|4B( zrBVM|_%NH)<(p%Zn*R;0y9)O*ho@&`EMOFNXAmOSj!@Np{@h6s=9<)c_DGA}TE$4jpN?~4YOF|zx&cg!SuK~cuB z8!Wl^zh4IfmC?fG6-zhqPl-kDgM3%uME>xkpe#5r@D9eczN7!WlSH^z@B7!U*KmDt zQpIxignP^Ql(hc4-(|G@joDs9B3>U!9O|rJ(HJ3{-S3da8NQ8!uYHu8tM)xQeAyB% zooj+x6XLm#1YzYPMhiFZy(QGmri%}tyWfI(fQPov6S~jy-^-h4`}_M@TRywz3@&Vt z)}sa}qrjd}BsSOrF`1d7L?8E~>U_Swe45v9PKi-_-~7L|^uNGB+eha`%Gg;`I2xOp zF6|0m;P&o4X;p=pb;%IX?~iWv$5&QX`c<==S7c*~%gD%l&|uBP6pV~SB1c8hyT=1F z1kUA+;UHC^>^8@%@=#2d?wTbagYlC4s(AYD@a2%*DE3!YDmnzv1Tft)#ZcM7_fn8> zN^=Clmmpq0R$9`c6V0)LV{r$*B=QJTz|heW2~|HDFLN1ZRlEC*`rn+I$2rPs2b&Wv z9zX?f#UpaIk*_JpHmqTICTC`z%Y&UO@odVSxNb&?J?Y28s0q}pfsqjs0qJE%v^_^b ze*R0Yr5^as&F0DC>mwst^ckjjd}ujD_igFjz~v)i9&T>ug(m0HAkM1n_4%)he=KOx zY*I!p52?eDTa6cB+Yz>y!4@^Q1xS{5e#l-A2nrGfuazE$^Gb^{il}58$zBZx3SS4* zyldu6Ce)8!Zh<|&>A`FX|8(Frk5SjayO4ZzD+U0m7>XTbj7ksqA_l?w_06)c*5!-e yLak?{OdQ5dDMqrFj?T_eN>84Apj_*^Al6ylRo?z+;sM{kLdiW+lrELj_xnF`O2?f5 literal 0 HcmV?d00001 diff --git a/content/posts/newsletter-017/index.md b/content/posts/newsletter-017/index.md index b0c3e7381..ee37882f8 100644 --- a/content/posts/newsletter-017/index.md +++ b/content/posts/newsletter-017/index.md @@ -104,6 +104,142 @@ For full details and a list of breaking changes, see the [tetra]: https://github.com/17cupsofcoffee/tetra [tetra-changelog]: https://github.com/17cupsofcoffee/tetra/blob/main/CHANGELOG.md +### [Bevy Engine v0.4][bevy-0-4] + +[![bevy logo](bevy_logo.png)][bevy] + +[Bevy][bevy] is a refreshingly simple data-driven game engine built in Rust. +It is [free and open source][bevy-repo] forever! + +This month, thanks to 66 contributors, 178 pull requests, and their +[generous sponsors][bevy-sponsors], Bevy 0.4 was released. You can view the +[full Bevy 0.4 announcement here][bevy-0-4]. Here are some highlights: + +- WASM + WebGL2 + - Bevy now has a WebGL2 render backend! +- Cross Platform Main Function + - By adding `#[bevy_main]` to your main function, + you can now publish the same app code to Windows, MacOS, Linux, Android, iOS, + and Web. +- Live Shader Reloading + - Changes to shaders are automatically recompiled and reloaded at runtime for + fast iteration cycles +- ECS Improvements + - Flexible System Parameters + - You can now specify system parameters in any order + - Improved compile times + - _Much_ simpler IntoSystem implementation + - Easily define your own system parameters + - Improved Query Filter API + - Filters are now defined separately from components and read more naturally + - System Inputs, Outputs, and Chaining + - This allows interesting behaviors, such as system error handlers +- Schedule V2 + - Custom Stages: implement your own stage logic + - Run Criteria: only run stages when a certain criteria is met + - Fixed Timestep: stages can now be run on a fixed timestep + - Typed Stage Builders: ergonomically interact with custom stages +- States + - By popular demand, Bevy now supports States. These are logical "app states" + that allow you to enable/disable systems according to the state your app is in. +- GLTF Improvements + - Camera Importing + - Automatic pixel format conversion for images loaded from a GLTF + - Default material loading + - Hierarchy Fixes +- Spawn Scenes as children + - Scenes can now be spawned as children, which allows transforming them via + their parent +- Dynamic Linking + - You can now force Bevy to dynamically link, which cuts compile times significantly + An example that compiles in ~1.4 seconds now compiles in ~0.5 seconds! +- Text Layout Improvements + - Migrated text layout to `glyph_brush_layout`, which resolved a number of text + bugs +- Renderer Optimization + - Made most of the cpu render logic incremental, which cut frame time by 2-4x + - Optimized text rendering, cutting frame time by ~3x +- Reflection API + - Created a new general-purpose Rust reflection api, which enables interacting + with Rust types dynamically. This replaced the `bevy_property` and `bevy_type_registry` + systems +- 3D Texture Assets +- Logging and Profiling + - Bevy now has a new LogPlugin, which uses the `tracing` crate internally + - Created a custom android logcat `tracing` backend + - Visualizing Bevy system execution is now possible using tracing-chrome +- HIDPI + - Bevy now handles HIDPI displays properly / displays crisp 2x renders in + most cases +- Timer Improvements + - Quality-of-life improvements: pausing, field accessor methods, ergonomics improvements, + and internal refactoring / code quality +- Task System + - Improved performance (~20% in the Breakout example) and resolved a + deadlock in single-thread task pools. +- Apple Silicon support + +_Discussions: +[/r/rust](https://www.reddit.com/r/rust/comments/kge7zy/bevy_04/), +[hacker news](https://news.ycombinator.com/item?id=25480321), +[twitter](https://twitter.com/cart_cart/status/1340376850560905218)_ + +[bevy]: https://bevyengine.org +[bevy-repo]: https://github.com/bevyengine/bevy +[bevy-0-4]: https://bevyengine.org/news/bevy-0-4 +[bevy-sponsors]: https://github.com/sponsors/cart + +Join Bevy's [Discord][bevy-discord], [/r/bevy subreddit][bevy-reddit], +and follow [@BevyEngine on Twitter][bevy-twitter]. + +[bevy-discord]: https://discord.com/invite/gMUk5Ph +[bevy-reddit]: https://reddit.com/r/bevy +[bevy-twitter]: https://twitter.com/BevyEngine + +------ + +Community Plugin Updates: + +- [bevy_webgl2](https://github.com/mrk-its/bevy_webgl2): + WebGL2 renderer plugin for WASM target +- [bevy_rapier](https://github.com/dimforge/bevy_rapier): + Rapier Physics' official Bevy plugin was updated to support Bevy 0.4. +- [bevy_megaui](https://github.com/mvlabat/bevy_megaui): A plugin for + [megaui](https://crates.io/crates/megaui) integration into Bevy +- [bevy_prototype_inline_assets](https://crates.io/crates/bevy_prototype_inline_assets): + A simple plugin for bundling assets into your binary. +- [bevy_doryen](https://github.com/smokku/bevy_doryen): A plugin integrating Bevy + ECS with [doryen-rs](https://github.com/jice-nospam/doryen-rs) Ascii + roguelike library. +- [bevy_discovery](https://crates.io/crates/bevy_discovery): Automatically detects + and registers systems for you. +- [bevy_prototype_parallax](https://github.com/btrepp/bevy-prototype-parallax): + A parallax scrolling background plugin. +- [Kurinji](https://crates.io/crates/kurinji): Input Map for bevy. Converts user + input from different input hardware into game specific actions, eg. keyboard + "Space" or joystick "A" can be mapped to "Jump" Action. This allows decoupling + of the game code from device specific input api. +- [bevy-earcutr](https://github.com/frewsxcv/bevy-earcutr): Draw polygons +- [bevy_stl](https://github.com/nilclass/bevy_stl): STL mesh asset loader plugin + +Community Tutorial Updates: + +- [Making Chess Clone in 3D](https://caballerocoll.com/blog/bevy-chess-tutorial): + Walkthrough on how to make a Chess Clone with 3D pieces +- [0.3 to 0.4 Migration Guide](https://sburris.xyz/posts/bevy-update-0-4/) +- [Bevy Chinese Website(Bevy中文网)](https://bevyengine-cn.github.io/): Translate + official website and The Bevy Book in Chinese + +Community Game Updates: + +- [Robbo](https://github.com/mrk-its/bevy-robbo): + Bevy port of great 8-bit Atari game, working native and in the browser +- [SiO2](https://github.com/dmitriy-shmilo/sio2): A simple powder toy clone +- [snake_bevy](https://github.com/mtKeller/snake_bevy): It's Snake! +- [DJMcNab/life-rs](https://github.com/DJMcNab/life-rs): Bevy reproduction of the + rules of [Conway's Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) + on a randomised board. Alternative implementation: [Byteron/life-rs](https://github.com/Byteron/life-rs). + ## Popular Workgroup Issues in Github From 5cc9150c8bdb464f0524724079175df2c13c9507 Mon Sep 17 00:00:00 2001 From: Andrey Lesnikov Date: Thu, 14 Jan 2021 18:07:17 +0300 Subject: [PATCH 2/2] N17: Bevy: More high-level & compact overview --- content/posts/newsletter-017/index.md | 123 ++++++++------------------ 1 file changed, 38 insertions(+), 85 deletions(-) diff --git a/content/posts/newsletter-017/index.md b/content/posts/newsletter-017/index.md index ee37882f8..51a6e08f7 100644 --- a/content/posts/newsletter-017/index.md +++ b/content/posts/newsletter-017/index.md @@ -115,100 +115,46 @@ This month, thanks to 66 contributors, 178 pull requests, and their [generous sponsors][bevy-sponsors], Bevy 0.4 was released. You can view the [full Bevy 0.4 announcement here][bevy-0-4]. Here are some highlights: -- WASM + WebGL2 - - Bevy now has a WebGL2 render backend! -- Cross Platform Main Function - - By adding `#[bevy_main]` to your main function, - you can now publish the same app code to Windows, MacOS, Linux, Android, iOS, - and Web. -- Live Shader Reloading - - Changes to shaders are automatically recompiled and reloaded at runtime for - fast iteration cycles -- ECS Improvements - - Flexible System Parameters - - You can now specify system parameters in any order - - Improved compile times - - _Much_ simpler IntoSystem implementation - - Easily define your own system parameters - - Improved Query Filter API - - Filters are now defined separately from components and read more naturally - - System Inputs, Outputs, and Chaining - - This allows interesting behaviors, such as system error handlers -- Schedule V2 - - Custom Stages: implement your own stage logic - - Run Criteria: only run stages when a certain criteria is met - - Fixed Timestep: stages can now be run on a fixed timestep - - Typed Stage Builders: ergonomically interact with custom stages -- States - - By popular demand, Bevy now supports States. These are logical "app states" - that allow you to enable/disable systems according to the state your app is in. -- GLTF Improvements - - Camera Importing - - Automatic pixel format conversion for images loaded from a GLTF - - Default material loading - - Hierarchy Fixes -- Spawn Scenes as children - - Scenes can now be spawned as children, which allows transforming them via - their parent -- Dynamic Linking - - You can now force Bevy to dynamically link, which cuts compile times significantly - An example that compiles in ~1.4 seconds now compiles in ~0.5 seconds! -- Text Layout Improvements - - Migrated text layout to `glyph_brush_layout`, which resolved a number of text - bugs -- Renderer Optimization - - Made most of the cpu render logic incremental, which cut frame time by 2-4x - - Optimized text rendering, cutting frame time by ~3x -- Reflection API - - Created a new general-purpose Rust reflection api, which enables interacting - with Rust types dynamically. This replaced the `bevy_property` and `bevy_type_registry` - systems -- 3D Texture Assets -- Logging and Profiling - - Bevy now has a new LogPlugin, which uses the `tracing` crate internally - - Created a custom android logcat `tracing` backend - - Visualizing Bevy system execution is now possible using tracing-chrome -- HIDPI - - Bevy now handles HIDPI displays properly / displays crisp 2x renders in - most cases -- Timer Improvements - - Quality-of-life improvements: pausing, field accessor methods, ergonomics improvements, - and internal refactoring / code quality -- Task System - - Improved performance (~20% in the Breakout example) and resolved a - deadlock in single-thread task pools. -- Apple Silicon support +- a WebGL2 render backend; +- cross platform main function: `#[bevy_main]`; +- live shader reloading; +- Schedule v2 with custom stages, run criteria, fixed timestep, + and typed stage builders; +- States that allow you to enable/disable systems + according to the state your app is in; +- scenes can now be spawned as children; +- dynamic linking that significantly cuts compile times. +- a new general-purpose Rust reflection API; +- 3D texture assets; +- HIDPI fixes; +- GLTF, timer, text layout, task system, logging & profiling improvements; +- ECS improvements: flexible system parameters, improved query filter API, + and system inputs/outputs/chaining; +- Apple Silicon support! _Discussions: -[/r/rust](https://www.reddit.com/r/rust/comments/kge7zy/bevy_04/), +[/r/rust](https://reddit.com/r/rust/comments/kge7zy/bevy_04/), [hacker news](https://news.ycombinator.com/item?id=25480321), -[twitter](https://twitter.com/cart_cart/status/1340376850560905218)_ +[Twitter](https://twitter.com/cart_cart/status/1340376850560905218)_ [bevy]: https://bevyengine.org [bevy-repo]: https://github.com/bevyengine/bevy [bevy-0-4]: https://bevyengine.org/news/bevy-0-4 [bevy-sponsors]: https://github.com/sponsors/cart -Join Bevy's [Discord][bevy-discord], [/r/bevy subreddit][bevy-reddit], -and follow [@BevyEngine on Twitter][bevy-twitter]. - -[bevy-discord]: https://discord.com/invite/gMUk5Ph -[bevy-reddit]: https://reddit.com/r/bevy -[bevy-twitter]: https://twitter.com/BevyEngine - ------ -Community Plugin Updates: +Community plugin updates: - [bevy_webgl2](https://github.com/mrk-its/bevy_webgl2): - WebGL2 renderer plugin for WASM target + WebGL2 renderer plugin for WASM target. - [bevy_rapier](https://github.com/dimforge/bevy_rapier): Rapier Physics' official Bevy plugin was updated to support Bevy 0.4. - [bevy_megaui](https://github.com/mvlabat/bevy_megaui): A plugin for - [megaui](https://crates.io/crates/megaui) integration into Bevy + [megaui](https://crates.io/crates/megaui) integration into Bevy. - [bevy_prototype_inline_assets](https://crates.io/crates/bevy_prototype_inline_assets): A simple plugin for bundling assets into your binary. -- [bevy_doryen](https://github.com/smokku/bevy_doryen): A plugin integrating Bevy +- [bevy_doryen](https://github.com/smokku/bevy_doryen): A plugin integrating Bevy. ECS with [doryen-rs](https://github.com/jice-nospam/doryen-rs) Ascii roguelike library. - [bevy_discovery](https://crates.io/crates/bevy_discovery): Automatically detects @@ -219,27 +165,34 @@ Community Plugin Updates: input from different input hardware into game specific actions, eg. keyboard "Space" or joystick "A" can be mapped to "Jump" Action. This allows decoupling of the game code from device specific input api. -- [bevy-earcutr](https://github.com/frewsxcv/bevy-earcutr): Draw polygons -- [bevy_stl](https://github.com/nilclass/bevy_stl): STL mesh asset loader plugin +- [bevy-earcutr](https://github.com/frewsxcv/bevy-earcutr): Draw polygons. +- [bevy_stl](https://github.com/nilclass/bevy_stl): STL mesh asset loader plugin. -Community Tutorial Updates: +Community tutorial updates: - [Making Chess Clone in 3D](https://caballerocoll.com/blog/bevy-chess-tutorial): - Walkthrough on how to make a Chess Clone with 3D pieces -- [0.3 to 0.4 Migration Guide](https://sburris.xyz/posts/bevy-update-0-4/) + Walkthrough on how to make a Chess Clone with 3D pieces. +- [0.3 to 0.4 Migration Guide](https://sburris.xyz/posts/bevy-update-0-4/). - [Bevy Chinese Website(Bevy中文网)](https://bevyengine-cn.github.io/): Translate - official website and The Bevy Book in Chinese + official website and The Bevy Book in Chinese. -Community Game Updates: +Community game updates: - [Robbo](https://github.com/mrk-its/bevy-robbo): - Bevy port of great 8-bit Atari game, working native and in the browser -- [SiO2](https://github.com/dmitriy-shmilo/sio2): A simple powder toy clone + Bevy port of great 8-bit Atari game, working native and in the browser. +- [SiO2](https://github.com/dmitriy-shmilo/sio2): A simple powder toy clone. - [snake_bevy](https://github.com/mtKeller/snake_bevy): It's Snake! - [DJMcNab/life-rs](https://github.com/DJMcNab/life-rs): Bevy reproduction of the rules of [Conway's Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) on a randomised board. Alternative implementation: [Byteron/life-rs](https://github.com/Byteron/life-rs). +Join Bevy's [Discord][bevy-discord], [/r/bevy subreddit][bevy-reddit], +and follow [@BevyEngine on Twitter][bevy-twitter]. + +[bevy-discord]: https://discord.com/invite/gMUk5Ph +[bevy-reddit]: https://reddit.com/r/bevy +[bevy-twitter]: https://twitter.com/BevyEngine + ## Popular Workgroup Issues in Github