<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Christopher Toman</title>
    <description>The latest articles on DEV Community by Christopher Toman (@k1pash).</description>
    <link>https://dev.to/k1pash</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F64897%2Fbbd548b9-a8dc-4c33-bfd6-60f5a0811dd2.png</url>
      <title>DEV Community: Christopher Toman</title>
      <link>https://dev.to/k1pash</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/k1pash"/>
    <language>en</language>
    <item>
      <title>RTS game development - Week #4</title>
      <dc:creator>Christopher Toman</dc:creator>
      <pubDate>Mon, 02 Mar 2020 14:17:50 +0000</pubDate>
      <link>https://dev.to/k1pash/rts-game-development-week-4-1lb7</link>
      <guid>https://dev.to/k1pash/rts-game-development-week-4-1lb7</guid>
      <description>&lt;p&gt;Current state: &lt;strong&gt;&lt;strong&gt;9 000 lines&lt;/strong&gt;&lt;/strong&gt; of code over &lt;strong&gt;&lt;strong&gt;80&lt;/strong&gt;&lt;/strong&gt; files&lt;/p&gt;

&lt;p&gt;I've made some progress since the last update, so let's see what I did.&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Attack heatmap&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Heatmap which shows where are shots being fired on the field. That shall help AI to organise itself to be more passive or active in certain situations. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---lOcayR3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kdh534edy250wrupfjau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---lOcayR3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kdh534edy250wrupfjau.png" alt="Alt Text" width="880" height="463"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Fog of War&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Fog of war was very painful at first, but the solution I've found seems to be robust. A post-processing effect gets the world position of every pixel. Then compares it with all known unit positions and their Line of Sight. Based on that it determinates if the pixel should get dimmed or be fully clear.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fTIlKlXh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/alqq5h4oexqe2szf5049.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fTIlKlXh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/alqq5h4oexqe2szf5049.png" alt="Alt Text" width="880" height="476"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Minimap&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Shader based minimap which displays coloured circles. The future plan is to have actual textures instead of pure colours.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ebjxqgVR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/oehienupch1hs6e87bri.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ebjxqgVR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/oehienupch1hs6e87bri.png" alt="Alt Text" width="880" height="492"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Soldier stances&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;The units can change their &lt;strong&gt;&lt;em&gt;"Cover state"&lt;/em&gt;&lt;/strong&gt; and that affects the damage they can receive and how much they are detectable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--21k6JOss--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rf3sfoqtllbmdla9eqqn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--21k6JOss--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rf3sfoqtllbmdla9eqqn.png" alt="Alt Text" width="880" height="479"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Bomber&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;A plane flies through the map and drops the bomb right at the correct time, so it hits the ground at the target. First, I made it physically based, so had calculated some very basic physics formulas to get when to drop the bomb. But that had many limitations so eventually, I ended up with a custom curve which the bomb follows and the result is satisfying enough.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ExZLzNnz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7p6rv02fe69oygiu57t2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ExZLzNnz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7p6rv02fe69oygiu57t2.png" alt="Alt Text" width="880" height="393"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Helicopters&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Very nice helicopter motor was made. It has its own momentum and feels natural. The helicopters can transport units.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mRbdbolh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/oukedpnygb49yuxj597v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mRbdbolh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/oukedpnygb49yuxj597v.png" alt="Alt Text" width="845" height="479"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;em&gt;Future plans&lt;/em&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;The unit squad should get more segmented with different weapons and similar differences.&lt;/li&gt;
&lt;li&gt;There should be a selectable main tent.&lt;/li&gt;
&lt;li&gt;Units should have a conic vision instead of a circle vision.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;I hope you found it at least a little interesting, till next time...&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>unity3d</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>RTS game development - Week #3</title>
      <dc:creator>Christopher Toman</dc:creator>
      <pubDate>Mon, 18 Nov 2019 15:10:54 +0000</pubDate>
      <link>https://dev.to/k1pash/rts-game-development-week-3-4h85</link>
      <guid>https://dev.to/k1pash/rts-game-development-week-3-4h85</guid>
      <description>&lt;p&gt;Repo: &lt;a href="https://gitlab.com/Kipash/rts-concept" rel="noopener noreferrer"&gt;https://gitlab.com/Kipash/rts-concept&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  It's the third week and more work has been done.
&lt;/h2&gt;

&lt;p&gt;The biggest thing is the terrain, units no longer move on a flat surface.&lt;/p&gt;

&lt;p&gt;But, let's start from the beginning. Last week we did formations and their ordering. And we had said that we will make units rotate along their velocity vector. Also, squads which will be selectable through UI. All above has been done. Hooray!&lt;/p&gt;

