David Arturo Diaz Diaz, Developer in Bogotá - Bogota, Colombia
David is available for hire
Hire David

David Arturo Diaz Diaz

Verified Expert  in Engineering

Computer Graphics Developer

Location
Bogotá - Bogota, Colombia
Toptal Member Since
August 2, 2017

David is a highly creative engineer with strong analytical aptitude. He has proven experience executing a game development life cycle from concept to maintenance with over a dozen shipped titles in 9+ years in the game development industry. David is a team player with excellent communication skills.

Portfolio

Joju Games
Git, Subversion (SVN), Blender, PlayerIO, Photon, C#, Shaders, Unity
Joju Games
Git, Subversion (SVN), Blender, Flash, PlayerIO, Photon, ActionScript 3, C#...
Freelance Work
Blender, Multithreading, HLSL, C#, XNA

Experience

Availability

Part-time

Preferred Environment

Google Docs, Git, Unity

The most amazing...

...thing I worked on was Sparcade’s Pacman. It made heavy use of shaders to achieve the artist’s vision and had a distributed logic due to server side validation.

Work Experience

Lead Developer

2012 - 2017
Joju Games
  • Generalized common functionalities into reusable unity packages—created the Assets API and replicating the Persistence API, Localization API, and Analytics API.
  • Adapted the company's match 3 code base from AS3 to Unity in C#.
  • Defined the standard Jenkins auto-build system for mobile projects.
  • Defined the architectural baseline for the programmers to adhere to a design standard in various games.
  • Planned and distributed the Agile tasks among the programmers; was responsible for meeting the project milestones during the specified deadlines from a technical standpoint.
  • Conducted daily code reviews of the programmers.
  • Defined the overall architecture to cope with server validation for real money betting in Sparcade Pacman. (all the input from the player was sent to the server and an accelerated simulation was performed to validate the score).
  • Served as the computer graphics expert in the company helping other teams achieve the artistic vision through CG shaders, particle systems, and custom computer graphics solutions.
  • Programmed procedural shaders using mathematical equations to achieve diverse visual effects in various games.
  • Worked for clients like 505 Games, GSN, Playdom (Disney), and Shockwave Games (Viacom).
Technologies: Git, Subversion (SVN), Blender, PlayerIO, Photon, C#, Shaders, Unity

Senior Game Programmer

2010 - 2012
Joju Games
  • Integrated different games with PlayerIO and proprietary back-ends for different functionalities like persistence, server-side validation, and payment verification.
  • Implemented a GUI system that converted a Flash SWF UI into an XML representation with a Sprite Atlas and then loaded it into Unity.
  • Added a CDN integration to Unity games (with asset bundles) and flash games (with compressed assets) to reduce the web initial download or the mobile binary size.
  • Added external services to many mobile games like Google Play, Game Circle, analytics packages, ad providers, error trackers, and back-end services.
  • Generalized the MATCH 3 functionalities of many games into a single MATCH 3 framework for Wicked and any future MATCH 3 games in the company.
  • Implemented alternative rendering techniques using low-level APIs to overcome the limitations of the standard tree structure in ActionScript 3 for open world 2D games.
  • Optimized heavily the ActionScript 3 web-based games to work on mobile devices.
  • Created stand alone Adobe Air editors for different games with advanced tile bit masking and mission definition modules.
  • Worked for clients like 505 Games, GSN, Playdom (Disney), and Shockwave Games (Viacom).
Technologies: Git, Subversion (SVN), Blender, Flash, PlayerIO, Photon, ActionScript 3, C#, Shaders, Unity

Independent Game Developer

2007 - 2010
Freelance Work
  • Implemented advanced shader model 3 graphics, variance shadow maps and instanced skinned meshes.
  • Researched and applied state-of-the art AI techniques for NPCs.
  • Implemented a continuous physics system from scratch with swept capsules.
  • Published 2 Xbox 360 games successfully that can still be downloaded and played today.
  • Created the BetaCell3 D toolkit for game development aid in the XNA platform.
Technologies: Blender, Multithreading, HLSL, C#, XNA

Software Engineer

2007 - 2008
Isthmus Software Solutions
  • Collaborated with a team of over 40 developers maintaining a powerful banking application.
  • Worked for TSYS, a major payment solutions provider.
  • Implemented the rewards front-end for the TSYS credit card solution by implementing Java web components connecting to a J2EE back-end.
  • Tracked time and money critical bugs in a sizeable code base.
  • Maintained a professional relationship with all the platform stakeholders as part of the outsourced Isthmus team.
Technologies: Jira, Web Services, Oracle, Jakarta EE, Java

Software Engineer

