<?xml version="1.0" encoding="UTF-8"?><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" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Salwan's Portfolio]]></title><description><![CDATA[List of projects and details about each]]></description><link>https://portfolio.cloudmillgames.com/</link><image><url>https://portfolio.cloudmillgames.com/favicon.png</url><title>Salwan&apos;s Portfolio</title><link>https://portfolio.cloudmillgames.com/</link></image><generator>Ghost 5.82</generator><lastBuildDate>Sun, 21 Jun 2026 17:13:13 GMT</lastBuildDate><atom:link href="https://portfolio.cloudmillgames.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Cloud Mill Games / Founder & Creator (2023-2024)]]></title><description><![CDATA[<p>Hack Tank (preview title) is a hack-n-slash Tanks game inspired by Diablo 2 core mechanics.</p><p>Development on the game began after <a href="https://portfolio.cloudmillgames.com/speak-of-the-wolf-lead-developer/" rel="noreferrer">project Conflict</a> was cancelled. I did all the coding and most of the art on the preview game. My brother modelled most of the enemy vehicles.</p><figure class="kg-card kg-image-card"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/2024-05-05_14-13-16.mkv_snapshot_03.32.826.jpg" class="kg-image" alt loading="lazy" width="1280" height="720" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/2024-05-05_14-13-16.mkv_snapshot_03.32.826.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/2024-05-05_14-13-16.mkv_snapshot_03.32.826.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/2024/05/2024-05-05_14-13-16.mkv_snapshot_03.32.826.jpg 1280w" sizes="(min-width: 720px) 720px"></figure><p>I used Godot</p>]]></description><link>https://portfolio.cloudmillgames.com/hack-tanks-creator/</link><guid isPermaLink="false">663a01218cda3c00011ba456</guid><category><![CDATA[game]]></category><category><![CDATA[3d]]></category><category><![CDATA[c++]]></category><category><![CDATA[desktop]]></category><category><![CDATA[godot]]></category><category><![CDATA[steam]]></category><category><![CDATA[gdscript]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 14:30:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/2024-05-05_14-13-16.mkv_snapshot_01.44.167.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/2024-05-05_14-13-16.mkv_snapshot_01.44.167.jpg" alt="Cloud Mill Games / Founder &amp; Creator (2023-2024)"><p>Hack Tank (preview title) is a hack-n-slash Tanks game inspired by Diablo 2 core mechanics.</p><p>Development on the game began after <a href="https://portfolio.cloudmillgames.com/speak-of-the-wolf-lead-developer/" rel="noreferrer">project Conflict</a> was cancelled. I did all the coding and most of the art on the preview game. My brother modelled most of the enemy vehicles.</p><figure class="kg-card kg-image-card"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/2024-05-05_14-13-16.mkv_snapshot_03.32.826.jpg" class="kg-image" alt="Cloud Mill Games / Founder &amp; Creator (2023-2024)" loading="lazy" width="1280" height="720" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/2024-05-05_14-13-16.mkv_snapshot_03.32.826.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/2024-05-05_14-13-16.mkv_snapshot_03.32.826.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/2024/05/2024-05-05_14-13-16.mkv_snapshot_03.32.826.jpg 1280w" sizes="(min-width: 720px) 720px"></figure><p>I used Godot 4.1 engine. The planned target platform was Windows, Mac, Linux (Steam).</p><p></p>
<!--kg-card-begin: html-->
<iframe width="560" height="315" src="https://www.youtube.com/embed/G-xr7u3sVcQ?si=sGiQa5YDnuGWGxcJ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

