Tag: game development

  • Game Developers Shouldn’t Overlook Python’s Potential 

    Game Developers Shouldn’t Overlook Python’s Potential 

    Python is an object-oriented, general-purpose and high-level programming language developed in 1991 by Guido van Rossum. Since its development, Python has become one of the most popular programming languages in the world. It often ranks high in popularity surveys—for instance, it claimed the top spot in the Popularity of Programming Language index and came in second in the TIOBE index.

    Python earned its acclaim as a widely used tool because of its suitability for multiple purposes and for various projects—from data analytics and visualization to artificial intelligence, language development, design and web development.

    That said, Python isn’t exactly renowned for its use in video game development. But should this mean game developers should just disregard Python completely? Not at all.

    Familiarity Breeds Productivity

    Thanks to the language’s simplicity and coding speed, Python is an excellent choice for prototyping. The work product is visible immediately and it’s possible to quickly deliver a playable project to potential investors.

    Therefore, Python is also an ideal language to begin a developer’s adventure with creating games, regardless of whether the user is already fluent in it or just starting out.

    Due to the newcomer-friendly syntax of Python, developers can focus on the basics of game programming, not the complexity of the language itself.

    The effects, which are quickly visible, allow beginners to get actively involved in the process of creating a project. Advanced developers, on the other hand, will appreciate the fact that they can create something playable using their familiar, everyday work tool and that the process of coding will be, as always, very enjoyable and satisfying.

    Preexisting Python Tools and Libraries

    Python programmers can also take advantage of tools that were written specifically for them.

    The most popular library that supports Python game development is PyGame. This engine, available under the LGPL, allows users to build fully commercial projects. Additionally, the library is designed in a way that lets users easily use multiple processor cores. The main functions were written in C and Assembler, thanks to which the user’s project will be 10 to 20 times faster than if it were written in Python alone. This tool is incredibly easy to learn. Its creators also have prepared extensive documentation to help guide users through the process. 

    There are also available tools for 3D rendering, such as Ursina or Panda3D. Of course, these aren’t the only technologies designed for Python users. In fact, there’s a really large selection of available tools and engines such as PyOgre, PyKyra and Ren’Py that are worth checking out.

    Lastly, the Kiva library should also be mentioned. It may not have been created with gaming in mind, but it’s perfectly suited for it. Kiva is a multi-platform tool for creating window applications quickly.

    Python for Game Development 

    If you Google, “Which language should I use for game development?” the first results you see will likely be recommendations to avoid Python. However, that shouldn’t be a deterrent; it can be done! 

    Python has received criticism in the past regarding its use in game development, mostly centering around the fact that Python is not designed for computational performance but, rather, coding performance. This is justified. 

    But if a user, programmer or game developer is already familiar with the programming tools and takes advantage of the preexisting tools and libraries at their disposal, then Python for game development has clear promise, both now and also in the future. 

    If you want proof that a game written in Python can be an international success, I recommend EVE Online—a title that attracts over 20,000 players each day!

  • So Many Options, So Little Time

    So Many Options, So Little Time

    So many language/framework options, so little testing time, that is.

    Recently, two projects I was working on drove me to check out a breadth of languages and/or frameworks to handle cross-platform development. While Unity and Unreal have traditionally been my game platforms of choice and I typically use Xamarin for cross-platform (though native development is more common for us on both Apple and Android), I decided I needed to do the occasional sweep to find out what is new out there.

    The two projects are a game on which I’m helping a new game developer learn and a graphics-heavy application that is unsuited to web development. Both would work best in a cross-platform environment; both would benefit from a game engine’s graphics manipulations. But both could be done in any language that supports graphics, as there isn’t a heavy physics requirement to the game.

    So I went looking at what’s available now and how it fits. From React Native to Godot to Flutter and even Kivy, I kicked the tires on each, got them running, ran and traced samples, wrote some code of my own, even talked with friends that were using them to get their opinion.

    Alternate frameworks languages

    The one thing that came through loud and clear? There is no way that security and testing are keeping up with this language/framework proliferation. Kivy has a language (more of a specification than an actual language, but still—source code) that can run on top of Python (it’s not required to use the framework, but it’s kind of assumed you will if the app gets beyond a certain size); Godot has a language that is integral to the framework and that you use pretty much everywhere. React has a ton of add-on code and both Flutter and Dart are new languages.

    I like stuff from each of them. I don’t like that we’re going to use them in ever-increasing amounts and we’re going to expect testing to stay on top of those implementations. Each of these platforms/languages/environments has a large following that is doing some of the testing, but since they’re all relatively new, “How much testing?” is a valid question. And tests have to be done in those languages, implying that those writing need to know them and so do testing teams.

    Where did we end up? We haven’t made a final decision yet, but taking input from the person I’m mentoring, coworkers and those who are using each of the above, we’ll probably end up using Godot. For 2D apps, it is the bomb. Our team is small, so I can offer my knowledge of Godot to shore up testing and everyone agrees that its Python-like language is acceptable, while the graphic design element is nicer than the competition. Both applications will benefit from Godot’s graphics processing capabilities and the game will benefit from game elements built into the Godot Engine.

    Here is an interesting side note: All of the products we looked at are open source. Both of the default products that we (and just about everyone else) would choose for the game are commercial. That’s interesting, but we don’t need the weight of those commercial solutions for a simple 2D interactive game/app.

    For you all, the questions might be harder to answer. With larger projects come larger requirements for source size, test, you name it. Choose carefully, with an eye on the future. Personally, I think React Native, Godot and Flutter would all be good choices for cross-platform applications, with Godot the best solution for cross-platform 2D games. And all three are likely to be around with a good size following for a long time, making them safer choices. That is less clear with Kivy, though the popularity of Python appears to be driving growth in Kivy use.

    Whatever you choose, plan for all phases of development, not just writing code. That’s true of everything, but new cross-platform tools are complex beasts, so it is worth reminding you all.

    And hey, if you have a cool app you developed with one of these tools, point me to it. Always good to see what you all are doing, and nice to see the breadth of solutions these languages can create.

  • Lessons in User Engagement From Game Development

    Lessons in User Engagement From Game Development

    Quarantine measures forced most of the world to stay physically distant — a shift that has forever changed consumer behaviors, and especially how humans interact and spend their free time. A clear change over the past year was the rapid boom of gaming, which saw a massive increase in both console and mobile games — estimated to be as much as 50%. With this sudden increase in new players, how can developers keep gaming experience fresh and exciting? What can game developers do to keep players coming back after they hit ‘Close’? And are there lessons developers in other industries can learn from those game developers to make their applications more engaging?

    While this article is geared toward game developers specifically, there are multiple lessons that could apply to any application with regard to user experience and engagement. It’s especially applicable if you have a gamified corporate application or continuing education app for your enterprise users.

    Much of the answer to the engagement question comes down to users’ journey before, during and after they play a game. Effectively communicating why someone should download a mobile game is the first step, but communicating with players during and after their experience is equally important for long-term engagement and overall experience.

    A vast majority of mobile games still don’t implement basic messaging best practices for improving user engagement and retention. At the same time, COVID-19 has raised the bar for digital experiences. More than ever, game developers need to improve their communication strategies to survive and succeed.

    One difference between established gamers and the large number of new gamers from the pandemic is that they are increasingly diverse. This wave of new gamers are also more likely to play on their mobile device, or even across multiple devices like their smartphone and tablet, which will likely require a friendlier, more streamlined experience than their more experienced peers.

    Hence, creating the right communication strategy, whether through in-game events, updates on exciting new content, or relevant promotions, will all go a long way in keeping gamers coming back after they hit close.

    User Onboarding is Crucial

    There’s been over a 700% increase in game titles available on the Apple and Google app stores in the past decade, with nearly a million titles to choose from. With so much more competition, developers struggle to find and keep players; the top 25% of mobile games have an average 28 day retention rate of just 4%.

    Mobile games have minutes (or even seconds) to convey value and engage users. How a game onboards a player can mean the difference between a loyal customer and a missed opportunity. If you drop a player into a game with no support or context, they might fumble through the rules and features, and could get frustrated enough to abandon the game.

    Here are some ways to onboard players more effectively:

    Function-Oriented Onboarding – This can take the form of a deck-of-cards tutorial immediately after a user opens your game. Through full-screen in-app messages, it educates the player on game mechanics, app navigation and enables players to swipe through the information at their own pace.

    Benefit-Oriented Onboarding – This method reveals features that improve the player’s experience in addition to the game’s basic mechanics. For example, highlighting how a user can resume from a checkpoint instead of starting over.

    Progressive Onboarding – This method helps players interact with the game interface and guides them through different actions when they reach milestones in the game. It’s well-suited to games that have more complex or varied mechanics.

    Enhancing the Post-Game Messaging Experience

    Re-engaging users outside of the game through push notifications, email messages or even SMS can be incredibly powerful. At the same time, if your message’s quality does not match the quality of your in-game experience, users are much more likely to block your messages or uninstall your game entirely.

    The differences come down to personalization, timeliness and progression.

    Players want to get recognition for their achievements and milestones, plus get instantly notified about making their next move, attack or strategy. Generic messages like, “You haven’t played in a while. Come back today!” are unlikely to have much of an impact on user retention. Instead, enhancing the in-game experience with personalized messages that provide incentives tend to perform far better: “Congrats, Matilda! Your hero is nearly at level 10 – get double XP for every level you complete today!” is a much more engaging option.

    In Zynga’s popular “Words with Friends” game, the granular personalization of notifications tells users when a friend made a move, which word they played and its point value. This helps increase messaging utility and encourage reengagement by promoting friendly competition.

    Another way to enhance the experience both within and outside of the game is by leveraging achievements and recognition. These can turn a mundane milestone into a moment of celebration, or convince a player to return to the game to get another reward. Displaying the daily high score of top players can also motivate players. With set goals, players strive to achieve a higher score, push harder to win a level, and play the game more.

    Developers who only focus on building great game mechanics often overlook basic (and critical) communication features to engage and retain users. By employing these best practices for engagement, game developers can build a solid, growing community of happy players that keep coming back for more.