2006 - 2007
AppTech
  • Acted as a software solutions consultant for local businesses.
  • Designed casino management software solutions.
  • Implemented layered architectures for distributed client server solutions.
  • Refactored client applications that were lacking proper design and architecture.
  • Estimated resources of different projects for local clients.
Technologies: MySQL, JavaServer Faces, Jakarta EE, Java

Certified Instructor

2005 - 2007
Sun Microsystems
  • Taught the official Sun Enterprise class courses.
  • Evangelized about the Java and the J2EE platform.
  • Always maintained a high ranking in the course evaluations.
  • Taught multiple courses to many important local companies.
  • Earned 4 Java Sun certifications.
Technologies: MySQL, Jakarta EE, Java

Pacman for Sparcade

The Pacman game is where you bet real money in a skill contest against other players. To prevent cheating by altering the mobile client, all the input from the players is recorded and sent to the server for score validation at the end of a level. Achieving this requires a model-view-controller design where the model is shared by the server and the client and has to be implemented using only integer logic (floating-point operations may give slightly different results across different processors).

• Defined the overall architecture to cope with server validation.
• Designed an integer only Pacman logic to allow validation (floating point ops may give slightly different results across different processors).
• Designed the game view. The model processes inputs and trigger events. In the server, the events are ignored but in the client, the events are handled by the view to show the player what’s happening.
• Planned and designed the maze layout change.
• Handled GSN SDK updates to keep the game compliant with the platform while minimizing potential bugs.
• Implemented the animated background.
• This Pacman version uses custom Cg shaders to increase the visual quality and reduce the assets load at the same time.

2 Dots for Sparcade

Adaptation of the 2 dots mobile game to the Sparcade platform. The original code was adapted to allow server side validation.

• Analyzed the 2 dots original code and proposal of a conversion strategy.
• Created the model logic baseline.
• Implemented the tutorial.

Air Adventure Slots

A slot machine made with Unity in which you travel the world collecting prizes. This was a small project for a casino effort made by the company.

• Collaborative generalization of the slot machine code from other projects to separate the machine logic from the visual customization
• Planned the tasks to create the air adventure visual customization.
• Planned and distributed the tasks amongst the senior developers.

Tribal Idol

This is a Unity 3D puzzle game based on bingo in which you rescue tribe members from the board using symbols and powerups. This game integrated a PlayerIO back-end to store the player's progress and download/cache assets to maintain the mobile binary size small.

• Created the architectural baseline for the programmers to adhere to a design standard.
• Planned and distributed the tasks among the programmers.
• Conducted daily code reviews of the programmers.
• Defined the Assets API with an external CDN, local filesystem caching, and bundle embedding for the initial playthrough.
• Developed a texture reuse system using asset bundles to share them between scenes.
• Adapted the falling mechanics of the Joju's MATCH 3 engine for the cascading bingo game type.
• Created an iOS auto build system with Jenkins.

Wicked: The Game

A MATCH 3 game based on the Broadway musical. The game has an interesting progression mechanic over a big maze filled with gems.

• Defined the iOS and web flash build pipeline to be able to build the game in Windows.
• Generalized the MATCH 3 engine from the previous MATCH 3 games.
• Adapted the new MATCH 3 engine to scroll boards with thousands of gems.
• Created an automated Adobe Air app that tested the game’s logic and animations with pseudo-random inputs. This helped us improve the robustness of the code.
• Defined a process to include new gems and obstacles through the implementation of an abstract design.
• Integrated a PlayerIO integration for a player profile and messaging.
• Added a function that saves for offline play and PlayerIO cloud saves with synchronization across devices.
• Integrated social media with Facebook invites, requests, gifting, and friends' portraits on a map.
• Optimized the memory for the game to run appropriately on iOS, the target amount of RAM was 64 MB at the time
• Reduced the IPA size to 35MB for 3G download by moving the assets to the CDN.
• Implemented ads for the web and iOS with HasOffers.
• Implemented GameCircle for the Amazon port and Google Play for the Android port.

Everybody Draws

A multiplayer game made with Flash. Players take turns to draw, the rest of the players try to guess the drawing.

• Created a multi-platform scalable UI framework in Flash for the web and mobile.
• Integrated PlayerIO for multiplayer game play.
• Developed a functionality for multi-platform multiplayer matchmaking.
• Implemented multiplayer match logic; replicating draw strokes and player actions.

Jewels of the Amazon

A MATCH 3 game made with ActionScript 3.

• Reimplemented the gameplay following an MVC pattern. The prior implementation had reliability, design, and performance issues; my new implementation corrected all of those shortcomings.
• The new gameplay implementation was successfully rolled out with the game already in production.

Disney Dream Kingdom

The project was a park where the player could purchase and update rides. We were tasked with creating rides of some iconic Disney trips.

