CuteReimu's Personal Knowledge Base

website·Indexed 30 days ago

https://cutereimu.cn

A collection of personal technical practices, mathematical essays, and physics notes, with a heavy focus on speedrunning guides and technical analysis for Hollow Knight and Silksong, including route optimization, save file structure, and API integration.

Tokens
62.9K
Snippets
200
Records
377
Agent score
49%

What's inside CuteReimu

  1. Overview of Hollow Knight Timer Generator and LiveSplit

    In Hollow Knight speedrunning, the speedrun.com leaderboards require the use of Load Removed Time (LRT). LiveSplit is the recommended timer software for this purpose as its Hollow Knight plugin can automatically exclude loading times. The 'Timer Generator' (计时器生成器) is a Chinese-language utility developed to help users quickly generate the .lss template files required by LiveSplit.
  2. Hollow Knight Any% Shade Soul (Black Wave) Route Overview

    The Shade Soul (Black Wave) route is a 0-nail Any% speedrun variation designed for beginners. It is slightly slower (within 7 minutes) than the standard 'Super Dash' (White Wave) route but significantly easier because the player acquires Shade Soul before fighting the Watcher Knights, simplifying the combat. The route is intended as a stepping stone for players to eventually transition to the more difficult White Wave route.
  3. Implement a Gomoku game framework in Java

    To build a Gomoku game that supports both human and AI players, use a decoupled architecture where the game board manages the state and the players implement a common interface. The board handles turn rotation, win detection, and communication between players.
    // Point.java: Represents a coordinate on the board
    public final class Point {
       public final int x;
       public final int y;
       public Point(int x, int y) {
          this.x = x;
          this.y = y;
       }
       @Override
       public String toString() {return "(" + x + "," + y + ")";}
    }
    
    // Constant.java: Board dimensions
    public abstract class Constant {
       public static int MAX_LEN = 15;
    }
    
    // ChessBoard.java: Game loop and state management
    public class ChessBoard {
       private byte[][] board = new byte[Constant.MAX_LEN][Constant.MAX_LEN];
       private Player[] players = new Player[2];
       private int whoseTurn = 0;
       private int count = 0;
       private boolean isEnd = false;
    
       private boolean checkForWin(Point p) {
          // Logic to check if the last move created five in a row
          return false;
       }
    
       public void play() {
          if (isEnd) return;
          Point p = players[whoseTurn].play(); // Get move from current player
          if (board[p.y][p.x] != 0) 
             throw new IllegalArgumentException(p.toString() + board[p.y][p.x]);
          
          board[p.y][p.x] = (byte) (whoseTurn + 1);
          if (++count == Constant.MAX_LEN * Constant.MAX_LEN) isEnd = true;
          if (checkForWin(p)) isEnd = true;
          
          whoseTurn = 1 - whoseTurn; // Switch turn
          players[whoseTurn].display(p); // Notify next player of the move
          
          if (isEnd) {
             players[0].notifyWinner(2 - whoseTurn);
             players[1].notifyWinner(2 - whoseTurn);
          }
       }
    
       public static void main(String[] args) {
          ChessBoard b = new ChessBoard();
          b.players[0] = new HumanPlayer(1); // Black
          b.players[1] = new RobotPlayer(2); // White
          while (b.getWinner() == null) {
             b.play();
          }
       }
    }
  4. Understand the Perceptron model

    A perceptron is a basic unit of a neural network that takes multiple binary inputs ($x_j$), applies weights ($w_j$), and produces a binary output based on a threshold.

    Mathematically, the output is 1 if the weighted sum $\sum_j w_j x_j$ exceeds a threshold, and 0 otherwise. This can be simplified using a bias $b$ (where $b = -\text{threshold}$) and vector dot product notation:

    $ ext{output} = 1$ if $\vec{w} \cdot \vec{x} + b > 0$, else $0$.

  5. Understand the rules of Function Chess (函数棋)

    Function Chess is a puzzle game where the goal is to construct a mathematical function that passes through all designated green cells and avoids all red cells on a Cartesian coordinate system. Available operators typically include basic arithmetic, exponentiation, absolute values, trigonometric functions (sin, cos, tan), square roots, and logarithms.
  6. Understand Image Quantization for RGB to GIF conversion

    Image quantization is the lossy process of mapping a large color space (e.g., 256^3 colors in an RGB image) to a smaller, fixed-size palette (e.g., 256 colors in a GIF). The goal is to minimize visual distortion by allocating more palette entries to colors that appear more frequently or vary more significantly, ensuring a balanced distribution of colors across the RGB space.
  7. Hollow Knight All-Skills Speedrun Route Overview

    This route is designed for version 1.4.3.2+ and focuses on obtaining the Howling Spire (White Howl) early. It is intended for advanced players aiming for limit-pushing times. The route utilizes specific game restarts (quitting and reloading) to return to previous benches and optimize travel time.
  8. Use simplified generic constraints in Go 1.25

    Go 1.25 removes the 'core type' concept, returning to the essence of type sets. This allows operations like slicing to be valid for any type in a constraint that supports it (e.g., both []byte and string).
    type Constraint interface { ~[]byte | ~string }
    func Slice[T Constraint](s T) T {
        return s[1:3] // Valid for both []byte and string
    }
  9. Go 1.27 New Features Overview

    Go 1.27 introduces support for generic methods, the promotion of the json/v2 package to stable, and a new uuid package. It also includes memory allocation optimizations for small objects (under 80 bytes), reducing overhead by up to 30%, and adds support for goroutine leak analysis.
  10. Compare frontend languages for web and cross-platform development

    Choosing a frontend language depends on the target platform and project scale:

    • JavaScript: Low learning cost, universal browser support, and a massive ecosystem (npm/pnpm). Suitable for web and full-stack (via Node.js).
    • TypeScript: A superset of JavaScript that adds static typing. Recommended for large projects to catch errors during development rather than at runtime.
    • Dart (Flutter): Ideal for high-performance cross-platform apps (Windows, macOS, Android, iOS) using a custom rendering engine instead of WebViews, ensuring consistent styling.
    • Kotlin (Compose Multiplatform/KMP): A concise JVM-based language. Official for Android and supports cross-platform development, though bundle sizes can be large.
  11. Hollow Knight Any% Speedrun: Super-dash (Acid-skip) Route Overview

    The Super-dash (Acid-skip) route is a popular Any% speedrun path for version 1.4.3.2+. While not the absolute fastest (the Acid-tear line is faster), it is significantly easier for beginners. The route requires fighting the Watcher Knight, Uum, and the Hollow Knight with only 0 Nail upgrades and the Vengeful Spirit spell. For those finding this too difficult, the 'Black Wave' (Shade Soul) route is recommended as a transition.
  12. Manage Claude Code configuration files and hierarchy

    Claude Code uses a hierarchical configuration system split between user-level (global) and project-level settings. Project-level settings generally override user-level settings, while enterprise policies override all others. Configuration is primarily stored in the .claude/ directory (similar to .vscode/).
    User Level: ~/.claude/
    Project Level: [repo-root]/.claude/ (and [repo-root] for some files)