56,966 blogs · [ { "id": "01a07df4-f7f9-7376-8ffc-09fa33281fa3", "title": "How (Not) to Make a Game Sequel", "url": "http://ruoyusun.com/2025/04/18/game-sequel-lessons.html", "published_at": "2025-04-18T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa338bf293", "title": "Squeezing Last Bit Of JavaScript Performance For My Automation Game", "url": "http://ruoyusun.com/2024/01/23/cividle-optimization.html", "published_at": "2024-01-23T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa33cfd9bf", "title": "One Game, By One Man, On Six Platforms: The Good, The Bad and The Ugly", "url": "http://ruoyusun.com/2023/10/12/one-game-six-platforms.html", "published_at": "2023-10-12T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa33f140a4", "title": "Modern Operating System and Vertical Space Efficiency", "url": "http://ruoyusun.com/2023/10/01/modern-os-vertical-space.html", "published_at": "2023-10-01T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3445b571", "title": "Using Zig As Cross Platform C Toolchain", "url": "http://ruoyusun.com/2022/02/27/zig-cc.html", "published_at": "2022-02-27T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa351496a1", "title": "Game Performance Optimization - A Practical Example From Industry Idle", "url": "http://ruoyusun.com/2022/01/28/game-pref.html", "published_at": "2022-01-28T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa35d2e2a1", "title": "A Poor Indie's Journey To Developing And Running A Multiplayer Game", "url": "http://ruoyusun.com/2022/01/10/industry-idle-netcode.html", "published_at": "2022-01-10T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa36955580", "title": "Kotlin is A Good Java Glue", "url": "http://ruoyusun.com/2021/03/16/kotlin-java-glue.html", "published_at": "2021-03-16T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa36b52b80", "title": "Game Programming Anti Patterns", "url": "http://ruoyusun.com/2021/02/25/game-programming-anti-patterns.html", "published_at": "2021-02-25T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa36f2f5fd", "title": "Lua Game Development And Type Safety", "url": "http://ruoyusun.com/2021/01/31/typed-lua.html", "published_at": "2021-01-31T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa379f983b", "title": "A Guide To Full Screen WebView And Notch / Cutout", "url": "http://ruoyusun.com/2020/10/21/webview-fullscreen-notch.html", "published_at": "2020-10-21T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3843fa07", "title": "Beginner's Guide to Making a Multiplayer Game", "url": "http://ruoyusun.com/2020/04/01/multiplayer-beginners-guide.html", "published_at": "2020-04-01T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa39243117", "title": "Game Networking Demystified, Part VI: Game Genres and FAQ", "url": "http://ruoyusun.com/2019/09/30/game-networking-6.html", "published_at": "2019-09-30T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa398bcae2", "title": "Game Networking Demystified, Part V: Interpolation and Rollback", "url": "http://ruoyusun.com/2019/09/21/game-networking-5.html", "published_at": "2019-09-21T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa39dfebaf", "title": "Game Networking Demystified, Part IV: Server and Network Topology", "url": "http://ruoyusun.com/2019/04/07/game-networking-4.html", "published_at": "2019-04-07T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3a11e368", "title": "Game Networking Demystified, Part III: Lockstep", "url": "http://ruoyusun.com/2019/04/06/game-networking-3.html", "published_at": "2019-04-06T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3adbb752", "title": "Game Networking Demystified, Part II: Deterministic", "url": "http://ruoyusun.com/2019/03/29/game-networking-2.html", "published_at": "2019-03-29T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3b12fa81", "title": "Game Networking Demystified, Part I: State vs. Input", "url": "http://ruoyusun.com/2019/03/28/game-networking-1.html", "published_at": "2019-03-28T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3b94ebc7", "title": "C#: 6 Years Later", "url": "http://ruoyusun.com/2019/03/17/c-sharp-in-2019.html", "published_at": "2019-03-17T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3bd07fdc", "title": "What I've Learnt After Making My First Hobby Game", "url": "http://ruoyusun.com/2018/06/15/guide-for-non-game-dev.html", "published_at": "2018-06-15T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3c403a00", "title": "C# with Godot: Custom Attributes, Reflection and Extension Method", "url": "http://ruoyusun.com/2018/03/24/c-sharp-godot-reflection-copy.html", "published_at": "2018-03-24T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3c4a7120", "title": "Developer's Music Making Guide", "url": "http://ruoyusun.com/2017/08/29/make-some-music.html", "published_at": "2017-08-29T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3cde7522", "title": "Venture Capital and Tech Background", "url": "http://ruoyusun.com/2017/07/31/tech-vc.html", "published_at": "2017-07-31T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3d2e6907", "title": "Dota 2 AI Quick Start", "url": "http://ruoyusun.com/2017/01/08/dota2-ai-quickstart.html", "published_at": "2017-01-08T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3d9f36df", "title": "Do Product Managers Need to Know How to Code?", "url": "http://ruoyusun.com/2016/08/13/do-pm-need-to-know-how-to-code.html", "published_at": "2016-08-13T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3e7185d4", "title": "I Don't Control Every Bit of My Product and That's OK", "url": "http://ruoyusun.com/2016/07/23/i-dont-control-every-bit-of-my-product-and-thats-ok.html", "published_at": "2016-07-23T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3f1b87dc", "title": "Passive Open Source", "url": "http://ruoyusun.com/2015/12/14/passive-open-source.html", "published_at": "2015-12-14T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3f4bd248", "title": "Things I Wish I Were Told About React Native", "url": "http://ruoyusun.com/2015/11/01/things-i-wish-i-were-told-about-react-native.html", "published_at": "2015-11-01T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa3ffd5f28", "title": "Early-bird Dividend", "url": "http://ruoyusun.com/2015/01/04/early-bird-dividend.html", "published_at": "2015-01-04T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa4036975f", "title": "What D3.js is Not", "url": "http://ruoyusun.com/2014/05/26/what-d3js-is-not.html", "published_at": "2014-05-26T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa40472931", "title": "At the Right Time and for the Right Thing", "url": "http://ruoyusun.com/2014/04/19/at-the-right-time-and-for-the-right-thing.html", "published_at": "2014-04-19T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa40f7c33c", "title": "Scala is Not Java Glue", "url": "http://ruoyusun.com/2013/11/10/scala-is-not-java-glue.html", "published_at": "2013-11-10T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa411c7251", "title": "My First Day with Go", "url": "http://ruoyusun.com/2013/08/31/my-first-day-with-go.html", "published_at": "2013-08-31T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa41976ba6", "title": "A Glimpse of Angular.js $scope via Example", "url": "http://ruoyusun.com/2013/08/24/a-glimpse-of-angularjs-scope-via-example.html", "published_at": "2013-08-24T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa42578194", "title": "Implementing PDiff with Existing Selenium Tests", "url": "http://ruoyusun.com/2013/08/10/implementing-pdiff-with-existing-selenium-tests.html", "published_at": "2013-08-10T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa431076ad", "title": "Things I Wish I Were Told About Angular.js", "url": "http://ruoyusun.com/2013/05/25/things-i-wish-i-were-told-about-angular-js.html", "published_at": "2013-05-25T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa4344e4c4", "title": "To Developers Who First Use Bootstrap (Two)", "url": "http://ruoyusun.com/2013/05/17/to-developers-who-first-use-bootstrap-two.html", "published_at": "2013-05-17T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa43e478db", "title": "To Developers Who First Use Bootstrap (One)", "url": "http://ruoyusun.com/2013/04/14/to-developers-who-first-use-bootstrap-one.html", "published_at": "2013-04-14T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa440e3c0a", "title": "Journey From DHTML To Ember.js/Angular.js", "url": "http://ruoyusun.com/2013/04/06/journey-from-dhtml-to-ember-js-angular-js.html", "published_at": "2013-04-06T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa4474c5d7", "title": "Node.js is Perfectly Fine And Probably You Don't Need it", "url": "http://ruoyusun.com/2013/03/31/node-js-is-perfectly-fine-and-probably-you-dont-need-it.html", "published_at": "2013-03-31T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa4531ef3d", "title": "Pragmatic Lua - Error Handling, OOP, Closure and Coroutine", "url": "http://ruoyusun.com/2013/03/30/pragmatic-lua-error-handling-oop-closure-and-coroutines.html", "published_at": "2013-03-30T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa45770b59", "title": "Pragmatic Lua Basics in 30 Minutes", "url": "http://ruoyusun.com/2013/03/23/pragmatic-lua-basics-in-30-mins.html", "published_at": "2013-03-23T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa4599ec64", "title": "My Take on CoffeeScript", "url": "http://ruoyusun.com/2013/03/17/my-take-on-coffeescript.html", "published_at": "2013-03-17T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa468a443b", "title": "6 Months with C#", "url": "http://ruoyusun.com/2013/03/10/6-months-with-c-sharp.html", "published_at": "2013-03-10T00:00:00+00:00" }, { "id": "01a07df4-f7f9-7376-8ffc-09fa477aae0f", "title": "When You Need to Render Large DOM in Underscore.js", "url": "http://ruoyusun.com/2012/11/11/when-you-need-to-render-large-dom-in-underscore.html", "published_at": "2012-11-11T00:00:00+00:00" } ] posts Claim your blog
Back to Ruoyu Sun
Blog · corpus.blog/blogs/ruoyusun.com/posts

Ruoyu Sun

ruoyusun.com

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012