• Developed an Adobe Air jigsaw puzzles generator.
• Built an Adobe Air application that converted a Flash SWF UI into an XML representation with a Sprite Atlas.
• Implemented a parser in Unity to display the UI.
• Implemented camera movement for the Soarin over California minigame using splines.
• Enabled silhouette highlighting via edges detection on meshes and on the fly silhouette mesh update.
• Created a story system with camera movements, character animations, and assets management for the Sleeping Beauty minigame.
• Integrated CDN to reduce the initial download.
• Enabled soaring clouds dynamic generation.
• Implemented the Sleeping Beauty castle where the different puzzles were selected.
• Adapted and optimized the Unity project to be able to build the minigames with the Flash exporter.
• Skinned Monsters Inc.for the Sleeping Beauty jigsaw mechanics.
• Skinned Dumbo for the soaring mechanics.
• Skinned Dumbo for the Sleeping Beauty story system.

Caribbean Paradise Slots

https://apps.facebook.com/mindjolt/games/caribbean-paradise-slots
A slot machine made with Flash.
• Implemented the minigames including random rewards design to keep the machine’s return rate.
• Created a Montecarlo simulation for payout fine-tuning.

Bubble Atlantis

https://apps.facebook.com/254782291207333/
A puzzle game with a rotating mesh of gems at the center that you must shoot with a gem cannon.

• Developed a stand alone Adobe Air editor to define gem placement.
• Integrated BaaS with PlayerIO for profiles, messaging, and achievements.
• Implemented IAP lives with Facebook credits.
• Integrated Facebook for a message feed, requests, and invites.

Acrobat Smashers

An Angry Birds clone made with ActionScript 3.

• Adapted the Box2D physics for the different elements of the game.
• Created the visual representation of the game elements and linking them to their Box2D physical counterparts.

Autowars

An adventure RPG made with ActionScript 3. It's an open world with missions and car customization.

• Developed the stand alone Adobe Air editor with advanced tile bitmasking for automatic placement of roads.
• Created the visual quest editor module with triggers and actions.
• Adapted the Box2D physics for car and weapon physics.
• Optimized asset instantiation and destruction on a 400x400 tile map to cope with Adobe Flash limitations.
• Created a custom rendering pipeline using low level graphical APIs. The hierarchical rendering approach of Flash had an unacceptable performance overhead.
• Crafted a GPS system that distributed the A* search implementation across multiple frames to prevent performance hiccups.
• Developed an enemy AI with goals and steering behavior.
• Integrated a Shockwave back-end for the player profile and IAPs.
• Implemented a tutorial system that masked dialogs and actions.

B-A-Mazed

A 3D maze game in which you control the maze’s orientation rather than the player’s avatar. The objective is to reach your girlfriend before your opponents do, you can use powerups to your advantage or your opponent's demise.

• Developed the advanced shader model 3 graphics.
• Implemented the AI with goals and steering behaviors.
• Implemented the continuous physics.

Old School Destruction

A multiplayer, single-screen third-person shooter.

It uses advanced Direct3D 9 rendering techniques to compensate for XNA’s slow runtime. For example, it used instancing on the enemies storing the bone animation data in textures to draw all enemies with a single call. It was also made entirely by me, I even did the 3D art in Blender.

• Developed the advanced shader model 3 graphics.
• Implemented the AI with fuzzy logic, goals and steering behaviors.
• Implemented the continuous physics.

BetaCell Toolkit

http://betacell3d.com/
A toolkit to aid XNA game development.

This was made entirely by me and used in both Old School Destruction and B-A Mazed.

The main advantage of the toolkit was the compile time effect composition for Xbox 360 and for the PC. The developer specified the effect components (like shadow mapping or bump mapping) and the toolkit created the FX file and compiled it.

For more information, see the tutorial section of the toolkit’s page.

Languages

ActionScript 3, C#, Java, HLSL

Frameworks

Unity, Unity3D, JavaServer Faces, Photon

Paradigms

Design Patterns, Agile Software Development

Platforms

Mobile, Jakarta EE, Oracle

Other

Unity Shaders, Unity3D AI, Shaders, Computer Graphics, SDKs, Game AI, Game Physics, 3D Math, Mathematics, Leadership, Web Services, Multithreading, PlayerIO, Amazon GameCircle

Tools

Subversion (SVN), Git, PlayFab, GameSparks, Google Docs, Jira, Blender, Flash

Libraries/APIs

XNA, Google Play API, Facebook API

Storage

MySQL

2017 - 2017

Unity Certified Developer in Game Programming

Unity Technologies - San Francisco, CA, USA

2001 - 2006

Bachelor of Engineering in Software Systems Engineering

Universidad Javeriana - Bogotá, Colombia

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring