Behind every successful game developer is a carefully curated toolkit of technologies, frameworks, and applications that enable creativity and productivity. Over the years, I've experimented with various tools and settled on a development stack that serves me well across different types of projects.
Game Development: Unity Engine
Unity has been my go-to game engine for most of my projects, and for good reason. Its versatility, extensive documentation, and robust ecosystem make it an excellent choice for both beginners and experienced developers.
What I love about Unity:
- Cross-platform deployment: Write once, deploy everywhere
- Visual scripting options: Great for rapid prototyping
- Asset Store: Extensive library of tools and assets
- Community support: Huge community with abundant learning resources
My university projects like Bear Grills
(VR) and Battlerots
(multiplayer) were both built in Unity, allowing me to explore different aspects of
game development while maintaining consistency in my core toolkit.
Application Development: Qt Framework
For non-game applications, I've found Qt to be an incredibly powerful framework. It's what I used to build my collection managers and character creators for various tabletop games.
Why Qt Works for Me
Qt strikes the perfect balance between power and usability. Its widget-based approach makes it easy to create complex interfaces, while its cross-platform nature ensures my applications work seamlessly across different operating systems.
Key Qt features I utilize:
- QtWidgets: For traditional desktop applications
- Qt Designer: Visual interface design
- Qt's Model/View framework: Perfect for data-heavy applications
- Qt's database classes: Seamless integration with SQL databases
Database Management: MongoDB & SQLite
Data persistence is crucial for most of my applications, and I've become proficient with both MongoDB and SQLite, choosing between them based on project requirements.
SQLite for Local Applications
For my character creators and collection managers, SQLite is the perfect choice:
- Serverless: No setup required for end users
- Lightweight: Small footprint, perfect for desktop applications
- ACID compliant: Reliable data integrity
- Cross-platform: Works everywhere without configuration
MongoDB for Scalable Solutions
When I need more flexibility or plan for potential scaling, MongoDB is my choice:
- Document-based: Perfect for complex, nested data structures
- Flexible schema: Easy to iterate on data models
- Excellent Qt integration: Works well with my application framework
Development Environment & Tools
IDE & Editors
My development environment varies depending on the project type:
- Visual Studio (with Unity): For game development
- Qt Creator: For Qt-based applications
- VS Code: For web development and scripting
Version Control
Git is essential for any serious development work. I use:
- GitHub: For open-source projects and portfolio pieces
- Git LFS: For managing large binary assets in game projects
- GitKraken: As a visual Git client for complex operations
Design & Art Tools
While I'm primarily a programmer, having basic design skills is valuable:
- GIMP: For image editing and basic sprite work
- Inkscape: For vector graphics and logos
- Audacity: For basic audio editing
Problem-Solving & Learning
LeetCode & Algorithm Practice
I regularly practice on LeetCode to keep my algorithmic thinking sharp. Game development often requires efficient algorithms, especially for:
- Pathfinding and AI behavior
- Optimization of game systems
- Data structure manipulation
Documentation & Reference
Good documentation is crucial for efficient development:
- Unity Documentation: Comprehensive and well-organized
- Qt Documentation: Excellent examples and API reference
- Stack Overflow: For community-driven problem solving
- GitHub: For examining real-world code examples
Workflow & Productivity
Project Management
For personal projects, I keep things simple but organized:
- Notion: For project planning and documentation
- GitHub Issues: For bug tracking and feature requests
- Simple text files: For quick notes and TODO lists
Testing & Quality Assurance
Quality matters, so I've incorporated testing into my workflow:
- Unity Test Framework: For automated testing in game projects
- Qt Test: For unit testing Qt applications
- Manual testing protocols: Systematic approach to user testing
Continuous Learning
Technology evolves rapidly, so staying current is essential:
- Unity Learn: For staying up-to-date with Unity features
- Game Development YouTube channels: For tutorials and inspiration
- Technical blogs: For industry insights and best practices
- Game development conferences: For networking and learning about trends
Looking Ahead: Future Technologies
I'm always excited about emerging technologies and how they might impact game development:
- VR/AR development: Exploring immersive technologies
- Machine learning in games: AI-driven content and behavior
- Cloud gaming: New deployment and distribution models
- Web-based game development: Browser games with WebGL
"The best tool is the one you know how to use well. Master your core toolkit before chasing the latest trends."
This toolkit has served me well throughout my journey from university projects to professional aspirations. While I'm always open to learning new technologies, having a solid foundation in these tools gives me the confidence to tackle any project that comes my way.
The key is not just knowing how to use these tools, but understanding when and why to use each one. Every project has different requirements, and part of being a good developer is choosing the right tool for the job.