<!--kg-card-end: html-->
<h3 id="implementation-details">Implementation Details</h3><p>The game is written in GDScript with C++ GDExtension setup for critical bottlenecks. 3rd party extensions used: Gut (unit testing in-editor), ProtonScatter (terrain object painting), Terrain3D (terrain).</p><p>I used a custom-build of Godot 4.1 with modifications like adding depth-write function support to implement effects like highlighting blocked objects:</p><figure class="kg-card kg-video-card kg-width-regular" data-kg-thumbnail="https://portfolio.cloudmillgames.com/content/media/2024/05/depth_function_thumb.jpg" data-kg-custom-thumbnail>
            <div class="kg-video-container">
                <video src="https://portfolio.cloudmillgames.com/content/media/2024/05/depth_function.mp4" poster="https://img.spacergif.org/v1/1152x648/0a/spacer.png" width="1152" height="648" playsinline preload="metadata" style="background: transparent url(&apos;https://portfolio.cloudmillgames.com/content/media/2024/05/depth_function_thumb.jpg&apos;) 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">0:04</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1&#xD7;</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            
        </figure><p>For Hack Tanks development, I developed a frictionless method to use some principle elements from Entity-Component-System design rather than the standard Godot way. I called this system GECS.</p><p>For example, this is how one of the enemy tanks is setup:</p><figure class="kg-card kg-image-card"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/screenshot.1.png" class="kg-image" alt="Cloud Mill Games / Founder &amp; Creator (2023-2024)" loading="lazy" width="333" height="715"></figure><p>The tank object itself has no custom code. Its behavior is the result of a collection interacting components. Components can be removed or added at runtime to change the behavior of any entity.</p><p>Highlight capabilities in GECS:</p><ul><li>Components can communicate directly with sibling components</li><li>Supports tag components like <code>player</code> or <code>enemy</code> and ability to query entities by tag</li><li>Components can broadcast messages to other components in the entity</li><li>Support enforcing what type of entity a components can be attached to</li><li>Support enforcing that the owning entity of this component must also own specific other components to ensure correct dependencies</li></ul><p>This is while maintaining full compatibility with the normal Godot way of implementation so using components is optional. For example, Godot UI is driven by an excellent signal-slot system so no need for GECS there.</p><p>I arrived at GECS as a perfect middle ground after testing the use of <a href="https://github.com/GodotECS/godex" rel="noreferrer">Godex</a> and experimenting on my <a href="https://github.com/cloudmillgames/GECS" rel="noreferrer">own</a> and deciding against an intrusive implementation.</p>]]></content:encoded></item><item><title><![CDATA[Narrow Valley / CoFounder & Lead Developer  (2022-2023)]]></title><description><![CDATA[<p>I co-founded Narrow Valley along with two other excellent creators to work on <strong>Speak of the Wolf</strong>, our innovative simultaneous turn-based wargame with unique mechanics and an original concept.</p><p>Development took place between 2022 and 2023, I did the programming and contributed to game mechanics design.</p><p>Music and Game Design</p>]]></description><link>https://portfolio.cloudmillgames.com/speak-of-the-wolf-lead-developer/</link><guid isPermaLink="false">663a01738cda3c00011ba45f</guid><category><![CDATA[game]]></category><category><![CDATA[2d]]></category><category><![CDATA[desktop]]></category><category><![CDATA[godot]]></category><category><![CDATA[gdscript]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 14:15:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/title-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/title-1.png" alt="Narrow Valley / CoFounder &amp; Lead Developer  (2022-2023)"><p>I co-founded Narrow Valley along with two other excellent creators to work on <strong>Speak of the Wolf</strong>, our innovative simultaneous turn-based wargame with unique mechanics and an original concept.</p><p>Development took place between 2022 and 2023, I did the programming and contributed to game mechanics design.</p><p>Music and Game Design were done by <a href="https://www.tom-jensen.com" rel="noreferrer">Tom Jensen</a>, Vocalist - <a href="https://www.briarprastiti.com/" rel="noreferrer">Briar Prastiti</a><br>Art and Pipeline were done by: <a href="https://rainerweston.com" rel="noreferrer">Rainer Weston</a></p><figure class="kg-card kg-video-card kg-width-regular" data-kg-thumbnail="https://portfolio.cloudmillgames.com/content/media/2024/05/preview_trailer_latest_thumb.jpg" data-kg-custom-thumbnail>
            <div class="kg-video-container">
                <video src="https://portfolio.cloudmillgames.com/content/media/2024/05/preview_trailer_latest.webm" poster="https://img.spacergif.org/v1/1280x720/0a/spacer.png" width="1280" height="720" playsinline preload="metadata" style="background: transparent url(&apos;https://portfolio.cloudmillgames.com/content/media/2024/05/preview_trailer_latest_thumb.jpg&apos;) 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">0:44</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1&#xD7;</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            
        </figure><figure class="kg-card kg-image-card"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/unknown4-1.png" class="kg-image" alt="Narrow Valley / CoFounder &amp; Lead Developer  (2022-2023)" loading="lazy" width="1910" height="1027" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/unknown4-1.png 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/unknown4-1.png 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/unknown4-1.png 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/unknown4-1.png 1910w" sizes="(min-width: 720px) 720px"></figure><p>Our main toolkit for development and art creation: Godot 4, GDScript, Blender, Stable-Diffusion.</p><figure class="kg-card kg-image-card"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/unknown7-1.png" class="kg-image" alt="Narrow Valley / CoFounder &amp; Lead Developer  (2022-2023)" loading="lazy" width="1280" height="720" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/unknown7-1.png 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/unknown7-1.png 1000w, https://portfolio.cloudmillgames.com/content/images/2024/05/unknown7-1.png 1280w" sizes="(min-width: 720px) 720px"></figure><p>The project was cancelled in 2023 before reaching a public release.</p>]]></content:encoded></item><item><title><![CDATA[Cybersecurity / Contractor Software Engineer  (2022-2023)]]></title><description><![CDATA[<p>Designing, developing, testing, debugging, modern email/cloud cybersecurity solutions that are secure, reliable, performant, and extensible.<br><br>Main solutions:</p><ul><li>modern C++X (11,14,17,20) and CMake</li><li>Lua and Python</li><li>Docker containerization, email transaction systems, REST API, and TLS integration</li><li>OpenSSL, Redis, and POCO</li></ul><p>During my contracting work, I designed</p>]]></description><link>https://portfolio.cloudmillgames.com/cybersecurity-contractor-software-engineer/</link><guid isPermaLink="false">663a04508cda3c00011ba499</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[app]]></category><category><![CDATA[c++]]></category><category><![CDATA[containers]]></category><category><![CDATA[desktop]]></category><category><![CDATA[docker]]></category><category><![CDATA[linux]]></category><category><![CDATA[lua]]></category><category><![CDATA[python]]></category><category><![CDATA[microservices]]></category><category><![CDATA[centos]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 14:10:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/cybersec_wide.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/cybersec_wide.jpg" alt="Cybersecurity / Contractor Software Engineer  (2022-2023)"><p>Designing, developing, testing, debugging, modern email/cloud cybersecurity solutions that are secure, reliable, performant, and extensible.<br><br>Main solutions:</p><ul><li>modern C++X (11,14,17,20) and CMake</li><li>Lua and Python</li><li>Docker containerization, email transaction systems, REST API, and TLS integration</li><li>OpenSSL, Redis, and POCO</li></ul><p>During my contracting work, I designed and developed integration of commercial cybersecurity systems with <a href="https://www.cert.govt.nz" rel="noreferrer">CertNZ</a>.</p>]]></content:encoded></item><item><title><![CDATA[SMX / Senior Developer  (2019-2022)]]></title><description><![CDATA[<p>My focus in SMX was dedicated to development, debugging, and build engineering of Email cybersecurity systems and services.</p><p>Core technologies utilized through my experience there:</p><ul><li>C++X and CMake</li><li>Lua scripting and tooling</li><li>Python automation and tooling</li><li>Containerization and Docker</li><li>RHEL/CentOS/Fedora Linux programming</li><li>microservices design and implementation</li><li>Momentum</li></ul>]]></description><link>https://portfolio.cloudmillgames.com/smx-senior-developer/</link><guid isPermaLink="false">663a04348cda3c00011ba492</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[app]]></category><category><![CDATA[c++]]></category><category><![CDATA[centos]]></category><category><![CDATA[containers]]></category><category><![CDATA[desktop]]></category><category><![CDATA[docker]]></category><category><![CDATA[linux]]></category><category><![CDATA[lua]]></category><category><![CDATA[microservices]]></category><category><![CDATA[momentum]]></category><category><![CDATA[python]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 14:09:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/smx.png" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/smx.png" alt="SMX / Senior Developer  (2019-2022)"><p>My focus in SMX was dedicated to development, debugging, and build engineering of Email cybersecurity systems and services.</p><p>Core technologies utilized through my experience there:</p><ul><li>C++X and CMake</li><li>Lua scripting and tooling</li><li>Python automation and tooling</li><li>Containerization and Docker</li><li>RHEL/CentOS/Fedora Linux programming</li><li>microservices design and implementation</li><li>Momentum API among many other Email-specific technologies</li><li>Azure, Git, Gerrit, YouTrack, and Jenkins for project management and CI/CD</li><li>SSL/TLS pipelines programming</li><li>PostreSQL and Redis programming</li><li>Lots of Bash scripting, Makefiles, C++ centric libraries, and more</li></ul><p>Highlights from my experience:</p><ul><li>Upgraded the code-base from old C/C++ to modern C++14, 17, or 20. Build system to CMAKE. And scripting to Lua. Expanded unit testing significantly. Created and optimized deployment processes.</li><li>Designed, developed, tested, and deployed many core components of SMX&apos;s industry leading filtering engine</li><li>Debugged and resolved very tricky technical challenges</li></ul>]]></content:encoded></item><item><title><![CDATA[Media Design School / Gamedev Lecturer  (2015-2018)]]></title><description><![CDATA[<p></p><h2 id="lecturer">Lecturer</h2><p>Delivering lectures in various core game development topics focusing on: Physics Programming, Game Engine Development, Game Design, and C++ Programming.</p><p>Utilizing my expertise to constantly advance and update existing material to match the current practices and advancements in Game Development.</p><h2 id="mentor">Mentor</h2><p>Mentorship of MDS BSE students through a number</p>]]></description><link>https://portfolio.cloudmillgames.com/media-design-school-gamedev-lecturer/</link><guid isPermaLink="false">6642ffe31616ef000185cfdb</guid><category><![CDATA[education]]></category><category><![CDATA[2d]]></category><category><![CDATA[3d]]></category><category><![CDATA[c++]]></category><category><![CDATA[console]]></category><category><![CDATA[desktop]]></category><category><![CDATA[gamejam]]></category><category><![CDATA[multiplayer]]></category><category><![CDATA[unreal-engine]]></category><category><![CDATA[unity3d]]></category><category><![CDATA[C#]]></category><category><![CDATA[public-speaking]]></category><category><![CDATA[academic]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 14:08:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/mds_wide.png" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/mds_wide.png" alt="Media Design School / Gamedev Lecturer  (2015-2018)"><p></p><h2 id="lecturer">Lecturer</h2><p>Delivering lectures in various core game development topics focusing on: Physics Programming, Game Engine Development, Game Design, and C++ Programming.</p><p>Utilizing my expertise to constantly advance and update existing material to match the current practices and advancements in Game Development.</p><h2 id="mentor">Mentor</h2><p>Mentorship of MDS BSE students through a number of games and tech projects through their 2nd and 3rd year. This included development of numerous prototypes, multiple vertical slices, and 1 game production project that goes through the entire process  of game development from concept to release (2 semesters in 3rd year).</p><p>My priority was supporting BSE students to graduate with as much readiness to real world game development requirements as possible. I&apos;m proud to say several of the students I lectured and mentored through their 3 years of study went on to work as game programmers in the games industry.</p><h2 id="producer"><strong>Producer</strong></h2><p>Held the role of Game Producer among other excellent colleagues for several startup student teams through the development of their first commercial product. MDS had an incubator program where exceptional production teams can be granted startup incubation after graduation.</p>]]></content:encoded></item><item><title><![CDATA[Meteoric Games / Lead Developer  (2013-2015)]]></title><description><![CDATA[<h3 id="project-paragon">Project Paragon</h3><p>Paragon was an indie sandbox space sim set in an alternative future heavily inspired by classic 80s sci-fi. Fight, trade and explore in a massive procedurally generated galaxy of millions of planets and stars. Amass money and power, upgrade and purchase new ships, and one day create your</p>]]></description><link>https://portfolio.cloudmillgames.com/name-of-project/</link><guid isPermaLink="false">6639feba8cda3c00011ba438</guid><category><![CDATA[game]]></category><category><![CDATA[c++]]></category><category><![CDATA[lua]]></category><category><![CDATA[3d]]></category><category><![CDATA[desktop]]></category><category><![CDATA[linux]]></category><category><![CDATA[steam]]></category><category><![CDATA[opengl]]></category><category><![CDATA[glsl]]></category><category><![CDATA[macos]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 14:07:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/1-2.jpg" medium="image"/><content:encoded><![CDATA[<h3 id="project-paragon">Project Paragon</h3><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/1-2.jpg" alt="Meteoric Games / Lead Developer  (2013-2015)"><p>Paragon was an indie sandbox space sim set in an alternative future heavily inspired by classic 80s sci-fi. Fight, trade and explore in a massive procedurally generated galaxy of millions of planets and stars. Amass money and power, upgrade and purchase new ships, and one day create your own small fleet with a base to call home.</p><p>Paragon is written in C/C++ and Lua. Powered by OpenGL and targeting Windows, Linux and OSX.</p><p>Main development solutions and tools:</p><ul><li>Visual Studio 2013, GCC/Make and XCode</li><li>Git for source management, github for project management</li><li>Python and bash for tooling and automation</li><li>gDebugger and GPU PerfStudio for graphics debugging/profiling.</li><li>OpenGL, Lua C API full integration, GLSL, assimp and sigc++</li></ul><p>During my time with Meteoric Games I led the development of <strong>Paragon</strong>, after being greenlit on Steam. After I left Meteoric, Paragon was renamed Jumpdrive due to Epic releasing a game with the same name.</p><p>Paragon was unique in that all its code had to be re-released back to the opensource community as it started as a fork of an opensource game called Pioneer. <a href="https://github.com/MeteoricGames/pioneer/commits/master/" rel="noreferrer">Here are the commits of the github fork we used as our release channel back to Pioneer</a>, you can see my contributions there (user:<em> Salwan</em>).</p><figure class="kg-card kg-video-card kg-width-regular" data-kg-thumbnail="https://portfolio.cloudmillgames.com/content/media/2024/05/trailer_max_thumb.jpg" data-kg-custom-thumbnail>
            <div class="kg-video-container">
                <video src="https://portfolio.cloudmillgames.com/content/media/2024/05/trailer_max.webm" poster="https://img.spacergif.org/v1/1920x1080/0a/spacer.png" width="1920" height="1080" playsinline preload="metadata" style="background: transparent url(&apos;https://portfolio.cloudmillgames.com/content/media/2024/05/trailer_max_thumb.jpg&apos;) 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">2:15</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1&#xD7;</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            
        </figure><p>Paragon was a super interesting project for me due to the following:</p><ul><li>based on an open-source game called Pioneer, which means all the work I did for Paragon had to be released back to Pioneer as opensource</li><li>Massive open universe game with procedurally generated planets, biomes, stars, and gameplay events</li><li>C++/OpenGL 3 custom graphics and physics engine</li><li>Lua integration as the game&apos;s scripting language of choice</li><li>Super passionate community surrounding the game</li></ul><p>Unfortunately I had to leave Meteoric Games earlier than I hoped due to moving internationally.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/ss_1e3c8e521e166267a2b1f08f2bb9e20ec90ac7ba.1920x1080.jpg" width="1920" height="1080" loading="lazy" alt="Meteoric Games / Lead Developer  (2013-2015)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/ss_1e3c8e521e166267a2b1f08f2bb9e20ec90ac7ba.1920x1080.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/ss_1e3c8e521e166267a2b1f08f2bb9e20ec90ac7ba.1920x1080.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/ss_1e3c8e521e166267a2b1f08f2bb9e20ec90ac7ba.1920x1080.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/ss_1e3c8e521e166267a2b1f08f2bb9e20ec90ac7ba.1920x1080.jpg 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/ss_453bd74503fcc525770b904e85b4464c637f1535.1920x1080.jpg" width="1920" height="1080" loading="lazy" alt="Meteoric Games / Lead Developer  (2013-2015)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/ss_453bd74503fcc525770b904e85b4464c637f1535.1920x1080.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/ss_453bd74503fcc525770b904e85b4464c637f1535.1920x1080.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/ss_453bd74503fcc525770b904e85b4464c637f1535.1920x1080.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/ss_453bd74503fcc525770b904e85b4464c637f1535.1920x1080.jpg 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/ss_503eb3e5d3c7ac59a01aba4145c642727da90e6c.1920x1080.jpg" width="1920" height="1080" loading="lazy" alt="Meteoric Games / Lead Developer  (2013-2015)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/ss_503eb3e5d3c7ac59a01aba4145c642727da90e6c.1920x1080.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/ss_503eb3e5d3c7ac59a01aba4145c642727da90e6c.1920x1080.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/ss_503eb3e5d3c7ac59a01aba4145c642727da90e6c.1920x1080.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/ss_503eb3e5d3c7ac59a01aba4145c642727da90e6c.1920x1080.jpg 1920w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/ss_813aa02bf191e3ef1e06c1f53af8c783c20d5c7e.1920x1080.jpg" width="1920" height="1080" loading="lazy" alt="Meteoric Games / Lead Developer  (2013-2015)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/ss_813aa02bf191e3ef1e06c1f53af8c783c20d5c7e.1920x1080.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/ss_813aa02bf191e3ef1e06c1f53af8c783c20d5c7e.1920x1080.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/ss_813aa02bf191e3ef1e06c1f53af8c783c20d5c7e.1920x1080.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/ss_813aa02bf191e3ef1e06c1f53af8c783c20d5c7e.1920x1080.jpg 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/ss_6855fdb8acefa27779cbad87401a150d209cb50b.1920x1080.jpg" width="1920" height="1080" loading="lazy" alt="Meteoric Games / Lead Developer  (2013-2015)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/ss_6855fdb8acefa27779cbad87401a150d209cb50b.1920x1080.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/ss_6855fdb8acefa27779cbad87401a150d209cb50b.1920x1080.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/ss_6855fdb8acefa27779cbad87401a150d209cb50b.1920x1080.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/ss_6855fdb8acefa27779cbad87401a150d209cb50b.1920x1080.jpg 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/ss_4914063fe3406a8e70836e6a554702c32e666e33.1920x1080.jpg" width="1920" height="1080" loading="lazy" alt="Meteoric Games / Lead Developer  (2013-2015)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/ss_4914063fe3406a8e70836e6a554702c32e666e33.1920x1080.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/ss_4914063fe3406a8e70836e6a554702c32e666e33.1920x1080.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/ss_4914063fe3406a8e70836e6a554702c32e666e33.1920x1080.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/ss_4914063fe3406a8e70836e6a554702c32e666e33.1920x1080.jpg 1920w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/ss_a72400ecc646c55fd8dbff262159dc84c65b51d3.1920x1080.jpg" width="1920" height="1080" loading="lazy" alt="Meteoric Games / Lead Developer  (2013-2015)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/ss_a72400ecc646c55fd8dbff262159dc84c65b51d3.1920x1080.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/ss_a72400ecc646c55fd8dbff262159dc84c65b51d3.1920x1080.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/ss_a72400ecc646c55fd8dbff262159dc84c65b51d3.1920x1080.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/ss_a72400ecc646c55fd8dbff262159dc84c65b51d3.1920x1080.jpg 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/ss_b6e5bc31112fba12e2b7761882c903054beb75ce.1920x1080.jpg" width="1920" height="1080" loading="lazy" alt="Meteoric Games / Lead Developer  (2013-2015)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/ss_b6e5bc31112fba12e2b7761882c903054beb75ce.1920x1080.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/ss_b6e5bc31112fba12e2b7761882c903054beb75ce.1920x1080.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/ss_b6e5bc31112fba12e2b7761882c903054beb75ce.1920x1080.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/ss_b6e5bc31112fba12e2b7761882c903054beb75ce.1920x1080.jpg 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/ss_d123b820979f2529090577db1a4e6e946737bc1b.1920x1080.jpg" width="1920" height="1080" loading="lazy" alt="Meteoric Games / Lead Developer  (2013-2015)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/ss_d123b820979f2529090577db1a4e6e946737bc1b.1920x1080.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/ss_d123b820979f2529090577db1a4e6e946737bc1b.1920x1080.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/ss_d123b820979f2529090577db1a4e6e946737bc1b.1920x1080.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/ss_d123b820979f2529090577db1a4e6e946737bc1b.1920x1080.jpg 1920w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>Some highlights from my experience working on Paragon:</p><ul><li>Upgraded the graphics engine from OpenGL 2.0 to OpenGL 3</li><li>Ported the game to MacOS and Linux native</li><li>Developed an IBL lighting system and most of the effects you see in the screenshots</li><li>Expanded Lua integration, re-wrote parts of the AI, the input system, expanded procedural mission generation, and lots more</li><li>managed build and deployment to Steamworks for several months including community communication</li></ul>]]></content:encoded></item><item><title><![CDATA[GoVolDot / Remaker  (2022)]]></title><description><![CDATA[<p>GoVolDot is a (mostly) faithful remake of my favorite game as a kid on my first computer which was an odd 80s NEC computer (PC-6001 SR) imported from Japan. Volguard had many ports but none greater than&#xA0;the one on PC-6001, I&apos;m biased though so don&apos;</p>]]></description><link>https://portfolio.cloudmillgames.com/govoldot-creator/</link><guid isPermaLink="false">663a053e8cda3c00011ba4ba</guid><category><![CDATA[game]]></category><category><![CDATA[2d]]></category><category><![CDATA[browser]]></category><category><![CDATA[desktop]]></category><category><![CDATA[gdscript]]></category><category><![CDATA[godot]]></category><category><![CDATA[itch.io]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 14:05:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/1PuYZ9.png" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/1PuYZ9.png" alt="GoVolDot / Remaker  (2022)"><p>GoVolDot is a (mostly) faithful remake of my favorite game as a kid on my first computer which was an odd 80s NEC computer (PC-6001 SR) imported from Japan. Volguard had many ports but none greater than&#xA0;the one on PC-6001, I&apos;m biased though so don&apos;t take my word for it.</p><figure class="kg-card kg-image-card"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/m_jAMP-1.png" class="kg-image" alt="GoVolDot / Remaker  (2022)" loading="lazy" width="1280" height="800" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/m_jAMP-1.png 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/m_jAMP-1.png 1000w, https://portfolio.cloudmillgames.com/content/images/2024/05/m_jAMP-1.png 1280w" sizes="(min-width: 720px) 720px"></figure><p>GoVolDot is fully playable in browser (but desktop build adds custom music). Give it a play here (SPACE to fire, X to change color theme):</p>
<!--kg-card-begin: html-->
<iframe frameborder="0" src="https://itch.io/embed/1530804" width="552" height="167"><a href="https://cloudmillgames.itch.io/govoldot">GoVolDot by Cloud Mill Games, ZenithSal</a></iframe>
<!--kg-card-end: html-->
<p>GoVolDot was created in Godot 3 and GDScript. For fun I used Google Spreadsheets + Javascript as its level editor. A level sheet looks like this:</p><figure class="kg-card kg-image-card"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/level_editor.png" class="kg-image" alt="GoVolDot / Remaker  (2022)" loading="lazy" width="2000" height="548" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/level_editor.png 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/level_editor.png 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/level_editor.png 1600w, https://portfolio.cloudmillgames.com/content/images/size/w2400/2024/05/level_editor.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>I regret nothing &#x1F602; it worked well enough.</p>]]></content:encoded></item><item><title><![CDATA[Core / Creator  (2020)]]></title><description><![CDATA[<p>Core is an arcady physics minimalist game with focus on sound design. It was my entry for Ludum Dare 46 gamejam so was designed and created within 2 days.</p><p>I used Godot 3 and GDScript to develop the game. There are two versions of Core, one with my own composed</p>]]></description><link>https://portfolio.cloudmillgames.com/core-creator/</link><guid isPermaLink="false">663a02bd8cda3c00011ba47e</guid><category><![CDATA[gamejam]]></category><category><![CDATA[2d]]></category><category><![CDATA[desktop]]></category><category><![CDATA[game]]></category><category><![CDATA[gdscript]]></category><category><![CDATA[godot]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 14:04:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/ZenithSal-s-Core-Gameplay---LD46.mp4_snapshot_03.37.568.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/ZenithSal-s-Core-Gameplay---LD46.mp4_snapshot_03.37.568.jpg" alt="Core / Creator  (2020)"><p>Core is an arcady physics minimalist game with focus on sound design. It was my entry for Ludum Dare 46 gamejam so was designed and created within 2 days.</p><p>I used Godot 3 and GDScript to develop the game. There are two versions of Core, one with my own composed music which was my entry to the jam: <a href="https://ldjam.com/events/ludum-dare/46/core" rel="noreferrer">Ludum Dare&apos;s Core page with downloads</a></p><p>The other used royalty-free music, here&apos;s a full playthrough of that:</p>
<!--kg-card-begin: html-->
<iframe width="560" height="315" src="https://www.youtube.com/embed/YRUN-03Lfnc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<!--kg-card-end: html-->
<p></p>]]></content:encoded></item><item><title><![CDATA[Sanity or Sunrise / Programming  (2022)]]></title><description><![CDATA[<p>Sanity or Sunrise is a 3D Lovecraftian vampirism game, it was my team&apos;s entry to <a href="https://itch.io/jam/game-jam-aotearoa-2022/rate/1540934" rel="noreferrer">Game Jam Aotearoa 2022</a>. I entered the Game Jam forming a team with a couple of excellent creators (we used the name TeamHex). </p><p>Sanity or Sunrise was developed using Godot 3 and GDScript</p>]]></description><link>https://portfolio.cloudmillgames.com/sanity-or-sunrise/</link><guid isPermaLink="false">663a05a78cda3c00011ba4c6</guid><category><![CDATA[gamejam]]></category><category><![CDATA[3d]]></category><category><![CDATA[desktop]]></category><category><![CDATA[game]]></category><category><![CDATA[godot]]></category><category><![CDATA[gdscript]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 14:00:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/LYjw-F.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/LYjw-F.jpg" alt="Sanity or Sunrise / Programming  (2022)"><p>Sanity or Sunrise is a 3D Lovecraftian vampirism game, it was my team&apos;s entry to <a href="https://itch.io/jam/game-jam-aotearoa-2022/rate/1540934" rel="noreferrer">Game Jam Aotearoa 2022</a>. I entered the Game Jam forming a team with a couple of excellent creators (we used the name TeamHex). </p><p>Sanity or Sunrise was developed using Godot 3 and GDScript over 3 days from concept to release.</p><p>It is playable in browser but laggy (we didn&apos;t have time to optimize for browser runtime), the desktop build should run much better.</p>
<!--kg-card-begin: html-->
<iframe width="552" height="167" frameborder="0" src="https://itch.io/embed/1540934"><a href="https://gravebuddy.itch.io/sanity-or-sunrise">Sanity or Sunrise by Gravebuddy, Tom Jensen, ZenithSal</a></iframe>
<!--kg-card-end: html-->
]]></content:encoded></item><item><title><![CDATA[Zamron Encounter / Creator  (2012)]]></title><description><![CDATA[<p><strong>Zamron Encounter</strong> is an original retro first person shooter game I created and released between 2011 and 2012 targeting Flash player in browser.</p><figure class="kg-card kg-video-card kg-width-regular" data-kg-thumbnail="https://portfolio.cloudmillgames.com/content/media/2024/05/zamron_trailer_nvec_thumb.jpg" data-kg-custom-thumbnail>
            <div class="kg-video-container">
                <video src="https://portfolio.cloudmillgames.com/content/media/2024/05/zamron_trailer_nvec.webm" poster="https://img.spacergif.org/v1/1280x720/0a/spacer.png" width="1280" height="720" playsinline preload="metadata" style="background: transparent url(&apos;https://portfolio.cloudmillgames.com/content/media/2024/05/zamron_trailer_nvec_thumb.jpg&apos;) 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">0:45</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1&#xD7;</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            
        </figure><p></p><p>The game was released on Kongregate on July 2012, however it no longer works there due to depending on the Flash</p>]]></description><link>https://portfolio.cloudmillgames.com/zamron-encounter-creator/</link><guid isPermaLink="false">663a01b48cda3c00011ba468</guid><category><![CDATA[game]]></category><category><![CDATA[3d]]></category><category><![CDATA[browser]]></category><category><![CDATA[flash]]></category><category><![CDATA[actionscript3]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 12:15:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/2.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/2.jpg" alt="Zamron Encounter / Creator  (2012)"><p><strong>Zamron Encounter</strong> is an original retro first person shooter game I created and released between 2011 and 2012 targeting Flash player in browser.</p><figure class="kg-card kg-video-card kg-width-regular" data-kg-thumbnail="https://portfolio.cloudmillgames.com/content/media/2024/05/zamron_trailer_nvec_thumb.jpg" data-kg-custom-thumbnail>
            <div class="kg-video-container">
                <video src="https://portfolio.cloudmillgames.com/content/media/2024/05/zamron_trailer_nvec.webm" poster="https://img.spacergif.org/v1/1280x720/0a/spacer.png" width="1280" height="720" playsinline preload="metadata" style="background: transparent url(&apos;https://portfolio.cloudmillgames.com/content/media/2024/05/zamron_trailer_nvec_thumb.jpg&apos;) 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">0:45</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1&#xD7;</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            
        </figure><p></p><p>The game was released on Kongregate on July 2012, however it no longer works there due to depending on the Flash player.</p><p>Zamron was created using Actionscript 3 and FlexSDK, targeting Flash 10 running in browser. Back then Flash didn&apos;t support hardware accelerated graphics yet, so the game uses software 3D graphics leading to its low resolution and abysmal framerate.</p><h3 id="development-tools">Development tools:</h3><ul><li>Flash/Actionscript 3</li><li>FlashDevelop</li><li>Flex SDK for Flash 10.2, Away3D 3.6</li><li>Mercurial Hg for source management</li></ul><h3 id="features">Features:</h3><ul><li>Stylish retro 3D graphics and FPS mechanics</li><li>Fire weapons or cast spells, each with multiple upgrades</li><li>8 Levels and 2 boss fights</li><li>4 types of Monsters each with 3 different AI levels, +1 final boss</li><li>2 endings</li></ul>]]></content:encoded></item><item><title><![CDATA[Peak Games / Flash Game Developer  (2012-2013)]]></title><description><![CDATA[<p><a href="https://peak.com/" rel="noreferrer">Peak Games</a> was one of the leading social and mobile games development studios in central Asia and the Middle East. During my time with Peak Games, I worked on multiple social gaming projects all implemented using Flash/Actionscript3 and targeting the Facebook platform. Most of my work with the team</p>]]></description><link>https://portfolio.cloudmillgames.com/cybersecurity-senior-developer/</link><guid isPermaLink="false">663a03d58cda3c00011ba489</guid><category><![CDATA[game]]></category><category><![CDATA[2d]]></category><category><![CDATA[actionscript3]]></category><category><![CDATA[browser]]></category><category><![CDATA[flash]]></category><category><![CDATA[multiplayer]]></category><category><![CDATA[python]]></category><category><![CDATA[java]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 12:00:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/7.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/7.jpg" alt="Peak Games / Flash Game Developer  (2012-2013)"><p><a href="https://peak.com/" rel="noreferrer">Peak Games</a> was one of the leading social and mobile games development studios in central Asia and the Middle East. During my time with Peak Games, I worked on multiple social gaming projects all implemented using Flash/Actionscript3 and targeting the Facebook platform. Most of my work with the team was on Casino Plus, a multiplayer casino game with highly integrated social features via Facebook API.</p><p>Role: <strong>Flash Software Engineer</strong></p><h3 id="project-casino-plus"><strong>Project Casino Plus</strong></h3><p>Social casino games are popular among adult casual gamers. Casino Plus is a group of casino games that targets that audience and it&apos;s based on in-game virtual money. It includes multiple games each operating as a full game, I was part of a team of 11 developers working at Peak Games bringing the Casino Plus idea to reality.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/1-3.jpg" width="1645" height="800" loading="lazy" alt="Peak Games / Flash Game Developer  (2012-2013)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/1-3.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/1-3.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/1-3.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/1-3.jpg 1645w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/4-1.jpg" width="1645" height="831" loading="lazy" alt="Peak Games / Flash Game Developer  (2012-2013)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/4-1.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/4-1.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/4-1.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/4-1.jpg 1645w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/6.jpg" width="1645" height="784" loading="lazy" alt="Peak Games / Flash Game Developer  (2012-2013)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/6.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/6.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/6.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/6.jpg 1645w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/7-1.jpg" width="1645" height="783" loading="lazy" alt="Peak Games / Flash Game Developer  (2012-2013)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/7-1.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/7-1.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/7-1.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/7-1.jpg 1645w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/10.jpg" width="1645" height="798" loading="lazy" alt="Peak Games / Flash Game Developer  (2012-2013)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/10.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/10.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/10.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/10.jpg 1645w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/13.jpg" width="1645" height="786" loading="lazy" alt="Peak Games / Flash Game Developer  (2012-2013)" srcset="https://portfolio.cloudmillgames.com/content/images/size/w600/2024/05/13.jpg 600w, https://portfolio.cloudmillgames.com/content/images/size/w1000/2024/05/13.jpg 1000w, https://portfolio.cloudmillgames.com/content/images/size/w1600/2024/05/13.jpg 1600w, https://portfolio.cloudmillgames.com/content/images/2024/05/13.jpg 1645w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>The platform of choice was Facebook and Flash. I was responsible for developing and maintaining 2 games as well as most of the shared features between games.</p><h3 id="development-tools"><strong>Development Tools:</strong></h3><ul><li>Actionscript3 and Adobe Flash</li><li>FlashDevelop</li><li>Git for source management</li><li>Python for automation. Ant and Maven for CI/CD</li><li>Flash TCP sockets for multiplayer networking</li></ul><h3 id="features"><strong>Features:</strong></h3><ul><li>Multiple full featured games: Roulette, Blackjack, Craps, Bingo, and Slots</li><li>Games are multiplayer with realtime chating and full social integration into facebook</li><li>Game-specific Power Ups and other fun features that make playing games more interesting and rewarding</li></ul><h3 id="my-experience">My experience:</h3><p><strong>Components</strong></p><ul><li>Developed UI game components</li><li>Developed sound effects and music component</li><li>Developed social integration components</li></ul><p><strong>Roulette</strong></p><ul><li>Implemented visual effects</li><li>Implemented gameplay features</li></ul><p><strong>Blackjack</strong></p><ul><li>Implemented gameplay features</li></ul><p><strong>Slots</strong></p><ul><li>Implemented visual effects</li><li>Implemented multiplayer gameplay features</li></ul><p><strong>Bingo</strong></p><ul><li>Developed core logic</li><li>Developed multiplayer gameplay</li></ul><p><strong>Pipeline</strong></p><ul><li>Developed build automation tools using Python/PyQt</li></ul>]]></content:encoded></item><item><title><![CDATA[Emerge / Creator  (2012)]]></title><description><![CDATA[<p>Created Emerge &#x644;&#x627;&#x642;&#x64A;&#x648;&#x62F; for GameZanga 2012 game jam, remastered in 2024. Play the remaster here:</p>
