The universe remembers everything — love that never fades away

The heated debate these past few days over whether it's 「于是人」 or 「于斯人」 got me thinking about my grandma again. I really want to go back to my hometown and dig through my old books, find my middle-school Chinese textbook, and see what the original text actually was — seeing is believing, after all. My grandma is in Jiangyan, and all my childhood textbooks are there too; she kept them all at home. Sigh, but sadly they're gone now, one after another. The home is gone, my grandma is gone. Those connections have been severed beyond repair.

Personal

The stars guard the sea

Dreamed I took a train away from the cemetery 🪦. Along the way, so many people were burying their loved ones. Thinking that I would never have Grandma again, I cried myself awake. The greatness of a generation and its sacrifice for its children and grandchildren—years from now, their children's children should know it and remember it too. In a world of blooming flowers, the stars guard the sea and never leave. One day we too will walk toward you and turn into stars. Where our light cones intersect, we will meet again.

Personal

Watched the movie "I Am What I Am"

Left-behind children and a hyper-competitive society — fate is always pressing down on you. Even with life yanking you around by the balls, you can still choose to fight for it. This is what it act...

Entertainment

Goal-based vector field pathfinding

A goal-based vector field pathfinding method that helps agents navigate efficiently by generating a heat map and a vector field. It walks through the algorithm's three steps: generating a heat map that describes distance along the path, creating a vector field pointing toward the goal, and using the vector field to steer agents' movement. How to solve the local optimum problem, and how subdividing the grid optimizes path computation to make pathfinding more stable and efficient.

App Development

DAZ imported into Unity, fixing the white eyes

DAZ imported into Unity, fixing the white eyes: in the FBX import settings - Materials, change Location to “use external materials” and Naming to “From Model’s Material”, then apply, and reconfigure it in the material, for the eyeball surface

App Development

Notes on dealing with Google Play's 64-bit requirement in an old cocos project

I've got an old project, and to solve the problem of Google requiring 64-bit support, I was getting ready to upgrade cocos a bit — then found out it wasn't necessary. Supposedly you just need to compile a 64-bit build. I vaguely remember deleting arm64-v8a back then. Google's guide: https://developer.android.com/distribute/best-practices/develop/64-bit#test\_your\_app\_on\_64-bit\_hardware describes three cases — building with Gradle, with CMake, with ndk-build — and they're all different. From my testing, cocos2dx turns out to be ndk-build mode, which depends on the PROP\_APP\_ABI setting in gradle.properties.

App Development

Watched The Wandering Earth

“Navigator, ahead three!” -This is only the beginning. In my lifetime, I'll be waiting for that “Natural Selection, ahead four” moment that leaves me in tears.

Entertainment

The boundaries of self-awareness

Have I ever told you about the boundary of self-awareness? Virtualization / mind transfer Because more and more people now believe that one day we’ll be able to abandon the body and keep only ...

Life Insights

A QuickLook plugin for viewing ipa and provision files

ProvisionQL Installing this thing adds support for ipa and mobileprovision files to Quick Look (press space) — super handy. It lists the authorized devices, which is useful when you can’t tell whet...

Tools

Multipart body must have at least one part

Using RN caused this error. After checking, the problematic code is: postJson(cmd, dataObj) { let url = Defines.SERVER_ADDR + cmd; let formData = new FormData(); ...

App Development

Goodbye, FLASH

I’ve been with Flash for fifteen years. As a kid, my first encounter with Adobe was Photoshop and ImageReady. Later, Macromedia was acquired by Adobe, the web trio got the Adobe prefix, and only th...

Flash

Resolving "Extension context is null" when writing an ANE

AS code for calling the ANE: _context = ExtensionContext.createExtensionContext(EXTENSION_ID, null); You’ll find that _context is always null. The reason is that the jar was built with JDK 1.7...

Flash

My indie game, Happy Restaurant, is out now

Happy Restaurant is a strategy-driven business simulation game: use your wits to grow a tiny eatery step by step into something big. Bring in spectacular foot traffic and hefty revenue! Unlike mos...

Works

Several parameters for projecting a 3D object onto a 2D view

FOV (Field of view)Manipulating the FOV property value can make 3D display objects appear larger up close and smaller at a distance. The FOV property represents an angle, between 0 and 180 degrees,...

Flash

Game Design and the Six Human Needs

I’ve spent a great deal of time thinking about video games — far more than just from concept to completion. Whether making them, playing them, or taking part in community discussions, I’ve realized there are some things I want to share. Game design is both organic and emotional, and structural and rational. The more I’ve dealt with the process and the results, the more I’ve realized that there are hidden core values in game design, values tightly bound to the six human needs. The more a game aligns with these values/needs, the better a game it is, subjectively speaking. Level 1: Needle in a HaystackAs you probably know, an enormous number of video games ship across many platforms, and the number grows every day — and every day it gets harder to find a game you’ll love. On Steam, for example, games are sorted by “Featured”, “Popular”, “New Releases” and “Recently Updated”. Dig deeper into the search options and you’ll find genres, user tags, ratings, user ratings, and unique features and categories. That’s all well and good, but it’s absolutely not as good as just telling me which game I’ll love. At best, it’s a careful guess.

Flash
1…45678…28