{"id":3676,"date":"2026-06-02T09:50:44","date_gmt":"2026-06-02T07:50:44","guid":{"rendered":"https:\/\/deepdocs.dev\/?p=3676"},"modified":"2026-06-12T10:12:01","modified_gmt":"2026-06-12T08:12:01","slug":"games-made-with-python","status":"publish","type":"post","link":"https:\/\/deepdocs.dev\/games-made-with-python\/","title":{"rendered":"7 Notable Games Made with Python for Developers"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Python belongs in more game stacks than engine purists like to admit. The catch is architectural placement. It rarely makes sense as the language for the entire performance-critical engine, but it keeps proving its worth in scripting, modding, tools, and service layers where change speed matters more than raw frame-time performance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That distinction matters. A game built with Python can mean at least three different things: Python drives gameplay logic, Python exposes an extension surface to designers and modders, or Python runs supporting systems around a lower-level core. Those are different bets with different failure modes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">EVE Online and Civilization IV are useful because they sit on opposite sides of that design choice. EVE is widely cited as a long-running example of Python in a serious live game stack, including discussion from <a href=\"https:\/\/www.stackless.com\/media\/eve\/\">CCP on Stackless Python and EVE Online&#8217;s architecture<\/a>. Civilization IV is the cleaner case for Python as a bounded scripting and modding layer, documented in 2K&#8217;s Civilization IV Python API reference. Senior developers should read those examples less as language trivia and more as API strategy.<\/p>\n\n\n\n<p class=\"has-xx-large-font-size wp-block-paragraph\"><strong>Table Of Contents<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/deepdocs.dev\/games-made-with-python\/#1-eve-online\" class=\"wp-block-table-of-contents__entry\">1. EVE Online<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/deepdocs.dev\/games-made-with-python\/#2-world-of-tanks\" class=\"wp-block-table-of-contents__entry\">2. World of Tanks<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/deepdocs.dev\/games-made-with-python\/#3-sid-meier-s-civilization-iv\" class=\"wp-block-table-of-contents__entry\">3. Sid Meier&#8217;s Civilization IV<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/deepdocs.dev\/games-made-with-python\/#4-doki-doki-literature-club\" class=\"wp-block-table-of-contents__entry\">4. Doki Doki Literature Club!<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/deepdocs.dev\/games-made-with-python\/#5-long-live-the-queen\" class=\"wp-block-table-of-contents__entry\">5. Long Live the Queen<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/deepdocs.dev\/games-made-with-python\/#6-frets-on-fire\" class=\"wp-block-table-of-contents__entry\">6. Frets on Fire<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/deepdocs.dev\/games-made-with-python\/#7-the-temple-of-elemental-evil\" class=\"wp-block-table-of-contents__entry\">7. The Temple of Elemental Evil<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/deepdocs.dev\/games-made-with-python\/#comparison-of-7-python-made-games\" class=\"wp-block-table-of-contents__entry\">Comparison of 7 Python-Made Games<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/deepdocs.dev\/games-made-with-python\/#from-game-logic-to-docs\" class=\"wp-block-table-of-contents__entry\">From Game Logic to Docs<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The interesting question is not whether Python is fast enough in the abstract. The useful question is which layer benefits from flexibility, and how tightly that layer should be allowed to touch the engine underneath.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A scripting layer changes the shape of the product. Once teams expose Python, they are maintaining two things at once: runtime behavior and the contract around that behavior. Bad boundaries turn into fragile mods, hard-to-debug game rules, and support tickets. Clear boundaries turn Python into a force multiplier for iteration. Teams that care about maintainability usually end up caring just as much about <a href=\"https:\/\/deepdocs.dev\/function-documentation-in-python\/\">function-level Python documentation practices<\/a> as they do about the embedding itself.<\/p>\n\n\n\n<h2 id=\"1-eve-online\" class=\"wp-block-heading\">1. EVE Online<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"619\" data-attachment-id=\"3729\" data-permalink=\"https:\/\/deepdocs.dev\/games-made-with-python\/image-381\/\" data-orig-file=\"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/image-4.png?fit=1830%2C1106&amp;ssl=1\" data-orig-size=\"1830,1106\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/image-4.png?fit=1024%2C619&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/image-4.png?resize=1024%2C619&#038;ssl=1\" alt=\"\" class=\"wp-image-3729\" srcset=\"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/image-4.png?resize=1024%2C619&amp;ssl=1 1024w, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/image-4.png?resize=300%2C181&amp;ssl=1 300w, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/image-4.png?resize=768%2C464&amp;ssl=1 768w, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/image-4.png?resize=1536%2C928&amp;ssl=1 1536w, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/image-4.png?resize=1200%2C725&amp;ssl=1 1200w, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/image-4.png?w=1830&amp;ssl=1 1830w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.eveonline.com\">EVE Online<\/a> is a good rebuttal to the lazy claim that Python only belongs in prototypes and hobby projects. A key lesson is architectural. CCP used Python in a live MMO with real operational pressure, while keeping performance-sensitive engine concerns in lower-level code. Their own <a href=\"https:\/\/www.stackless.com\/media\/eve\/\">Stackless Python case study on EVE Online<\/a> is still one of the better references for how that split worked in practice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What matters here is where Python sat in the system. EVE is not the clean \u201cPython as a modding layer\u201d story that shows up in strategy games and tool-friendly engines. It is closer to \u201cPython as part of the game&#8217;s service and simulation fabric,\u201d where high-level rules, entity behavior, and server-side coordination benefit from fast iteration more than from absolute peak throughput.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That trade-off makes sense in persistent online games. Rule changes are frequent. Operational fixes matter. Teams need a way to change business logic without treating every adjustment like an engine rewrite.<\/p>\n\n\n\n<h3 id=\"what-senior-developers-should-notice\" class=\"wp-block-heading\">What senior developers should notice<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">EVE highlights a boundary many teams still get wrong. Rendering loops, physics hot paths, and low-level networking code impose one set of constraints. Server-side orchestration, gameplay rules, and live-ops behavior impose another. Putting both in the same bucket leads to bad language decisions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A mixed-language architecture works when each layer has a narrow job and a stable contract.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For EVE, the interesting takeaway is not \u201cPython was fast enough for everything.\u201d It is that Python was used where flexibility paid for itself. That usually means stateful logic, coordination code, and systems that change under production pressure. In enterprise terms, this looks a lot like keeping the core engine small and exposing a higher-level policy layer for code that changes weekly instead of yearly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That boundary also changes the maintenance burden. Once Python owns part of the runtime, every exposed interface becomes product surface area. Versioning gets harder. Debugging crosses language boundaries. Internal APIs need naming discipline, ownership, and documentation that survives team turnover. Teams evaluating this pattern should study the same habits behind <a href=\"https:\/\/deepdocs.dev\/best-ai-for-python-coding\/\">AI tools for Python coding workflows<\/a> and good internal platform design, because the scripting layer only stays productive if the contracts around it stay clear.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The durable lesson from EVE is simple. Python works in serious game development when it is placed at the right level of abstraction and protected by well-designed boundaries. That is less a game-specific trick than a general rule for any long-lived software system.<\/p>\n\n\n\n<h2 id=\"2-world-of-tanks\" class=\"wp-block-heading\">2. World of Tanks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/cdnimg.co\/c5154994-a2fe-43c0-a286-28e433de4fd1\/screenshots\/5ab92bd9-e1ef-4387-93af-9e57e606efa7\/games-made-with-python-world-of-tanks.jpg?ssl=1\" alt=\"World of Tanks (Wargaming)\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Caption: World of Tanks represents a common production pattern where Python supports extensibility and internal systems rather than replacing the engine core.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/worldoftanks.com\">World of Tanks<\/a> matters because it sits closer to a pattern many product teams can reuse. This isn&#8217;t the \u201cPython everywhere\u201d story. It&#8217;s the \u201cPython in carefully chosen places\u201d story.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Historically, games in this category often use Python for scripting, internal systems, or mod-facing layers while the heavy engine work remains elsewhere. That split is common for a reason. It gives teams a friendlier surface for iteration without forcing performance-sensitive code down the same path.<\/p>\n\n\n\n<h3 id=\"why-this-pattern-keeps-showing-up\" class=\"wp-block-heading\">Why this pattern keeps showing up<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When I look at games made with Python that stayed useful to players for years, the recurring theme is <strong>controlled extensibility<\/strong>. You don&#8217;t hand unrestricted access to everything. You expose just enough of the runtime to support UI logic, game rules, or mod behavior.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That has two benefits:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Faster feature iteration:<\/strong> Designers and gameplay programmers can change higher-level behavior without rebuilding engine internals.<\/li>\n\n\n\n<li><strong>Safer extension model:<\/strong> You can wall off rendering, networking, and lower-level systems while still offering a rich scripting layer.<\/li>\n\n\n\n<li><strong>Better tooling opportunities:<\/strong> Python-friendly workflows tend to pair well with automation and code generation, especially when teams already use Python elsewhere.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The trade-off is governance. Once the scripting layer becomes important, your API stability starts to matter almost as much as the engine. Teams exploring this path often also evaluate adjacent workflow tooling, including <a href=\"https:\/\/deepdocs.dev\/best-ai-for-python-coding\/\">AI support for Python coding<\/a>, because scripting-heavy stacks create lots of glue code, wrappers, and developer-facing helpers that need to stay readable.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">A Python layer is easy to add. A stable Python surface is much harder to maintain.<\/p>\n<\/blockquote>\n\n\n\n<h2 id=\"3-sid-meier-s-civilization-iv\" class=\"wp-block-heading\">3. Sid Meier&#8217;s Civilization IV<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/cdnimg.co\/c5154994-a2fe-43c0-a286-28e433de4fd1\/screenshots\/0215f79e-079c-4339-ba25-9c2ff7697358\/games-made-with-python-civilization-iv.jpg?ssl=1\" alt=\"Sid Meier's Civilization IV (Firaxis\/2K)\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Caption: Civilization IV is still one of the best examples of Python used as a first-class gameplay scripting and modding layer.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/store.steampowered.com\/app\/3900\">Sid Meier&#8217;s Civilization IV on Steam<\/a> matters because it made Python part of the game&#8217;s public architecture. Firaxis did not use Python as the core engine language. It used Python where strategy games change most often: event logic, gameplay behaviors, UI-facing systems, and modding hooks. That distinction is the whole lesson.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For senior developers, Civilization IV is interesting for the same reason plugin-heavy enterprise systems are interesting. The team exposed a high-level API that people outside the engine team could work with productively. Once that boundary exists, the scripting layer stops being an implementation detail and becomes a maintained interface.<\/p>\n\n\n\n<h3 id=\"python-worked-here-because-the-boundaries-were-intentional\" class=\"wp-block-heading\">Python worked here because the boundaries were intentional<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A turn-based strategy game has a lot of logic that benefits from iteration speed more than raw execution speed. Combat rules, diplomacy behavior, scenario scripting, trigger handling, and mod content all change faster than renderer internals or pathfinding primitives. Python fits that upper layer well, as long as the engine owns performance-sensitive systems and the script layer owns policy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That split creates real engineering work. You need clear ownership of state, careful event contracts, and a disciplined answer to one question: what can scripts change without corrupting the simulation?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Civilization IV is a strong example of that model because modders were given useful control points instead of a pile of half-documented bindings. The result was a game that stayed active far longer than a closed rules system usually does.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A practical extension surface usually needs three things:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Stable hooks:<\/strong> Events and callbacks need predictable names, timing, and arguments.<\/li>\n\n\n\n<li><strong>Narrow authority:<\/strong> Scripts should control game rules and content behavior, not arbitrary engine internals.<\/li>\n\n\n\n<li><strong>Readable conventions:<\/strong> Modders and gameplay programmers need APIs they can infer from, not just call.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This is also why generic language debates miss the point. The useful question is not whether Python is &#8220;better&#8221; than another language in the abstract, or how it compares in broad discussions like <a href=\"https:\/\/deepdocs.dev\/python-vs-ruby\/\">Python vs Ruby for developer-facing scripting work<\/a>. The useful question is whether the host application has a clean embedding model, a stable contract, and enough restraint to keep script code from becoming an accidental second engine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Civilization IV got that trade-off mostly right. Python gave the game flexibility and a modding community. The cost was API stewardship. Once players build on your scripting layer, every exposed function, event, and object model becomes part of your long-term compatibility burden.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">A scripting layer extends a game only if the API is treated like a product, not a shortcut.<\/p>\n<\/blockquote>\n\n\n\n<h2 id=\"4-doki-doki-literature-club\" class=\"wp-block-heading\">4. Doki Doki Literature Club!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/ddlc.moe\">Doki Doki Literature Club!<\/a> is useful because it represents a very different category of games made with Python. Here, Python doesn&#8217;t just appear as an embedded scripting layer inside a custom engine. It comes through <strong>Ren&#8217;Py<\/strong>, a Python-based engine that gives teams a full narrative game stack.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That distinction matters. For narrative-heavy games, the bottleneck usually isn&#8217;t low-level rendering. It&#8217;s content flow, branching logic, state handling, dialogue sequencing, and rapid iteration across story assets. A Python-based engine fits that problem shape well.<\/p>\n\n\n\n<h3 id=\"where-python-based-engines-make-sense\" class=\"wp-block-heading\">Where Python-based engines make sense<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ren&#8217;Py is a strong choice when the game&#8217;s complexity is mostly about authored content and branching rules. It&#8217;s less compelling if your core challenge is advanced physics, demanding 3D rendering, or systems that depend on aggressive low-level optimization.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In practical terms, DDLC shows why engine choice should follow workload:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Narrative games benefit from scriptability<\/strong><\/li>\n\n\n\n<li><strong>Small teams benefit from opinionated tooling<\/strong><\/li>\n\n\n\n<li><strong>Mod communities benefit from approachable internals<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A lot of modern coverage still falls short in this regard. Recent discussion around Python game development points out that mainstream content often over-focuses on tiny beginner games, while the more practical question is which kinds of games are realistically production-suitable in Python today and which stacks are credible for current workflows (<a href=\"https:\/\/www.askpython.com\/python\/examples\/easy-games-in-python\">AskPython coverage of easy games and the gap in practical decision guidance<\/a>, <a href=\"https:\/\/www.youtube.com\/watch?v=8OMghdHP-zs\">recent 2025-oriented engine discussion<\/a>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DDLC is a good answer to that question. Narrative games are one of the clearest production-fit categories for Python.<\/p>\n\n\n\n<h2 id=\"5-long-live-the-queen\" class=\"wp-block-heading\">5. Long Live the Queen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/cdnimg.co\/c5154994-a2fe-43c0-a286-28e433de4fd1\/screenshots\/408a950e-a596-42f2-bb85-1ad9454c4d7a\/games-made-with-python-hanako-games.jpg?ssl=1\" alt=\"Long Live the Queen (Hanako Games)\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Caption: Long Live the Queen shows how far a Python-based narrative stack can go once stat systems and branching outcomes pile up.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/www.hanakogames.com\/llq.shtml\">Long Live the Queen<\/a> matters because it pushes past the usual \u201cPython is fine for dialogue\u201d argument. The hard part here is not rendering. It is coordinating a dense web of stats, event checks, schedule choices, hidden thresholds, fail states, and alternate outcomes without making the content pipeline collapse under its own weight.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Architecturally, this is the interesting middle ground between a simple visual novel and a simulation game. Python is not just presenting text. It is acting as the rules layer that evaluates player state, applies authored content logic, and keeps progression coherent across many possible paths.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That distinction matters for senior developers. A game like this demonstrates Python in a role closer to a domain engine than a mere scripting convenience. The value comes from expressiveness and maintainability. Designers can add new events and conditions quickly, and engineers can keep the system inspectable if the APIs around stats, flags, and event triggers stay disciplined.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The trade-off is familiar from any rules-heavy product. Once content authors can combine variables freely, the system gets harder to reason about. Bugs stop looking like crashes and start looking like invalid state transitions, unreachable branches, or balance failures caused by interactions no one reviewed together.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Long Live the Queen is useful as a software design example because the same pressures show up outside games:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>domain state changes over time<\/li>\n\n\n\n<li>workflows branch based on user choices<\/li>\n\n\n\n<li>persistence has to preserve many edge-case combinations<\/li>\n\n\n\n<li>content authors need safe extension points<\/li>\n\n\n\n<li>core rules need stronger boundaries than presentation code<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The practical lesson is not \u201cPython can do anything.\u201d It is narrower and more useful. Python works well when the product&#8217;s complexity lives in authored rules and combinatorial state, provided the team treats that layer like a real subsystem. Separate content definitions from evaluation logic. Keep state transitions explicit. Give designers a constrained surface area instead of direct access to every internal object.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is the same design discipline used in configurable business systems, policy engines, and plugin-based platforms. Long Live the Queen just makes the consequences more visible.<\/p>\n\n\n\n<h2 id=\"6-frets-on-fire\" class=\"wp-block-heading\">6. Frets on Fire<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/cdnimg.co\/c5154994-a2fe-43c0-a286-28e433de4fd1\/screenshots\/5a882769-296c-420c-84fd-401a5c17e362\/games-made-with-python-frets-on-fire.jpg?ssl=1\" alt=\"Frets on Fire (Unreal Voodoo)\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Caption: Frets on Fire is a classic example of a lightweight, open-source Python game that benefits from approachable code and easy modification.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/fretsonfire.sourceforge.net\">Frets on Fire<\/a> matters because it shows the version of Python that often works best in games. Keep the runtime scope tight, keep the gameplay loop readable, and let accessibility beat raw engine ambition.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That distinction matters for architecture. In some projects, Python sits on top of a C or C++ engine as a scripting layer for quests, AI, or modding. Frets on Fire is closer to the other end of the spectrum. Python is not just exposing extension points around a heavy engine. It carries much more of the game itself. For a rhythm game with a narrow mechanic and predictable rules, that trade-off is reasonable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The practical advantage is speed of change. Input timing, note parsing, UI flow, and content handling are all easier to inspect when the codebase stays small enough for contributors to hold in their heads. That is a different benefit from the one Python provides in large commercial titles. Here, the language is part of the product&#8217;s maintainability model, not just a convenience layer for authored logic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Python game libraries support this style well. Tools such as <a href=\"https:\/\/www.pygame.org\/news\">Pygame<\/a> and <a href=\"https:\/\/www.panda3d.org\/\">Panda3D<\/a> reduce the amount of engine code a small team has to write before it can test feel, timing, and content formats.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Frets on Fire shows three patterns senior developers should recognize:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Small core, visible behavior:<\/strong> Contributors can trace gameplay logic without digging through a deep engine stack.<\/li>\n\n\n\n<li><strong>Extension through data and content:<\/strong> Community songs and modifications become easier to support when file formats and gameplay rules are readable.<\/li>\n\n\n\n<li><strong>Low ceremony APIs:<\/strong> A project like this benefits from simple boundaries between rendering, input, and song logic more than from abstract engine layers.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">There is still a ceiling. Once a game needs specialized tooling, strict performance budgets, or a large asset pipeline, Python as the primary implementation language creates pressure in places that are expensive to fix later. Teams then have to decide whether to keep Python at the core or demote it to a scripting boundary around faster systems.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is the useful lesson from Frets on Fire. Python is strongest when the architecture matches the product. If the hard problem is iteration speed, modifiability, and keeping a focused game understandable, Python can carry far more of the stack than many teams expect. If the hard problem is engine scale, Python usually belongs at the edges, with carefully designed APIs between the scriptable layer and the performance-critical core.<\/p>\n\n\n\n<h2 id=\"7-the-temple-of-elemental-evil\" class=\"wp-block-heading\">7. The Temple of Elemental Evil<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/cdnimg.co\/c5154994-a2fe-43c0-a286-28e433de4fd1\/screenshots\/27e4fbb6-7d66-4c29-8332-d4b8cc97c19c\/games-made-with-python-temple-of-elemental-evil.jpg?ssl=1\" alt=\"The Temple of Elemental Evil (Troika; re-released by SNEG)\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Caption: The Temple of Elemental Evil shows how a Python scripting surface can outlive the original release through community maintenance and reimplementation.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/store.steampowered.com\/app\/1769850\">The Temple of Elemental Evil on Steam<\/a> is one of the best examples of Python extending a game&#8217;s life beyond its original commercial moment. Its Python scripting and console-oriented extensibility helped create the conditions for long-tail community maintenance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s the strategic value many teams underestimate. A scripting layer doesn&#8217;t just speed up internal work. It can preserve a product after the original team moves on, especially when a community can understand and extend behavior without rebuilding the whole engine.<\/p>\n\n\n\n<h3 id=\"longevity-comes-from-inspectable-systems\" class=\"wp-block-heading\">Longevity comes from inspectable systems<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When a game exposes AI, events, or gameplay behaviors through Python, it gives advanced users a place to intervene. In legacy software, that can mean fixes, restorations, compatibility layers, or entirely new content.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There&#8217;s also a design lesson in the underlying mechanics. In Python game development, advanced collision handling often moves beyond simple rectangle overlap. One practical pattern is to preemptively move an object by a displacement vector, update its rectangle or mask, and then test collisions with <code>pygame.sprite.collide_mask<\/code>, which is more precise for irregular shapes and platforming movement (<a href=\"https:\/\/www.youtube.com\/watch?v=RuTmd4g5K8Q\">advanced Pygame collision walkthrough<\/a>). That&#8217;s a small example, but it reflects a larger point: Python can support serious gameplay logic if developers use the right abstractions instead of the simplest tutorial patterns.<\/p>\n\n\n\n<h2 id=\"comparison-of-7-python-made-games\" class=\"wp-block-heading\">Comparison of 7 Python-Made Games<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Title<\/th><th>\ud83d\udd04 Implementation Complexity<\/th><th>\u26a1 Resource Requirements<\/th><th>\ud83d\udcca Expected Outcomes<\/th><th>\ud83d\udca1 Ideal Use Cases<\/th><th>\u2b50 Key Advantages<\/th><\/tr><tr><td>EVE Online (CCP)<\/td><td>Very high, single\u2011shard Stackless Python server, complex live ops<\/td><td>Very high, large server fleet, continuous maintenance; client moderate<\/td><td>Massive persistent universe, emergent player-driven systems<\/td><td>MMOs needing extreme scale, persistent economies, player politics<\/td><td>Unmatched scale and rich APIs for third\u2011party tools<\/td><\/tr><tr><td>World of Tanks (Wargaming)<\/td><td>Moderate, established engine with Python for client mods and tools<\/td><td>Moderate, scalable backend; runs on a wide range of PCs<\/td><td>Fast-paced 15v15 matches, seasonal competitive play<\/td><td>Team-based tactical combat with strong player base and modding<\/td><td>Large active playerbase and broad hardware compatibility<\/td><\/tr><tr><td>Civilization IV (Firaxis\/2K)<\/td><td>Low\u2013Moderate, Python+XML event\/UI scripting, mod-friendly<\/td><td>Low, modest hardware; single\u2011player focused<\/td><td>Deep modability, extensive scenarios, long tail longevity<\/td><td>Turn\u2011based 4X design and community-driven mod projects<\/td><td>Highly moddable with large community content library<\/td><\/tr><tr><td>Doki Doki Literature Club! (Team Salvato)<\/td><td>Low, built on Ren&#8217;Py with Python scripting accessible<\/td><td>Very low, free base game; minimal system requirements<\/td><td>Strong narrative impact and active mod scene<\/td><td>Narrative experiments, visual novels with easy mod access<\/td><td>Free entry point and strong community\/mod support<\/td><\/tr><tr><td>Long Live the Queen (Hanako Games)<\/td><td>Low\u2013Moderate, Ren&#8217;Py with extensive Python systems<\/td><td>Very low, lightweight, runs on older machines<\/td><td>High replayability with branching outcomes and failures<\/td><td>Systems-heavy visual novels and replay-focused design<\/td><td>Deep decision systems layered on a VN framework<\/td><\/tr><tr><td>Frets on Fire (Unreal Voodoo)<\/td><td>Low, Pygame\/SDL Python codebase, open\u2011source architecture<\/td><td>Very low, lightweight; runs on legacy hardware<\/td><td>Moddable rhythm gameplay and community track ecosystem<\/td><td>Custom rhythm projects, educational mods, lightweight play<\/td><td>Free, open-source, easy to customize<\/td><\/tr><tr><td>The Temple of Elemental Evil (Troika\/SNEG)<\/td><td>Moderate, original Python console and scriptable systems; community reimplementations<\/td><td>Moderate, legacy engine; community patches often required<\/td><td>Deep tactical D&amp;D 3.5e gameplay with extensive mod support<\/td><td>Tactical cRPGs requiring faithful tabletop rules and modding<\/td><td>Authentic D&amp;D ruleset and strong modding community<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 id=\"from-game-logic-to-docs\" class=\"wp-block-heading\">From Game Logic to Docs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The shared lesson across these games is straightforward. Python works best when teams use it as a supporting layer. Sometimes that&#8217;s backend logic, as in EVE Online. Sometimes it&#8217;s a carefully exposed scripting API, as in Civilization IV. Sometimes it&#8217;s the foundation of a content-heavy engine like Ren&#8217;Py.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For engineering leaders, the takeaway isn&#8217;t \u201cbuild your engine in Python.\u201d It&#8217;s \u201cdecide where Python improves change velocity, extensibility, and developer access.\u201d That&#8217;s a much more useful framing. It also generalizes beyond games into plugins, workflow engines, policy systems, and embedded automation surfaces.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There&#8217;s a second lesson that matters just as much. Once you expose Python, you&#8217;ve created a platform. Internal gameplay engineers, modders, technical designers, and support teams all start depending on that platform&#8217;s behavior and documentation. If event hooks change, parameters move, or object lifecycles evolve without doc updates, the scripting layer becomes friction instead of an advantage.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Good scripting APIs age well only when the docs evolve with the code.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Game architecture and documentation discipline intersect. The same teams that care about CI\/CD for builds and releases should care about continuous documentation for developer-facing interfaces. Python-heavy systems often accumulate wrappers, utility modules, gameplay helpers, content rules, and extension points quickly. Those are exactly the places where stale docs cause wasted time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s also why I think tools like DeepDocs make sense in this conversation, especially for teams maintaining mixed-language systems or public scripting surfaces. If code changes trigger precise documentation updates in the same development workflow, you reduce drift before it becomes a support problem. That applies whether you&#8217;re documenting a modding API, internal engine hooks, or Python services sitting behind a live product.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Games made with Python are interesting for more than trivia. They show a durable engineering pattern. Python succeeds when teams treat it as an accelerator for the right layer, then invest in boundaries, maintainability, and docs with the same seriousness they apply to the runtime itself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If your team exposes Python APIs, plugin hooks, internal automation, or any other fast-moving developer surface, <a href=\"https:\/\/deepdocs.dev\">DeepDocs<\/a> is worth a look. It keeps documentation in sync with code on GitHub, which is exactly the kind of discipline scripting-heavy systems need once they move past the prototype stage.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Python belongs in more game stacks than engine purists like to admit. The catch is architectural placement. It rarely makes sense as the language for the entire performance-critical engine, but it keeps proving its worth in scripting, modding, tools, and service layers where change speed matters more than raw frame-time performance. That distinction matters. A&#8230;<\/p>\n","protected":false},"author":259061979,"featured_media":3677,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[1389],"tags":[],"class_list":["post-3676","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-point-of-view"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>7 Notable Games Made with Python for Developers | DeepDocs<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/deepdocs.dev\/games-made-with-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"7 Notable Games Made with Python for Developers | DeepDocs\" \/>\n<meta property=\"og:description\" content=\"Python belongs in more game stacks than engine purists like to admit. The catch is architectural placement. It rarely makes sense as the language for the entire performance-critical engine, but it keeps proving its worth in scripting, modding, tools, and service layers where change speed matters more than raw frame-time performance. That distinction matters. A...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/deepdocs.dev\/games-made-with-python\/\" \/>\n<meta property=\"og:site_name\" content=\"DeepDocs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=61560455754198\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-02T07:50:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-12T08:12:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/games-made-with-python-python-games-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1672\" \/>\n\t<meta property=\"og:image:height\" content=\"941\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Neel Das\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Nilzkool\" \/>\n<meta name=\"twitter:site\" content=\"@Nilzkool\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Neel Das\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/\"},\"author\":{\"name\":\"Neel Das\",\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/#\\\/schema\\\/person\\\/cf2ace6ae4dae8b34ab48a3e833ceede\"},\"headline\":\"7 Notable Games Made with Python for Developers\",\"datePublished\":\"2026-06-02T07:50:44+00:00\",\"dateModified\":\"2026-06-12T08:12:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/\"},\"wordCount\":3464,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/deepdocs.dev\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/games-made-with-python-python-games-1.jpg?fit=1672%2C941&ssl=1\",\"articleSection\":[\"Point Of View\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/\",\"url\":\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/\",\"name\":\"7 Notable Games Made with Python for Developers | DeepDocs\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/deepdocs.dev\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/games-made-with-python-python-games-1.jpg?fit=1672%2C941&ssl=1\",\"datePublished\":\"2026-06-02T07:50:44+00:00\",\"dateModified\":\"2026-06-12T08:12:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/deepdocs.dev\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/games-made-with-python-python-games-1.jpg?fit=1672%2C941&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/deepdocs.dev\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/games-made-with-python-python-games-1.jpg?fit=1672%2C941&ssl=1\",\"width\":1672,\"height\":941},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/games-made-with-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/deepdocs.dev\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"7 Notable Games Made with Python for Developers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/#website\",\"url\":\"https:\\\/\\\/deepdocs.dev\\\/\",\"name\":\"DeepDocs\",\"description\":\"Fix Your Outdated GitHub Docs on Autopilot\",\"publisher\":{\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/deepdocs.dev\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/#organization\",\"name\":\"DeepDocs\",\"url\":\"https:\\\/\\\/deepdocs.dev\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/deepdocs.dev\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/6.jpg?fit=408%2C400&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/deepdocs.dev\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/6.jpg?fit=408%2C400&ssl=1\",\"width\":408,\"height\":400,\"caption\":\"DeepDocs\"},\"image\":{\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=61560455754198\",\"https:\\\/\\\/x.com\\\/Nilzkool\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/deepdocs-dev\",\"https:\\\/\\\/www.youtube.com\\\/@DrNeelDas\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/deepdocs.dev\\\/#\\\/schema\\\/person\\\/cf2ace6ae4dae8b34ab48a3e833ceede\",\"name\":\"Neel Das\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/227924e7431a87895450dcd654b650e5011891dcba027fd9c782941985cbbb2d?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/227924e7431a87895450dcd654b650e5011891dcba027fd9c782941985cbbb2d?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/227924e7431a87895450dcd654b650e5011891dcba027fd9c782941985cbbb2d?s=96&d=identicon&r=g\",\"caption\":\"Neel Das\"},\"sameAs\":[\"http:\\\/\\\/neeldasf2ac55feaf.wordpress.com\"],\"url\":\"https:\\\/\\\/deepdocs.dev\\\/author\\\/neeldasf2ac55feaf\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"7 Notable Games Made with Python for Developers | DeepDocs","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/deepdocs.dev\/games-made-with-python\/","og_locale":"en_GB","og_type":"article","og_title":"7 Notable Games Made with Python for Developers | DeepDocs","og_description":"Python belongs in more game stacks than engine purists like to admit. The catch is architectural placement. It rarely makes sense as the language for the entire performance-critical engine, but it keeps proving its worth in scripting, modding, tools, and service layers where change speed matters more than raw frame-time performance. That distinction matters. A...","og_url":"https:\/\/deepdocs.dev\/games-made-with-python\/","og_site_name":"DeepDocs","article_publisher":"https:\/\/www.facebook.com\/profile.php?id=61560455754198","article_published_time":"2026-06-02T07:50:44+00:00","article_modified_time":"2026-06-12T08:12:01+00:00","og_image":[{"width":1672,"height":941,"url":"https:\/\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/games-made-with-python-python-games-1.jpg","type":"image\/jpeg"}],"author":"Neel Das","twitter_card":"summary_large_image","twitter_creator":"@Nilzkool","twitter_site":"@Nilzkool","twitter_misc":{"Written by":"Neel Das","Estimated reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/deepdocs.dev\/games-made-with-python\/#article","isPartOf":{"@id":"https:\/\/deepdocs.dev\/games-made-with-python\/"},"author":{"name":"Neel Das","@id":"https:\/\/deepdocs.dev\/#\/schema\/person\/cf2ace6ae4dae8b34ab48a3e833ceede"},"headline":"7 Notable Games Made with Python for Developers","datePublished":"2026-06-02T07:50:44+00:00","dateModified":"2026-06-12T08:12:01+00:00","mainEntityOfPage":{"@id":"https:\/\/deepdocs.dev\/games-made-with-python\/"},"wordCount":3464,"commentCount":0,"publisher":{"@id":"https:\/\/deepdocs.dev\/#organization"},"image":{"@id":"https:\/\/deepdocs.dev\/games-made-with-python\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/games-made-with-python-python-games-1.jpg?fit=1672%2C941&ssl=1","articleSection":["Point Of View"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/deepdocs.dev\/games-made-with-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/deepdocs.dev\/games-made-with-python\/","url":"https:\/\/deepdocs.dev\/games-made-with-python\/","name":"7 Notable Games Made with Python for Developers | DeepDocs","isPartOf":{"@id":"https:\/\/deepdocs.dev\/#website"},"primaryImageOfPage":{"@id":"https:\/\/deepdocs.dev\/games-made-with-python\/#primaryimage"},"image":{"@id":"https:\/\/deepdocs.dev\/games-made-with-python\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/games-made-with-python-python-games-1.jpg?fit=1672%2C941&ssl=1","datePublished":"2026-06-02T07:50:44+00:00","dateModified":"2026-06-12T08:12:01+00:00","breadcrumb":{"@id":"https:\/\/deepdocs.dev\/games-made-with-python\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/deepdocs.dev\/games-made-with-python\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/deepdocs.dev\/games-made-with-python\/#primaryimage","url":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/games-made-with-python-python-games-1.jpg?fit=1672%2C941&ssl=1","contentUrl":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/games-made-with-python-python-games-1.jpg?fit=1672%2C941&ssl=1","width":1672,"height":941},{"@type":"BreadcrumbList","@id":"https:\/\/deepdocs.dev\/games-made-with-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/deepdocs.dev\/"},{"@type":"ListItem","position":2,"name":"7 Notable Games Made with Python for Developers"}]},{"@type":"WebSite","@id":"https:\/\/deepdocs.dev\/#website","url":"https:\/\/deepdocs.dev\/","name":"DeepDocs","description":"Fix Your Outdated GitHub Docs on Autopilot","publisher":{"@id":"https:\/\/deepdocs.dev\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/deepdocs.dev\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/deepdocs.dev\/#organization","name":"DeepDocs","url":"https:\/\/deepdocs.dev\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/deepdocs.dev\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2025\/06\/6.jpg?fit=408%2C400&ssl=1","contentUrl":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2025\/06\/6.jpg?fit=408%2C400&ssl=1","width":408,"height":400,"caption":"DeepDocs"},"image":{"@id":"https:\/\/deepdocs.dev\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=61560455754198","https:\/\/x.com\/Nilzkool","https:\/\/www.linkedin.com\/company\/deepdocs-dev","https:\/\/www.youtube.com\/@DrNeelDas"]},{"@type":"Person","@id":"https:\/\/deepdocs.dev\/#\/schema\/person\/cf2ace6ae4dae8b34ab48a3e833ceede","name":"Neel Das","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/227924e7431a87895450dcd654b650e5011891dcba027fd9c782941985cbbb2d?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/227924e7431a87895450dcd654b650e5011891dcba027fd9c782941985cbbb2d?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/227924e7431a87895450dcd654b650e5011891dcba027fd9c782941985cbbb2d?s=96&d=identicon&r=g","caption":"Neel Das"},"sameAs":["http:\/\/neeldasf2ac55feaf.wordpress.com"],"url":"https:\/\/deepdocs.dev\/author\/neeldasf2ac55feaf\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/games-made-with-python-python-games-1.jpg?fit=1672%2C941&ssl=1","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pgAtwt-Xi","jetpack-related-posts":[{"id":3793,"url":"https:\/\/deepdocs.dev\/front-end-python\/","url_meta":{"origin":3676,"position":0},"title":"Front End Python 2026: Pyodide vs. Anvil Comparison","author":"Emmanuel Mumba","date":"24 June 2026","format":false,"excerpt":"Python can power parts of the UI stack, but there are really two different architectures hiding behind the phrase: client-side Python in the browser and server-driven Python UIs. Client-side Python is compelling for notebooks, scientific tools, and data-heavy interfaces, but browser execution comes with a real startup and performance cost.\u2026","rel":"","context":"In &quot;Docs&quot;","block_context":{"text":"Docs","link":"https:\/\/deepdocs.dev\/category\/docs\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/front-end-python-comparison-1.jpg?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/front-end-python-comparison-1.jpg?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/front-end-python-comparison-1.jpg?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/front-end-python-comparison-1.jpg?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/06\/front-end-python-comparison-1.jpg?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":2825,"url":"https:\/\/deepdocs.dev\/python-vs-ruby\/","url_meta":{"origin":3676,"position":1},"title":"Python vs Ruby: A Pragmatic Guide for Tech Leaders","author":"Neel Das","date":"24 March 2026","format":false,"excerpt":"Deciding between Python and Ruby for your next project isn't about which language is \"better\" it's a strategic choice about aligning your tech stack with your business goals. For us, the decision hinges on the project's core purpose. Python is our go-to for anything involving AI, data science, and large-scale\u2026","rel":"","context":"In &quot;Docs&quot;","block_context":{"text":"Docs","link":"https:\/\/deepdocs.dev\/category\/docs\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/03\/python-vs-ruby-tech-decision-1.jpg?fit=1200%2C673&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/03\/python-vs-ruby-tech-decision-1.jpg?fit=1200%2C673&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/03\/python-vs-ruby-tech-decision-1.jpg?fit=1200%2C673&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/03\/python-vs-ruby-tech-decision-1.jpg?fit=1200%2C673&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/03\/python-vs-ruby-tech-decision-1.jpg?fit=1200%2C673&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3440,"url":"https:\/\/deepdocs.dev\/best-ai-for-python-coding\/","url_meta":{"origin":3676,"position":2},"title":"The Best AI for Python Coding in 2026: A Deep Dive","author":"Neel Das","date":"4 May 2026","format":false,"excerpt":"Organizations looking for the best ai for python coding already know the awkward part. Autocomplete is easy to buy. Workflow fit is hard. A tool can look impressive in a demo, then slow down real work because it guesses across the wrong files, burns usage credits in review cycles, or\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/05\/best-ai-for-python-coding-ai-developers-1.jpg?fit=1200%2C673&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/05\/best-ai-for-python-coding-ai-developers-1.jpg?fit=1200%2C673&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/05\/best-ai-for-python-coding-ai-developers-1.jpg?fit=1200%2C673&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/05\/best-ai-for-python-coding-ai-developers-1.jpg?fit=1200%2C673&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/05\/best-ai-for-python-coding-ai-developers-1.jpg?fit=1200%2C673&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1287,"url":"https:\/\/deepdocs.dev\/function-documentation-in-python\/","url_meta":{"origin":3676,"position":3},"title":"A Developer&#8217;s Guide to Function Documentation in Python","author":"Neel Das","date":"12 October 2025","format":false,"excerpt":"TL;DR: Key Takeaways Why It Matters: Good docstrings save teams hours by improving code clarity, speeding up onboarding, and enabling powerful developer tools. Choose a Format: Pick a consistent style like Google, NumPy, or reStructuredText (reST) for your project. Google Style is often a great starting point for its readability.\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2025\/10\/1_f-fHoNWhikdbCPqxz8Q1Xg.png?fit=1200%2C551&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2025\/10\/1_f-fHoNWhikdbCPqxz8Q1Xg.png?fit=1200%2C551&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2025\/10\/1_f-fHoNWhikdbCPqxz8Q1Xg.png?fit=1200%2C551&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2025\/10\/1_f-fHoNWhikdbCPqxz8Q1Xg.png?fit=1200%2C551&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2025\/10\/1_f-fHoNWhikdbCPqxz8Q1Xg.png?fit=1200%2C551&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3238,"url":"https:\/\/deepdocs.dev\/cursor-in-python\/","url_meta":{"origin":3676,"position":4},"title":"Mastering Cursor in Python: Database Best Practices","author":"Neel Das","date":"15 April 2026","format":false,"excerpt":"A lot of teams only learn what a cursor in python really does after something breaks. The usual trigger is simple. A query that looked harmless in development hits production data, the app tries to pull far too much into memory, and a routine endpoint turns into an incident. That\u2019s\u2026","rel":"","context":"In &quot;Docs&quot;","block_context":{"text":"Docs","link":"https:\/\/deepdocs.dev\/category\/docs\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/04\/cursor-in-python-database-collaboration-1.jpg?fit=1200%2C673&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/04\/cursor-in-python-database-collaboration-1.jpg?fit=1200%2C673&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/04\/cursor-in-python-database-collaboration-1.jpg?fit=1200%2C673&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/04\/cursor-in-python-database-collaboration-1.jpg?fit=1200%2C673&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2026\/04\/cursor-in-python-database-collaboration-1.jpg?fit=1200%2C673&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1975,"url":"https:\/\/deepdocs.dev\/what-is-docstring-in-python\/","url_meta":{"origin":3676,"position":5},"title":"What is a Python Docstring? A Developer&#8217;s Guide","author":"Emmanuel Mumba","date":"6 January 2026","format":false,"excerpt":"A docstring is your code's built-in user manual. It's far more than a simple comment; a Python docstring is a special string that gets attached directly to your code objects like functions, classes, and modules as a living piece of documentation. This makes it an incredibly powerful tool for building\u2026","rel":"","context":"In &quot;Docs&quot;","block_context":{"text":"Docs","link":"https:\/\/deepdocs.dev\/category\/docs\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2025\/12\/what-is-docstring-in-python-python-guide-1.jpg?fit=1200%2C673&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2025\/12\/what-is-docstring-in-python-python-guide-1.jpg?fit=1200%2C673&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2025\/12\/what-is-docstring-in-python-python-guide-1.jpg?fit=1200%2C673&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2025\/12\/what-is-docstring-in-python-python-guide-1.jpg?fit=1200%2C673&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/deepdocs.dev\/wp-content\/uploads\/2025\/12\/what-is-docstring-in-python-python-guide-1.jpg?fit=1200%2C673&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/deepdocs.dev\/wp-json\/wp\/v2\/posts\/3676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/deepdocs.dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/deepdocs.dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/deepdocs.dev\/wp-json\/wp\/v2\/users\/259061979"}],"replies":[{"embeddable":true,"href":"https:\/\/deepdocs.dev\/wp-json\/wp\/v2\/comments?post=3676"}],"version-history":[{"count":3,"href":"https:\/\/deepdocs.dev\/wp-json\/wp\/v2\/posts\/3676\/revisions"}],"predecessor-version":[{"id":3732,"href":"https:\/\/deepdocs.dev\/wp-json\/wp\/v2\/posts\/3676\/revisions\/3732"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/deepdocs.dev\/wp-json\/wp\/v2\/media\/3677"}],"wp:attachment":[{"href":"https:\/\/deepdocs.dev\/wp-json\/wp\/v2\/media?parent=3676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/deepdocs.dev\/wp-json\/wp\/v2\/categories?post=3676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/deepdocs.dev\/wp-json\/wp\/v2\/tags?post=3676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}