Skip to content

Latest commit

 

History

History
57 lines (49 loc) · 14.4 KB

engineering-blogs.md

File metadata and controls

57 lines (49 loc) · 14.4 KB

Engineering Blogs

{% api-method method="get" host="https://blog.titan.tf/rss/" path=" " %} {% api-method-summary %} Get Blog Posts {% endapi-method-summary %}

{% api-method-description %} Get the recent engineering blog posts. {% endapi-method-description %}

{% api-method-spec %} {% api-method-request %}

{% api-method-response %} {% api-method-response-example httpCode=200 %} {% api-method-response-example-description %} Returns an XML response on success. {% endapi-method-response-example-description %}

<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        <title><![CDATA[ Titan.TF ]]></title>
        <description><![CDATA[ With over 340K unique players, we are a constantly evolving network of custom Team Fortress 2 servers. ]]></description>
        <link>https://blog.titan.tf/</link>
        <image>
            <url>https://blog.titan.tf/favicon.png</url>
            <title>Titan.TF</title>
            <link>https://blog.titan.tf/</link>
        </image>
        <generator>Ghost 3.22</generator>
        <lastBuildDate>Sun, 19 Jul 2020 00:05:21 GMT</lastBuildDate>
        <atom:link href="https://blog.titan.tf/rss/" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        <item>
            <title><![CDATA[ ⚔️ Development of Attack on Teufort ]]></title>
            <description><![CDATA[ In June of 2020, we launched our brand new game mode, Attack on Teufort after 4 years of development! We dive into how the project was developed. ]]></description>
            <link>https://blog.titan.tf/aot-development/</link>
            <guid isPermaLink="false">5f00365e80efac775ef40b82</guid>
            <category><![CDATA[ dev blog ]]></category>
            <category><![CDATA[ attack on teufort ]]></category>
            <dc:creator><![CDATA[ myst ]]></dc:creator>
            <pubDate>Sat, 04 Jul 2020 10:23:20 GMT</pubDate>
            <media:content url="https://blog.titan.tf/content/images/2020/07/Original.jpg" medium="image" />
            <content:encoded><![CDATA[ <img src="https://blog.titan.tf/content/images/2020/07/Original.jpg" alt="⚔️ Development of Attack on Teufort"><p>In June of 2020, we launched our brand new game mode, Attack on Teufort after 4 years of development! The game mode brings Mann vs Machine into the PvP modes we love to play on, namely Payload, Capture the Flag, King of the Hill, 5CP, Attack/Defend, and Arena. While robots are playing on the attacking side, humans defend the objective from getting captured.</p><figure class="kg-card kg-embed-card kg-card-hascaption"><iframe width="612" height="344" src="https://www.youtube.com/embed/fYck-xUHJX4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><figcaption>World Premiere Trailer for AOT</figcaption></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://steamcommunity.com/groups/attackonteufort"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Steam Community :: Group :: Attack on Teufort</div><div class="kg-bookmark-description">🎬 Watch the 進撃の砦 Cinematic Trailer 🌍 Mann vs Machine has crossed over into these game modes, while supporting any mission and any map! Payload Stop the payload from reaching the bomb pit! Capture the Flag Robots have to fetch the bomb from their your base and deploy it theirs. Your goal is to stop…</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://steamcommunity.com/favicon.ico" alt="⚔️ Development of Attack on Teufort"><span class="kg-bookmark-author">mysttitan.tf 29 Jun @ 3:45am</span><span class="kg-bookmark-publisher">STEAM</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/c1/c12906852ce9a9e2e989b410dfc2e94942d2fb93_full.jpg" alt="⚔️ Development of Attack on Teufort"></div></a></figure><h2 id="developers">Developers</h2><p><a href="https://steamcommunity.com/profiles/76561198088419275">myst</a> is the main developer and the lead of this project. He founded <a href="https://titan.tf">Titan.TF</a> in 2015, a state-of-the-art Team Fortress 2 server community with revolutionary integration between the website and servers. He is currently the head of operations, managing all server operations, and the lead developer, driving the development forward. He writes all of the code for this project.</p><p><a href="https://steamcommunity.com/profiles/76561198139584452">Stoneman</a> is the other developer part of the team. He has moderated the <a href="https://titan.tf">Titan.TF</a> community servers in the past, but he is now helping to develop <a href="https://steamcommunity.com/groups/lambdafortressextended">Lambda Fortress</a>. He advises on how every challenge faced can be taken care of due to his expertise in mapping and entities. He is the key in driving this project forward, as the challenges faced are near impossible to overcome without his knowledge and advise. He also configures the maps and missions hosted, so that the game mode can work smoothly.</p><h2 id="inspiration">Inspiration</h2><p>The main inspiration behind creating this mode was the <strong>MvM Meets </strong>mod initially developed by the Potato.tf team back in 2016. The mode had offered a fresh and unique take on playing Mann vs Machine, but was never completed and fully released publicly.</p><figure class="kg-card kg-embed-card"><iframe width="612" height="344" src="https://www.youtube.com/embed/He6G8Lq1xUA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><h2 id="phase-1-first-development">Phase 1: First Development</h2><p>The initial development started in 2016, we wanted to recreate the MvM Meets mod after seeing how much fun it was. As massive Mann vs Machine fans ourselves, we would love to experience more ways to play and have fun. With the decline of official game updates, this project would bring new content to the table.</p><p>At this time, the team did not have any knowledge of how the mod could be developed as there was numerous challenges blocking us from getting the core logic. More will be explained in the challenges section later. All we managed to do here was place the Mann vs Machine logic into normal game modes and display the wave bar at the top of the hud. We could not proceed further.</p><p>We have not created a name for the mode at this time yet.</p><h2 id="phase-2-continued-development">Phase 2: Continued Development</h2><p>We took on the project again in 2020, 4 years after the first attempt at creating the mode.</p><p>Between 2016 and 2020, Stoneman joined the Lambda Fortress development team and has become experienced with Source mapping in Hammer. With this knowledge, he was able to advise on how the game mode could be developed.</p><p>During this time, myst gained plenty of knowledge and experience on SourceMod development after having pushed hundreds of feature updates to the Titan.TF community servers.</p><p>I guess you could say this mode took 4 years to develop.</p><hr><h1 id="development">Development</h1><p>Developing Attack on Teufort was no easy task. The most challenging part of creating this mode was making MvM work in normal game modes. This would create a hybrid of 2 modes running together. This created problems such as conflicting objective huds between the 2 modes.</p><h2 id="spawns">Spawns</h2><p>The robot spawns were what stopped us from continuing the development in 2016. Despite having populated the mission and waves, the robots would not spawn. We could not figure out why, but we eventually figured out the spawns had to be renamed to support the spawn names specified in the population files.</p><h2 id="missions">Missions</h2><h5 id="modifications">Modifications</h5><p>While we want to support any mission for any map, there is still some configuration required to get this working. We used the stock missions from the official MvM Tours, and missions from all Potato.tf campaigns. The spawn names have to be renamed, and tanks have to be removed from the mission, with credit compensation for the tanks not spawning.</p><h5 id="supporting-maps">Supporting Maps</h5><p>If we were to host missions for all the maps we offer, we had to duplicate all of the mission files for 1 map and replace the map name in order for the other maps to use these missions. This had created a proportionally large missions to maintain. At the time of writing, we host 152 missions on 110 maps, which meant that there was a combination of 16,610 mission files to create to support all 110 maps.</p><p>We created a script to automate this process, and it only takes a few seconds to generate all 16,610 mission files. However, uploading 16,000 files to our Europe and North American servers is still painful, they take hours upon hours to finally finish transferring.</p><h2 id="maps">Maps</h2><h4 id="configuration">Configuration</h4><p>As some maps have spawn changes, we needed to add configuration to tell the mode where the spawn has changed to after a point is captured. Without this, the mode does not automatically switch spawns. We supply the coordinates to teleport the robots to after this amount of points is captured, and the robots will teleport to the coordinates when they spawn.</p><h5 id="problematic-maps">Problematic Maps</h5><p>While we want to support any map, there were some maps that offered a different way of playing or was just not properly optimized.</p><p>Here are the Valve maps that we could not get to work.</p><ul><li>PL Snowycoast (robots are ubercharged on the whole map and can't leave spawn)</li><li>PL Fifthcurve Event (we can't find the payload)</li><li>CP Standin (we can't lock the points between waves)</li><li>CP Junction (robots are broken here)</li></ul><p>Here are some beautiful custom maps that cannot be supported. They cause problems with the robot navigation logic and do not work properly.</p><ul><li>CP Priderock (mid requires the use of the map's jump pad and robots don't know how to use them)</li><li>CP Sulfur (robots can't climb the platform on the last point)</li><li>CP Alloy (robots do not cap C)</li><li>PL Effigy (humans can cap and it breaks the mode)</li></ul><p>There were some other maps that we manage to support, but due to the special placement of some entities, we had to add additional configuration to the mode to support these maps.</p><ul><li>cp_hadal_b13a (robots will not go to the last point)</li></ul><h5 id="multi-stage-maps">Multi-Stage Maps</h5><p>We recently added support for multi-stage maps. However, this does not support all multi-stage maps. Due to some strange issue, the robots will not spawn on multi-stage Payload maps. We will still continue to explore ways to make this possible, but they can't be supported right now.</p><ul><li>PL Cactus Canyon (robots won't spawn on Stage 2)</li><li>PL Enclosure (robots won't spawn)</li><li>PL Goldrush (robot's won't spawn on Stage 2)</li><li>PL Hoodoo (robots won't spawn)</li><li>PL Thundermountain (robots won't spawn)</li><li>CP Snowplow (uses a custom timer and has a weird way of playing AD)</li></ul><h2 id="gamemodes">Gamemodes</h2><p>We want to add even more variety to the game modes that can cross with Mann vs Machine. However, some modes just do not make sense, are not fun to play on or conflict with the Mann vs Machine logic causing it to not work properly.</p><p><strong>Mannpower</strong><br>Robots cannot use grapple hooks and most areas require grapple hooks to traverse.<br><br><strong>Payload Race</strong><br>Robots don't work on payload race. It's not that fun either.<br><br><strong>Passtime</strong><br>It's not fun, and robots cannot throw the ball.</p><p><strong>Player Destruction</strong><br>The PD logic causes the MvM logic to disappear.</p><h2 id="robot-ai">Robot AI</h2><p>The default navigation files generated by the game is not very intelligent in near half of the cases. Some issues we observe are the robots tend to get stuck in a corner, stay in spawn or walk to the human team's spawn just to get stuck in a corner, seemingly to happen frequent on most KOTH maps.</p><p>We worked around this by teleporting bots outside of their spawn if they do not exit their spawn after a certain amount of time. This fixed most maps except KOTH, the robots still walk back to spawn in some scenarios.</p><h2 id="logic">Logic</h2><p>The gameplay logic does not trigger automatically when we run Mann vs Machine in normal game modes. Therefore, a lot of the gameplay logic is manually replicated by our code. Here we give 3 examples of how some of the automated logic is replicated.</p><p><strong>KOTH Timer</strong><br>The map does not count a wave start as a round started, which causes the timer to not tick down. We had to implement our own custom KOTH timer.</p><p><strong>Control Points</strong><br>When a wave ends, it does not count as a round end like normal modes. We have to manually reset all control points to their default state when the wave ends.</p><p><strong>Winning on 5CP</strong><br>When capturing the last point on a 5CP map, the map will automatically end the round and set the winning team as the victor. We have to bypass that and trigger the wave to end instead.</p><h2 id="upcoming-challenges">Upcoming Challenges</h2><p>Creating this mode was super challenging. We continue to face numerous challenges developing this mode today. Some of these challenges will stay with us for a long time, as they seem near impossible to work around.</p><p>One example is the MvM bomb hud, as the hud does not serve any purpose and as much as we want to remove it, there is just no way to remove it from the hud. The hud will show as long as the MvM logic is present, therefore making it impossible to remove it.</p><hr><h2 id="special-thanks">Special Thanks</h2><p>A few other people has contributed to the development of this game mode. They have given some advise on how some of the issues can be tackled. Without them, this would not have been possible.</p><ul><li><strong>trigger_hurt#0149 </strong>for advising on how to end the wave immediately, initializing the wave and collecting lost credits in robot spawns</li></ul> ]]></content:encoded>
        </item>
    </channel>
</rss>

{% endapi-method-response-example %} {% endapi-method-response %} {% endapi-method-spec %} {% endapi-method %}