&lt;p&gt;Units now look along their velocity vector.&lt;/p&gt;

&lt;p&gt;A couple of new formations: Line, Arrow, Double Arrow and Row. &lt;/p&gt;

&lt;p&gt;Formation were separated into two interfaces. &lt;code&gt;IFormationBehaviour&lt;/code&gt; and &lt;code&gt;ISlotAssignBehaviour&lt;/code&gt;. And then there's the Formation class which binds these two behaviors together.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;//creates different formations and its behaviours&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;layerAssingmentBehaviour&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;LayerAssingmentBehaviour&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;InvertAngle&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;invertAngle&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;axisAssingmentBehaviour&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;AxisAssingmentBehaviour&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;formations&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;FormationType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Box&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Formation&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;FormationBehaviour&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;BoxFormationBehaviour&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;SlotAssignBehaviour&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;layerAssingmentBehaviour&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A button for switching between individual mode and squad mode. Individual lets you select any unit through box selection. Squad mode has box selection disabled, but on whatever unit you click, it will select the whole squad.&lt;/p&gt;

&lt;p&gt;UI for squads, ability to select any squad with one click. The upper bar.&lt;/p&gt;

&lt;p&gt;Added terrain to see if the formations work in 3D. It had a couple of bugs with height, but it has been all fixed. &lt;/p&gt;

&lt;p&gt;And finally... teams and attacking. Simple mock, just by right-clicking on an enemy unit it instantly kills it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwv08n3acff4ld6n0p1uc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwv08n3acff4ld6n0p1uc.gif" alt="Attack mock"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some other little things... &lt;/p&gt;

&lt;p&gt;Selection is not pixel-based but rather physical ray cast and position-based. Had an issue with different resolution needing different biases.&lt;/p&gt;

&lt;p&gt;A minimap with a camera rendering from the top.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bugs!
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;DoubleArrow formation still has its problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Features to add!
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Unit individual movement and logic. "Autoplay", for example, Unit which is attacking and its target is out of range, it should start chasing it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unit attack. Ray cast and optimization. Visualization. How much accurate?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Curved formation for surrounding a target.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>csharp</category>
      <category>unity3d</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>RTS game development - Week #2</title>
      <dc:creator>Christopher Toman</dc:creator>
      <pubDate>Sun, 27 Oct 2019 19:56:02 +0000</pubDate>
      <link>https://dev.to/k1pash/rts-game-development-week-2-496g</link>
      <guid>https://dev.to/k1pash/rts-game-development-week-2-496g</guid>
      <description>&lt;p&gt;Repo: &lt;a href="https://gitlab.com/Kipash/rts-concept" rel="noopener noreferrer"&gt;https://gitlab.com/Kipash/rts-concept&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's a week 2, after a pause, I had to go back to this awesome project. Let's get into it.&lt;/p&gt;

&lt;p&gt;The key thing I searched for and finally found is...Order &amp;amp; assign algorithm, which I've seen in a part of this GDC talk from 2014. (Around the 11th minute, the guy on the iPad) &lt;a href="https://www.gdcvault.com/play/1020832/The-Simplest-AI-Trick-in" rel="noopener noreferrer"&gt;https://www.gdcvault.com/play/1020832/The-Simplest-AI-Trick-in&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So the basic idea is to split the formation into layers based on the orientation of the formation. You create these slots in different layers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F9o95p4ueewc3b9wsl80d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F9o95p4ueewc3b9wsl80d.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, you layer the actual units, but in the same direction as you layered the slots.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7t8qgk7awxd6n9wl1sdr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7t8qgk7awxd6n9wl1sdr.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then it's simple to assign a unit to a slot. Well, it should be. I haven't listened to the man's advice and so I've implemented the last step differently. I'm going to look into it in the future.&lt;/p&gt;

&lt;p&gt;This is how it works. It finds the intersections with the perpendicular lines based on the unit position and cross product of the formation direction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Frjxrv9hdk362r28cgs5p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Frjxrv9hdk362r28cgs5p.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just a meaningless snipped. I would advise you to check out the source with the full context (&lt;a href="https://gitlab.com/Kipash/rts-concept" rel="noopener noreferrer"&gt;https://gitlab.com/Kipash/rts-concept&lt;/a&gt;).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Create intersections&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;dirStart&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;formationOrigin&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;dirEnd&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;formationOrigin&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;formationDirection&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Intersection&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;intersections&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Intersection&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;unit&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;SelectedUnits&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;uPos&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;unit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;position&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Line&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uPos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;uPos&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;horizontalDirection&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;LineSegmentsIntersection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Vector2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dirStart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dirStart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Vector2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dirEnd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dirEnd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="k"&gt;out&lt;/span&gt; &lt;span class="n"&gt;Vector2&lt;/span&gt; &lt;span class="n"&gt;intersection&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;intersections&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Intersection&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;Point&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;intersection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Unit&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;unit&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"inter: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;unit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetUnitID&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;So what else is new? First I had to get rid of the green sprites since they were awful. I've downloaded a 3d model of a soldier, just to have a scale. I've added a visualization where the unit will arrive for debugging purposes, but I might leave this in-game. Then just a quick mock of UI and the proportions. The first thing the UI was used for was the formations, so you can switch the type.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fg4rtgb8nhbjadu0n0a79.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fg4rtgb8nhbjadu0n0a79.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Current bugs
&lt;/h2&gt;

&lt;p&gt;Let's start with the mentioned sorting. Right now it cleverly sorts them into layers, but in the layers, the order is greedy and not clever.&lt;/p&gt;

&lt;p&gt;If the player wants to select one unit, it has problems on different resolutions. Currently, it goes through all the units and checks the position. I think it might be cheaper to change it to a simple ray cast.&lt;/p&gt;
&lt;h2&gt;
  
  
  Features to add
&lt;/h2&gt;

&lt;p&gt;Unity's NavMesh agent controls the rotation, but this way you can't determinate the final rotation uppon arriving.  For example in the Circle formation, every man is looking outwards from the circle, but if you sent the units to that destination, they'll be staring in the same direction in which they arrived. So, custom rotation and smoothing have to be added so the custom final rotation could be used.&lt;/p&gt;

&lt;p&gt;Unit grouping. UI should have dynamic buttons for every group of units. With that goes the selection, while in the group mode, if you select a unit, you'll select the whole group. Then, with a button, you'll go back to the individual mode and you're able to select and control individual units.&lt;/p&gt;



&lt;p&gt;I'm having a blast. See you next week.&lt;/p&gt;

&lt;p&gt;Shout out to Brian Peek for nice game industry-related news.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__user ltag__user__id__139952"&gt;
    &lt;a href="/brianpeek" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F139952%2F7e17dea1-fc79-4e3c-b157-18198e7325ad.jpg" alt="brianpeek image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/brianpeek"&gt;Brian Peek&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/brianpeek"&gt;I'm a Senior Software Engineer at Microsoft in the Xbox Advanced Technology Group. I also write games (new &amp;amp; retro), tinker with hardware, and speak at conferences.&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>csharp</category>
      <category>unity3d</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>My 3D modeling struggle </title>
      <dc:creator>Christopher Toman</dc:creator>
      <pubDate>Thu, 03 Oct 2019 15:47:01 +0000</pubDate>
      <link>https://dev.to/k1pash/my-3d-modeling-struggle-305k</link>
      <guid>https://dev.to/k1pash/my-3d-modeling-struggle-305k</guid>
      <description>&lt;p&gt;I was never able to model and texture a proper 3D models. When I at least was able to finish a proper mesh then it all fell apart on the texturing. The painful spot for me is the UV maps, which are hard for a beginner to do manually. So auto-generated UVs were the obvious thing to do. After successfully doing that, you were stuck with something like this.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsedebnyzbbtqb938gg0v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsedebnyzbbtqb938gg0v.jpg" alt="UV map"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And you're supposed to create a texture like this...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fyelnehqbgdeddnrqb4ih.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fyelnehqbgdeddnrqb4ih.jpg" alt="UV + Texture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, as you can see. Making a texture in which some parts are vertical or horizontal and even worse when they are curved is a nightmare. &lt;/p&gt;

&lt;p&gt;But, luckily there is a so-called "Texture painting", which lets you paint or spray texture on a model. This way, it's like real life painting or spraying. It takes some time and you are layering detail. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ojU_P3jdeqw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;So after finding this technique, everything makes more sense. Very easy to make cartoon assets and very helpful for prototyping.&lt;/p&gt;

&lt;p&gt;I'm going to paint a model of Eiruga oroso Galicia.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsga1t1vuwbx8n6ssslhb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsga1t1vuwbx8n6ssslhb.jpg" alt="Eiruga_oroso_Galicia"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So far, I'm fighting with the resolution, since what I always got is something blurry and unrealistic or too much pixelated. Even tho the texture is 2048x2048 which should be alright. My main guess would be that the UV maps are autogenerated and if I would have position them manually it would get more resolution and therefore better looks.&lt;/p&gt;

&lt;p&gt;The first trick I found was to increase the texture resolution to 4096x4096. Secondly, deleting half of the model and mirror it will save half of the resolution's details in theory. So this way I was able to at least get something pleasable. &lt;/p&gt;

&lt;p&gt;My current struggle is to layer the detail.&lt;/p&gt;

&lt;p&gt;I'm very new to this, so bear with me. This time no screenshot.&lt;/p&gt;

</description>
      <category>modeling</category>
      <category>art</category>
      <category>struggle</category>
      <category>hope</category>
    </item>
    <item>
      <title>RTS game development - Week #1</title>
      <dc:creator>Christopher Toman</dc:creator>
      <pubDate>Mon, 16 Sep 2019 19:58:17 +0000</pubDate>
      <link>https://dev.to/k1pash/rts-game-development-week-1-monday-5012</link>
      <guid>https://dev.to/k1pash/rts-game-development-week-1-monday-5012</guid>
      <description>&lt;p&gt;I'm going to make a RTS game in Unity3D. I would like to mark my development here. Hope you'll find it interesting. It is open source in this repository: &lt;a href="https://gitlab.com/Kipash/rts-concept"&gt;https://gitlab.com/Kipash/rts-concept&lt;/a&gt; (it was, contact me if you are interested)&lt;/p&gt;

&lt;h1&gt;
  
  
  Before (commit 3f31d24)
&lt;/h1&gt;

&lt;p&gt;First, I made the grid, but then I realized I want to use mesh-based pathfinding which is already build-in into Unity.&lt;/p&gt;

&lt;p&gt;So I've created a simple capsule with the Nav agent. And a custom Unit script with minimal logic. Just the basics, like GoTo method, which commands the Nav agent to go to a world position.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;GoTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Vector3&lt;/span&gt; &lt;span class="n"&gt;worldPosition&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"GoTo: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;worldPosition&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetDestination&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;worldPosition&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isStopped&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then I made the box selection, which I had no clue how to do and haven't tested the performance so far. &lt;/p&gt;

&lt;p&gt;Thanks to... &lt;/p&gt;
&lt;div class="ltag__user ltag__user__id__139952"&gt;
    &lt;a href="/brianpeek" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h8COaS_t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--cvB0amVJ--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/139952/7e17dea1-fc79-4e3c-b157-18198e7325ad.jpg" alt="brianpeek image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/brianpeek"&gt;Brian Peek&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/brianpeek"&gt;I'm a Senior Software Engineer at Microsoft in the Xbox Advanced Technology Group. I also write games (new &amp;amp; retro), tinker with hardware, and speak at conferences.&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;...and his GameDev news, I was able to read a bit about UI optimization &lt;a href="https://www.gamedev.net/articles/programming/general-and-gameplay-programming/unity-ui-the-gurus-ui-development-diagram-r5197/"&gt;here&lt;/a&gt;. I do recommend reading it as well. It's good for semi beginners and I generally enjoyed it and will use a couple of things which were pointed out there.&lt;/p&gt;

&lt;p&gt;Back to UI, I focused on the box selection UI, I've never done that, so ... I was a bit lost with the way how to stretch an UI element between two points, drag start and drag end. But then it got me. If we set the pivot to (0, 1) then we are able to set the height and width to the difference between the drag start and end. Then just setting the position of the UI element to the drag start. After that conclusion it was a piece of cake.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J3RXUR4r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/14mg6h36ihm2yvajltke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J3RXUR4r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/14mg6h36ihm2yvajltke.png" alt="Alt Text" width="880" height="375"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;Tuple&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Vector2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Vector2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;NormalizeDrag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Vector2&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Vector2&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Vector2&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Vector2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;Vector2&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Vector2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Tuple&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Vector2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Vector2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the ones who don't know what Tuple is (google it tho), a neat way how to wrap more values/variables into an instance of a class, so you can return multiple types at once.&lt;/p&gt;

&lt;p&gt;What I'm doing here is normalizing the drag, since you can have 4 different directions of drag (from top right to down left ... from bottom left to top right ... etc). And so this way the main implementation which checks if the unit is in the selection, can be implemented just for one type of drag direction because we make sure that it is normalized to this direction.&lt;/p&gt;

&lt;p&gt;note: &lt;code&gt;unitManager.GetVisibleUnits()&lt;/code&gt; does filter all units on screen. But not in our custom selection.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;unit&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;unitManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetVisibleUnits&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Vector2&lt;/span&gt; &lt;span class="n"&gt;uPos&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cam&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WorldToScreenPoint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;unit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;position&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;//Is in selection&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;boxSelectBias&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;uPos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;uPos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;boxSelectBias&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;boxSelectBias&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;uPos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;uPos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;boxSelectBias&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;selectedUnits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;unit&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"yes"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ub_8sOAn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.discordapp.com/attachments/549030720480477189/613374197833400350/XJR60MDgiP.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ub_8sOAn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.discordapp.com/attachments/549030720480477189/613374197833400350/XJR60MDgiP.gif" alt="RTS_before_week#1" width="619" height="607"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Week #1 (commit 456a00c)
&lt;/h1&gt;

&lt;p&gt;So then I followed with a pool of Labels, which are positioned over selected units. Problem is with the UI elements are overlapping and that is visually unpleasant.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/PjrZ3qJd2SJvZnrPAd/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/PjrZ3qJd2SJvZnrPAd/giphy.gif" alt="RTS_week#1_1" width="480" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Added formations, which first were a big challenge but eventually the vision was clear what to achieve and how to do it. By that I mean, its just a simple offset along 2 axes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;Vector3&lt;/span&gt; &lt;span class="n"&gt;destination&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mouseclickPosition&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt;
                      &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;horizontalDir&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;colum&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;spacing&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt;
                      &lt;span class="p"&gt;(-&lt;/span&gt;&lt;span class="n"&gt;verticalDir&lt;/span&gt;   &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;   &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;spacing&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Having a major problem with the sorting which unit should go to which spot. Currently, it's linear to the list of all units... so it creates long transitions in certain cases.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;selectedUnits&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;GoTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;destination&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So as you can see, I'm always telling the first unit in the list to go to the most upper left position every time I click. I would rather base the order on some kind of distance but haven't found a condition yet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/kG3gexa79B6gbjWtXI/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/kG3gexa79B6gbjWtXI/giphy.gif" alt="RTS_week#1_2" width="638" height="635"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I played just a few RTSes but extensively. All of Age of Empires, StarCraft 1, Stronghold Crusader and Command and Conquer: Generals. I love how the unit grouping and destination visualisation is made in Stronghold. You select your units and wherever you clicked it will try to make a square shape formation. The destinations are visible for every unit. That means, you can deselect all, select just one and you'll see its destination.&lt;/p&gt;

&lt;p&gt;For me, I feel the player should have more power over the shape of the group ... since with more massive battles ... real formations are better.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X6sWmJJ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/f45nmac9tcie11fhze74.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X6sWmJJ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/f45nmac9tcie11fhze74.jpg" alt="Formation" width="735" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it, not sure how often per week I will release these updates but in general ... I really enjoy this and I hope I might say something valuable.&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>unity3d</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Are you running on 100%?</title>
      <dc:creator>Christopher Toman</dc:creator>
      <pubDate>Sun, 30 Dec 2018 04:17:59 +0000</pubDate>
      <link>https://dev.to/k1pash/are-you-going-for-100-1dcn</link>
      <guid>https://dev.to/k1pash/are-you-going-for-100-1dcn</guid>
      <description>&lt;p&gt;A few years ago I thrilled with motivation to create new things, to iterate on ideas and to move forward. My style included blind jumping into a project and just crashing on many...many problems. For example, I wanted to create a multiplayer shooter game, but that end up in a giant mess. The only outcome was experience. &lt;/p&gt;

&lt;p&gt;Since I got my first contract job I really stop moving forward. And I found impossible to reinvent myself in some other side projects. Well, the only exception was game jam, where you had to create a game in 48 hours. Limited time, no worries and two free days of fun.&lt;/p&gt;

&lt;p&gt;The reason I realised that was my friend. The days where I did a routine job, he jumped straight into a new problem and solved it. He is actually driven by that progress and that’s extremely precious. &lt;/p&gt;

&lt;p&gt;Are we running at 100%? Do we even want to? What happened?&lt;/p&gt;

&lt;p&gt;For me, the solution would be enhanced time management. Drop unproductive stuff like gaming. Little goals, plan ahead, cooperate with others on other project and track progress on anything. Plus I’m not a morning bird, so waking up early is actually really exhaustive and while I’ve got a sleep deficit, those management tasks are just unreachable.&lt;/p&gt;

&lt;p&gt;Sometimes, there are those moments of pure love for programming, in which you are for any project, but these moments were under many conditions. For example, a healthy sleep cycle, no stress and in general just being happy. But who’s always happy. Who’s running always on 100%. &lt;/p&gt;

&lt;p&gt;I guess the image of my friend is a bit foggy since I hear about his work only at his peak. &lt;/p&gt;

&lt;p&gt;The whole depressing idea of getting a job and creating programs or games for somebody else with money being the main drive is just hurting self-reflection.&lt;/p&gt;

&lt;p&gt;What do you think what should I do? How was your first job? &lt;/p&gt;

</description>
      <category>career</category>
      <category>help</category>
    </item>
    <item>
      <title>Find a job, they said. They will teach you, they said. </title>
      <dc:creator>Christopher Toman</dc:creator>
      <pubDate>Fri, 26 Oct 2018 23:26:02 +0000</pubDate>
      <link>https://dev.to/k1pash/find-a-job-they-said-they-will-teach-you-they-said--5525</link>
      <guid>https://dev.to/k1pash/find-a-job-they-said-they-will-teach-you-they-said--5525</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QpMBIV-E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/upbmtn9ig1xuil6wdjvr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QpMBIV-E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/upbmtn9ig1xuil6wdjvr.jpg" alt="The job you and I not getting" width="880" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, to make everything clear, I wasn't employed. I wanted to, but I wasn't and that's the point of my story.&lt;/p&gt;

&lt;p&gt;I tried to get a job in my field. I create games in Unity3D and code them in C# .NET. Big shocker is, that game industry is fragile. So a lot of small companies are having hard time being alive. Issue is, I was targeting exactly the struggling ones. They just simply can't afford uncertainty.&lt;/p&gt;

&lt;p&gt;I tried to talk with small ones.. I failed... or them, pretty soon. So I ask the big fish around here and they said something like this: "well, we do only hire university students or graduates...", "well, so how many hours can you spent in our office?" and so on. Too young, too inexperienced, can't work as much. Always some issues. Then my principal came up, offered me a one time job by which he realized I'm able to finish projects.&lt;/p&gt;

&lt;p&gt;From there it went crazy. First, small jobs, then new people. After that, started teaching by having my course. And to top it all off... we started a company.&lt;/p&gt;

&lt;p&gt;Find a job, they said. They will teach you, they said.&lt;/p&gt;

&lt;p&gt;That's the issue, inexperienced people having their company and figuring their way out. I'm 18 and I don't know if I'm honestly doing a mistake.&lt;/p&gt;

&lt;p&gt;But I don't have much of an option honestly. That's what made me sad. The market for young developers is only Indie... indie is great if you want to work from home. I don't.&lt;/p&gt;

&lt;p&gt;One older friend said this, "The crucial point of growth of your young self is not how fast, but if at all". &lt;/p&gt;

&lt;p&gt;Then I realized I lived in the expectations of others. And the truth is.. I love what I do and I love to build my business. We'll fail probably, but it's fun. I'm having fun. And the greatest thing about this is, I can still add it to my CV.&lt;/p&gt;




&lt;p&gt;If you have any advice, I would be more then thankful to hear it from you.&lt;/p&gt;

&lt;p&gt;This was helpful to hear&lt;br&gt;
&lt;/p&gt;
&lt;div class="liquid-comment"&gt;
    &lt;div class="details"&gt;
      &lt;a href="/geshan"&gt;
        &lt;img class="profile-pic" src="https://res.cloudinary.com/practicaldev/image/fetch/s--BxAH4Z2v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--Mok8pAz5--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_50%2Cq_auto%2Cw_50/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/14052/47adb0aa-abcd-43c3-9b32-7f65e77e2146.jpg" alt="geshan profile image"&gt;
      &lt;/a&gt;
      &lt;a href="/geshan"&gt;
        &lt;span class="comment-username"&gt;Geshan Manandhar&lt;/span&gt;
      &lt;/a&gt;
      &lt;span class="color-base-30 px-2 m:pl-0"&gt;•&lt;/span&gt;

&lt;a href="https://dev.to/geshan/comment/65i6" class="comment-date crayons-link crayons-link--secondary fs-s"&gt;
  &lt;time&gt;
    Oct 12 '18
  &lt;/time&gt;

&lt;/a&gt;

    &lt;/div&gt;
    &lt;div class="body"&gt;
      

&lt;p&gt;Hello Christoper,&lt;/p&gt;

&lt;p&gt;If you already have your own company and it is sustainable (makes a profit) then that may be the best to stick to. Small or big is a different question if it pays you good enough, having your own company is better IMHO.&lt;/p&gt;

&lt;p&gt;If you are looking for "a proper" company, by that I understand large transactions systems (may not be large scale or millions of lines of code). It is a trade off and depends on your priorities and where you see yourself in future like 3-5 years from now. Hope I could answer your query.&lt;/p&gt;



    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;From this article&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/geshan" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5uQ7fnXE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--4cVOtlBN--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/14052/47adb0aa-abcd-43c3-9b32-7f65e77e2146.jpg" alt="geshan"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/geshan/5-practical-steps-to-land-your-first-tech-job-4ib5" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;5 practical steps to land your first tech job&lt;/h2&gt;
      &lt;h3&gt;Geshan Manandhar ・ Oct 10 '18 ・ 6 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#career&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#jobs&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>carier</category>
      <category>help</category>
    </item>
    <item>
      <title>Dev.to custom "Lost internet connection page"</title>
      <dc:creator>Christopher Toman</dc:creator>
      <pubDate>Mon, 27 Aug 2018 10:57:17 +0000</pubDate>
      <link>https://dev.to/k1pash/devto-custom-lost-internet-connection-page-1djf</link>
      <guid>https://dev.to/k1pash/devto-custom-lost-internet-connection-page-1djf</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pmFVQtVC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mtoz4owj8tpn1koeomde.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pmFVQtVC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mtoz4owj8tpn1koeomde.png" alt='""'&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just lost internet connection and I visited &lt;a href="https://dev.to"&gt;https://dev.to&lt;/a&gt; and guess what, this cool custom "You don't have internet" page popped up :D with a Trump joke :D&lt;/p&gt;

&lt;p&gt;I'm not from America, but FUCK YEAH! &lt;/p&gt;

&lt;p&gt;Anyway, how it works? Can I experience this anywhere? The screen is from Chrome, so is just a feature of Chrome?&lt;/p&gt;

&lt;p&gt;Happy Monday, everyone!&lt;/p&gt;

</description>
      <category>devto</category>
    </item>
    <item>
      <title>Smells like Team spirit</title>
      <dc:creator>Christopher Toman</dc:creator>
      <pubDate>Thu, 21 Jun 2018 15:13:14 +0000</pubDate>
      <link>https://dev.to/k1pash/smells-like-team-spirit-49cj</link>
      <guid>https://dev.to/k1pash/smells-like-team-spirit-49cj</guid>
      <description>&lt;h3&gt;
  
  
  &lt;em&gt;Developers around the world, all managers, coders, designers and people with&lt;/em&gt; &lt;strong&gt;&lt;em&gt;brains&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;, please tell me your experience, I’m hungry for it!&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fwww.triplefff.com%2Fbeer-names%2Fsmells-like-team-spirit-name.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fwww.triplefff.com%2Fbeer-names%2Fsmells-like-team-spirit-name.png" alt="Logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Why is my generation how it is?
&lt;/h1&gt;

&lt;p&gt;Hi, I’m young, inexperienced and dumb. But it feels that people of my age are bit unsustainable as I am. &lt;/p&gt;

&lt;p&gt;Issues with other people I got in to were about concertation, motivation, good intents, consistency and so on… and so on. &lt;em&gt;The usual package&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;How to prevent that, how to work with people correctly … that’s too generic, ehm… How to stop people from driving away and being narcissistic. Why is there that big difference anyway? I got few friends, that are able to really do something with great team spirit. Then... there are &lt;strong&gt;a&lt;/strong&gt; few other friends what are stealing other’s work, lying, saying big thinks and not delivering them... It’s ok if they end up with some perspective after some time, but I never saw any change in their behavior. But nothing in between? It seems to me, that there are only two stereotypes. Why?&lt;/p&gt;

&lt;p&gt;So many wonders for me. I like people and by that, I mean the good one, the nice one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1512577107354-cc925a586320%3Fixlib%3Drb-0.3.5%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26s%3De08130e8cddc1460ae560709f25ef069%26w%3D1000%26q%3D80" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1512577107354-cc925a586320%3Fixlib%3Drb-0.3.5%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26s%3De08130e8cddc1460ae560709f25ef069%26w%3D1000%26q%3D80" alt="Logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  How to build or maintain your team?
&lt;/h1&gt;

&lt;p&gt;Alright, so for an instance, we have a house full of amazing people, that are well behaved, so they are perfect (dreamy situation). How to make the right management, to get things moving?&lt;/p&gt;

&lt;p&gt;And what about the motivation, let’s say there’s a guy named Paul. He’s smart, good team member, everything is awesome about Paul. But he does only apps for Android, you would need (as a team) app for iOS, you know he would learn it, but you also see, that there is no motivation for it.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;&lt;em&gt;How to trick him into doing it?&lt;/em&gt;&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;I don’t mean it in an evil way. You, as a manager, need to motivate people to do things, that they didn’t even think of. Usually, it’s the thing you currently need.&lt;/p&gt;

&lt;p&gt;How do you correctly maintain the team and establish a good mood with great workflow? The only part I know of is people. Without the more adult approach to the “craft”, there is no way of good team culture nor team spirit.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>productivity</category>
      <category>workplace</category>
    </item>
    <item>
      <title>Game Development at its finest: my story</title>
      <dc:creator>Christopher Toman</dc:creator>
      <pubDate>Sat, 31 Mar 2018 19:56:21 +0000</pubDate>
      <link>https://dev.to/k1pash/game-development-at-its-finest-my-story-25cj</link>
      <guid>https://dev.to/k1pash/game-development-at-its-finest-my-story-25cj</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FDHL_Fs0XgAERFWs.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FDHL_Fs0XgAERFWs.jpg" alt="One of  my projects"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Story
&lt;/h2&gt;

&lt;p&gt;Everything started with the creation of my first game. I was around 14. I already knew it had to be a 2D game and around that time I've started looking into old-school games. GTA 1 got my attention so I picked it. Lovely times. I honestly think that developing this game I enjoyed the most... from all the games I've ever created. The enormous joy and dedication. Never felt like this again... it's interesting. New projects started following after another.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkrystof-toman.webnode.cz%2F_files%2F200000037-257ac26790%2FGTA.b%2520Photo01.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkrystof-toman.webnode.cz%2F_files%2F200000037-257ac26790%2FGTA.b%2520Photo01.png" alt="One of  my projects"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Until I had got into a dark spot. I was 16 and my parents were forcing me into finding a job. But the idea of working in a fast food was not for me. I made a decision, that my only income will be from game development. We've argued, but luckily, time went by and ...&lt;/p&gt;

&lt;p&gt;A new part in my life, that I would call… resurrection, maybe even blessing, came up and with that new opportunity! A small one-time job for my school, creating a VR game for representation of our school. It was paid. First "big money" what lil' Chriss had!&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenge
&lt;/h2&gt;

&lt;p&gt;Many people in my life call it insignificant, silly and reckless.  I I've heard many phrases: &lt;em&gt;"Your games suck."&lt;/em&gt;, &lt;em&gt;"You should consider something more... real."&lt;/em&gt;, &lt;em&gt;"Ha, making games?! You serious? That’s easy!"&lt;/em&gt; and mainly…&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;&lt;em&gt;"You won't make it.". Cliché.&lt;/em&gt;&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Was shocked what was hiding behind that smiley face that was "supporting" me, what they really meant by "I'm glad for you". Believe and trust are very precious, I can't express that enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are games?
&lt;/h2&gt;

&lt;p&gt;A game is form of art. Combinations of many art forms, work of many people, form of many experiences. Games are personal, unique understandings of it’s narrative. They can be even a social opportunity, people gather around the experience together and socialize. Often marked as sick and strange. But many gamers who played with each other 10 years ago, are now together. &lt;/p&gt;

&lt;p&gt;Behind the experience is precise engineering, knowledge of people and their emotion. This part is really close to movies. Visuals, esthetics, sounds and mechanics are the other significant part. And the last is the programing itself. Not many gamers are interested in the technical part, its completely hidden. Until somebody wants to create content for your game. And that is my part, the programing, the key why everything works, not often appreciated.&lt;/p&gt;

&lt;p&gt;And that's me, programmer, my position in the havoc of the game development. Sooner or later I realized how complicated games are and how much I really need a team to work with.&lt;/p&gt;

&lt;p&gt;Good luck fellow game developers and engineers, it won't be easy… but trust and believe in your teammates. &lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>discuss</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Coding architecture</title>
      <dc:creator>Christopher Toman</dc:creator>
      <pubDate>Fri, 30 Mar 2018 01:59:23 +0000</pubDate>
      <link>https://dev.to/k1pash/coding-architecture-dn6</link>
      <guid>https://dev.to/k1pash/coding-architecture-dn6</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fjh7jiyrcd2e396cn95fb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fjh7jiyrcd2e396cn95fb.png" alt="Structure-ish image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Problems
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Code architecture&lt;/li&gt;
&lt;li&gt;OPP in games&lt;/li&gt;
&lt;li&gt;OPP in general apps &lt;/li&gt;
&lt;li&gt;MVC in non web apps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What should i do? I'm lost..&lt;/p&gt;

&lt;p&gt;Hellow guys, i know the basics of C# and few design patterns, but how should i structure the whole project? To be more exact, I'm working with Unity3D, what is EC and that isn't 100% MVC appliable structure.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>beginners</category>
      <category>learning</category>
      <category>csharp</category>
    </item>
  </channel>
</rss>