<!--kg-card-begin: html-->
<iframe frameborder="0" src="https://itch.io/embed/2644948" width="552" height="167"><a href="https://zenithsal.itch.io/emerge-remaster">Emerge Remaster &#x644;&#x627;&#x642;&#x64A;&#x648;&#x62F; by ZenithSal</a></iframe>
<!--kg-card-end: html-->
<p>Original gamejam entry was written in Actionscript 3 and Flex SDK. Remaster was ported to Haxe and OpenFL.</p>]]></description><link>https://portfolio.cloudmillgames.com/emerge-creator/</link><guid isPermaLink="false">663a01fa8cda3c00011ba473</guid><category><![CDATA[gamejam]]></category><category><![CDATA[2d]]></category><category><![CDATA[actionscript3]]></category><category><![CDATA[haxe]]></category><category><![CDATA[browser]]></category><category><![CDATA[flash]]></category><category><![CDATA[game]]></category><category><![CDATA[itch.io]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 11:45:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/emerge1z-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/emerge1z-1.png" alt="Emerge / Creator  (2012)"><p>Created Emerge &#x644;&#x627;&#x642;&#x64A;&#x648;&#x62F; for GameZanga 2012 game jam, remastered in 2024. Play the remaster here:</p>
<!--kg-card-begin: html-->
<iframe frameborder="0" src="https://itch.io/embed/2644948" width="552" height="167"><a href="https://zenithsal.itch.io/emerge-remaster">Emerge Remaster &#x644;&#x627;&#x642;&#x64A;&#x648;&#x62F; by ZenithSal</a></iframe>
<!--kg-card-end: html-->
<p>Original gamejam entry was written in Actionscript 3 and Flex SDK. Remaster was ported to Haxe and OpenFL.</p>]]></content:encoded></item><item><title><![CDATA[Small World Interactive / Game and Graphics Developer (2012)]]></title><description><![CDATA[<p>Role: <strong>Game Developer and Lead Rendering Engineer</strong> (multiple hats)</p><p>Unity3D programming, Shader development and rendering optimization on PC/iOS/Android, realtime rendering research, developing Augmented Reality applications for iOS/Android, and Flash/Facebook social games development.</p><h2 id="tools">Tools</h2><ul><li>Visual Studio/C# and C/C++</li><li>MonoDevelop/C# and Javascript</li><li>FlashDevelop and Actionscript3</li></ul>]]></description><link>https://portfolio.cloudmillgames.com/small-world-interactive-game-and-graphics-developer/</link><guid isPermaLink="false">663a04888cda3c00011ba4a0</guid><category><![CDATA[game]]></category><category><![CDATA[2d]]></category><category><![CDATA[actionscript3]]></category><category><![CDATA[browser]]></category><category><![CDATA[C#]]></category><category><![CDATA[app]]></category><category><![CDATA[desktop]]></category><category><![CDATA[flash]]></category><category><![CDATA[glsl]]></category><category><![CDATA[multiplayer]]></category><category><![CDATA[unity3d]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 11:30:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/1-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/1-1.jpg" alt="Small World Interactive / Game and Graphics Developer (2012)"><p>Role: <strong>Game Developer and Lead Rendering Engineer</strong> (multiple hats)</p><p>Unity3D programming, Shader development and rendering optimization on PC/iOS/Android, realtime rendering research, developing Augmented Reality applications for iOS/Android, and Flash/Facebook social games development.</p><h2 id="tools">Tools</h2><ul><li>Visual Studio/C# and C/C++</li><li>MonoDevelop/C# and Javascript</li><li>FlashDevelop and Actionscript3</li><li>Unity3D engine and Cg shaders</li><li>Git and Mercurial</li><li>AR Toolkit Pro</li><li>Android</li><li>AIR SDK and Flex SDK</li><li>Facebook API</li></ul><h2 id="project-panda-car-racing">Project Panda Car Racing</h2><p>A 3D racing game with social media features (Mario Kart genre). Developed using Unity3D &amp; C# and released for browsers on Facebook games platform. Ran as a successful commercial promotional competition.</p><p><br>Role: <strong>Game Developer</strong></p><ul><li>Implemented gameplay features</li><li>Implemented client anti-hack protection layer</li></ul><p></p><h2 id="project-nurse-the-fire-1-2">Project Nurse the Fire 1  &amp; 2</h2><p></p><p>A casual facebook social game with time management features. Developed using Flash/Air. Released as a commercial promotional game on facebook games platform. Was successful enough that a sequel was developed led by myself as well, with expanded mechanics and multiplayer features.</p><p>Role: <strong>Lead Developer</strong></p><ul><li>Contributed to game design of both 1 and 2</li><li>Developed core gameplay features</li><li>Developed social layer via Facebook</li><li>Developed multiplayer gameplay features collaborating with the lead backend developer</li></ul><p></p><h2 id="project-knorr-yummy-rice">Project Knorr Yummy Rice</h2><p>A 3D Time management game. Developed using Unity3D and C#. Released as a commercial promotional kiosk game.</p><p>Role: <strong>Game Designer/Developer</strong><br></p><ul><li>Designed and balanced gameplay features and functionality</li><li>Developed 3D characters behavior and interaction</li><li>Developed shaders and visual effects</li></ul><h2 id="project-copenhagen-world-expo">Project Copenhagen World Expo</h2><p>An augmented reality application for Android/iOS. Developed in Unity3D and C#. Using AR Toolkit Pro for AR features. Shown in the world expo in South Korea that year for Copenhagen.</p><p><br>Role: <strong>Lead Rendering Developer</strong><br></p><ul><li>Developed realtime shaders and visual effects hand-in-hand with the graphics team</li><li>Optimized product for Android devices<br></li></ul><h2 id="project-egypt-ar-experience">Project Egypt AR Experience</h2><p>an augmented reality application for Android/iOS. Developed in Unity3D and C#. Using AR Toolkit Pro for AR features. Shown in the world expo in South Korea that year for Egypt.</p><p>Role: <strong>Lead Rendering Developer</strong></p><ul><li>Developed realtime shaders and visual effects hand-in-hand with the graphics team</li><li>Optimized product for Android devices</li></ul><p></p><p>TODO: from old portfolio, detailing nurse the fire</p><h2 id="project-nurse-the-fire">Project Nurse the Fire</h2><p>As part of my work in Small World Interactive, I was tasked with the development of two promotional games that are very similar, one is a single player game and the other is the same game but converted to be a social asynchronous multiplayer game. Both games were developed using Actionscript3.</p><h3 id="development-tools">Development Tools</h3><ul><li>FlashDevelop</li><li>Air SDK</li><li>Mercurial for source management</li><li>Python/MySQL for backend</li></ul><p></p><h3 id="features">Features</h3><ul><li>Asynchronous multiplayer game where 3 player teams compete for the leaderboard</li></ul><h3 id="my-contributions">My Contributions</h3><ul><li>Developed core gameplay features</li><li>Developed social layer via Facebook</li><li>Developed multiplayer gameplay features collaborating with the lead backend developer</li></ul><h3 id="development-build">Development Build</h3><p>For this game I chose to create a different build for debug that uses Air SDK to directly connect to Facebook and python-based game server when running standalone without needing to be hosted in a browser. This idea allowed faster development and testing for the multiplayer and social features.</p>]]></content:encoded></item><item><title><![CDATA[Timeline Interactive / Intern Game Developer  (2009)]]></title><description><![CDATA[<p>Timeline Interactive was one of the first console game development studios in the middle-east licensed for development of Playstation and XBOX titles. They were an Unreal Engine centric development studio, so my focus was Unreal Engine (C++) and XBOX development.</p><p>During my time with Timeline Interactive, I worked with the</p>]]></description><link>https://portfolio.cloudmillgames.com/timeline-interactive-intern-game-developer/</link><guid isPermaLink="false">663a04a18cda3c00011ba4a7</guid><category><![CDATA[game]]></category><category><![CDATA[3d]]></category><category><![CDATA[c++]]></category><category><![CDATA[console]]></category><category><![CDATA[multiplayer]]></category><category><![CDATA[unreal-engine]]></category><category><![CDATA[xbox]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 11:15:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/1597456250606.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://portfolio.cloudmillgames.com/content/images/2024/05/1597456250606.jpg" alt="Timeline Interactive / Intern Game Developer  (2009)"><p>Timeline Interactive was one of the first console game development studios in the middle-east licensed for development of Playstation and XBOX titles. They were an Unreal Engine centric development studio, so my focus was Unreal Engine (C++) and XBOX development.</p><p>During my time with Timeline Interactive, I worked with the core team on their next title for XBOX, titled Heroic. Which was a multiplayer 3D platformer with innovative camera mechanics and physics-centric gameplay:</p><figure class="kg-card kg-video-card kg-width-regular" data-kg-thumbnail="https://portfolio.cloudmillgames.com/content/media/2024/05/heroic_trailer_thumb.jpg" data-kg-custom-thumbnail>
            <div class="kg-video-container">
                <video src="https://portfolio.cloudmillgames.com/content/media/2024/05/heroic_trailer.mp4" poster="https://img.spacergif.org/v1/720x480/0a/spacer.png" width="720" height="480" playsinline preload="metadata" style="background: transparent url(&apos;https://portfolio.cloudmillgames.com/content/media/2024/05/heroic_trailer_thumb.jpg&apos;) 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">2:43</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1&#xD7;</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            
        </figure><p>The core team that I was mentored by and worked with went on to start <a href="https://www.instinctgames.com" rel="noreferrer">Instinct Games</a> which was the development studio behind <a href="https://en.wikipedia.org/wiki/Ark:_Survival_Evolved" rel="noreferrer">Arc: Survival Evolved</a>.</p><p>Role: <strong>Intern </strong>C++ <strong>Software Engineer</strong></p><p>Unreal Engine 3 was the engine of choice for the project, making use of C/C++ and UnrealScript. My responsibilities were to develop character interactions/control, game camera, and to implement new gameplay mechanics.</p><h3 id="tools">Tools</h3><ul><li>Visual Studio</li><li>C/C++ and XDK</li><li>SVN/Perforce</li><li>Unreal Engine 3 and UnrealScript</li><li>Python for prototyping</li></ul><h3 id="my-contributions">My Contributions</h3><ul><li>Developed new gameplay features under supervision of the game director</li><li>Developed character interactions and control</li></ul>]]></content:encoded></item><item><title><![CDATA[LocalEgypt / Web & Backend Developer  (2008-2009)]]></title><description><![CDATA[<h3 id="developed-and-maintained-multiple-business-listing-websites-tools">Developed and maintained multiple business listing websites.<br><br>Tools</h3><ul><li>PHP and Netbeans</li><li>Adobe ColdFusion and Dreamweaver</li><li>MySQL/MSSQL</li><li>HTML/Javscript/CSS</li></ul><h3 id="project-localegypt">Project LocalEgypt</h3><p><br>Role: <strong>Coldfusion Software Engineer</strong></p><ul><li>Developed search features</li><li>Developed advertisement system</li><li>Maintained the service with the lead developer</li></ul><h3 id="project-sparblock">Project Sparblock</h3><p>Role: <strong>Lead Web Developer</strong></p><ul><li>Designed the website using HTML/</li></ul>]]></description><link>https://portfolio.cloudmillgames.com/localegypt/</link><guid isPermaLink="false">664317dc1616ef000185d07f</guid><category><![CDATA[server]]></category><category><![CDATA[backend]]></category><category><![CDATA[web]]></category><category><![CDATA[browser]]></category><category><![CDATA[coldfusion]]></category><category><![CDATA[dreamweaver]]></category><category><![CDATA[php]]></category><category><![CDATA[mssql]]></category><category><![CDATA[sql]]></category><category><![CDATA[html-css-js]]></category><dc:creator><![CDATA[Sal]]></dc:creator><pubDate>Tue, 07 May 2024 11:00:00 GMT</pubDate><media:content url="https://portfolio.cloudmillgames.com/content/images/2024/05/1596581885296.jpg" medium="image"/><content:encoded><![CDATA[<h3 id="developed-and-maintained-multiple-business-listing-websites-tools">Developed and maintained multiple business listing websites.<br><br>Tools</h3><ul><li>PHP and Netbeans</li><li>Adobe ColdFusion and Dreamweaver</li><li>MySQL/MSSQL</li><li>HTML/Javscript/CSS</li></ul><h3 id="project-localegypt">Project LocalEgypt</h3><img src="https://portfolio.cloudmillgames.com/content/images/2024/05/1596581885296.jpg" alt="LocalEgypt / Web &amp; Backend Developer  (2008-2009)"><p><br>Role: <strong>Coldfusion Software Engineer</strong></p><ul><li>Developed search features</li><li>Developed advertisement system</li><li>Maintained the service with the lead developer</li></ul><h3 id="project-sparblock">Project Sparblock</h3><p>Role: <strong>Lead Web Developer</strong></p><ul><li>Designed the website using HTML/CSS/Javascript</li><li>Developed web application to run the website using PHP/MySQL</li><li>Maintained the web site</li></ul>]]></content:encoded></item></channel></rss>