统一 Rust 与 TypeScript 格式化门禁
纳入 AGC Cargo workspace 的统一 rustfmt 检查与格式化入口 完成项目 TypeScript/Prettier 与 Rust 全量格式化 修复 Pingora expected executable 门禁的空白敏感误报 同步开发运维文档与 AGC skill pack 格式化忽略规则
This commit is contained in:
@@ -28,16 +28,11 @@
|
||||
"longDescription": "Plan, prototype, and build browser games with guided workflows for gameplay systems, UI, asset pipelines, and playtesting across 2D and 3D projects.",
|
||||
"developerName": "OpenAI",
|
||||
"category": "Coding",
|
||||
"capabilities": [
|
||||
"Interactive",
|
||||
"Write"
|
||||
],
|
||||
"capabilities": ["Interactive", "Write"],
|
||||
"websiteURL": "https://openai.com/",
|
||||
"privacyPolicyURL": "https://openai.com/policies/privacy-policy/",
|
||||
"termsOfServiceURL": "https://openai.com/policies/terms-of-use/",
|
||||
"defaultPrompt": [
|
||||
"Design a browser game and plan the core loop"
|
||||
],
|
||||
"defaultPrompt": ["Design a browser game and plan the core loop"],
|
||||
"brandColor": "#0F766E",
|
||||
"composerIcon": "./assets/game-studio.svg",
|
||||
"logo": "./assets/app-icon.png",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
name: game-studio
|
||||
version: 0.1.0
|
||||
description: Design, prototype, and ship browser games with guided 2D and 3D workflows,
|
||||
description:
|
||||
Design, prototype, and ship browser games with guided 2D and 3D workflows,
|
||||
asset pipelines, and playtesting support.
|
||||
author: OpenAI
|
||||
kind: standalone
|
||||
|
||||
@@ -5,19 +5,19 @@ Use this as the canonical minimal pattern for loading shipped 3D content.
|
||||
## Vanilla Three.js
|
||||
|
||||
```ts
|
||||
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
|
||||
import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader.js";
|
||||
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
||||
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';
|
||||
|
||||
const draco = new DRACOLoader();
|
||||
draco.setDecoderPath("/draco/");
|
||||
draco.setDecoderPath('/draco/');
|
||||
|
||||
const gltfLoader = new GLTFLoader();
|
||||
gltfLoader.setDRACOLoader(draco);
|
||||
|
||||
gltfLoader.load("/assets/hero.glb", (gltf) => {
|
||||
gltfLoader.load('/assets/hero.glb', (gltf) => {
|
||||
const root = gltf.scene;
|
||||
root.traverse((node) => {
|
||||
if ("castShadow" in node) {
|
||||
if ('castShadow' in node) {
|
||||
node.castShadow = true;
|
||||
node.receiveShadow = true;
|
||||
}
|
||||
@@ -29,10 +29,10 @@ gltfLoader.load("/assets/hero.glb", (gltf) => {
|
||||
## React Three Fiber
|
||||
|
||||
```tsx
|
||||
import { useGLTF } from "@react-three/drei";
|
||||
import { useGLTF } from '@react-three/drei';
|
||||
|
||||
function HeroModel() {
|
||||
const gltf = useGLTF("/assets/hero.glb");
|
||||
const gltf = useGLTF('/assets/hero.glb');
|
||||
return <primitive object={gltf.scene} />;
|
||||
}
|
||||
```
|
||||
|
||||
@@ -5,12 +5,14 @@ Use this as the smallest canonical pattern for adding physics without letting it
|
||||
## Vanilla Three.js
|
||||
|
||||
```ts
|
||||
import RAPIER from "@dimforge/rapier3d-compat";
|
||||
import RAPIER from '@dimforge/rapier3d-compat';
|
||||
|
||||
await RAPIER.init();
|
||||
|
||||
const world = new RAPIER.World({ x: 0, y: -9.81, z: 0 });
|
||||
const body = world.createRigidBody(RAPIER.RigidBodyDesc.dynamic().setTranslation(0, 2, 0));
|
||||
const body = world.createRigidBody(
|
||||
RAPIER.RigidBodyDesc.dynamic().setTranslation(0, 2, 0),
|
||||
);
|
||||
world.createCollider(RAPIER.ColliderDesc.cuboid(0.5, 0.5, 0.5), body);
|
||||
|
||||
renderer.setAnimationLoop(() => {
|
||||
@@ -24,7 +26,7 @@ renderer.setAnimationLoop(() => {
|
||||
## React Three Fiber
|
||||
|
||||
```tsx
|
||||
import { Physics, RigidBody } from "@react-three/rapier";
|
||||
import { Physics, RigidBody } from '@react-three/rapier';
|
||||
|
||||
<Physics gravity={[0, -9.81, 0]}>
|
||||
<RigidBody colliders="cuboid">
|
||||
|
||||
@@ -12,7 +12,7 @@ src/
|
||||
## `src/App.tsx`
|
||||
|
||||
```tsx
|
||||
import { Canvas } from "@react-three/fiber";
|
||||
import { Canvas } from '@react-three/fiber';
|
||||
|
||||
function Spinner() {
|
||||
return (
|
||||
@@ -27,7 +27,7 @@ export default function App() {
|
||||
return (
|
||||
<div className="app-shell">
|
||||
<Canvas camera={{ position: [0, 1.5, 4], fov: 60 }}>
|
||||
<color attach="background" args={["#101418"]} />
|
||||
<color attach="background" args={['#101418']} />
|
||||
<ambientLight intensity={0.7} />
|
||||
<directionalLight position={[4, 6, 3]} intensity={1.2} />
|
||||
<Spinner />
|
||||
|
||||
@@ -12,12 +12,17 @@ src/
|
||||
## `src/main.ts`
|
||||
|
||||
```ts
|
||||
import * as THREE from "three";
|
||||
import * as THREE from 'three';
|
||||
|
||||
const scene = new THREE.Scene();
|
||||
scene.background = new THREE.Color("#101418");
|
||||
scene.background = new THREE.Color('#101418');
|
||||
|
||||
const camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 200);
|
||||
const camera = new THREE.PerspectiveCamera(
|
||||
60,
|
||||
window.innerWidth / window.innerHeight,
|
||||
0.1,
|
||||
200,
|
||||
);
|
||||
camera.position.set(0, 1.5, 4);
|
||||
|
||||
const renderer = new THREE.WebGLRenderer({ antialias: true });
|
||||
@@ -32,11 +37,11 @@ scene.add(light);
|
||||
|
||||
const mesh = new THREE.Mesh(
|
||||
new THREE.BoxGeometry(1, 1, 1),
|
||||
new THREE.MeshStandardMaterial({ color: "#3dd9b8" }),
|
||||
new THREE.MeshStandardMaterial({ color: '#3dd9b8' }),
|
||||
);
|
||||
scene.add(mesh);
|
||||
|
||||
window.addEventListener("resize", () => {
|
||||
window.addEventListener('resize', () => {
|
||||
camera.aspect = window.innerWidth / window.innerHeight;
|
||||
camera.updateProjectionMatrix();
|
||||
renderer.setSize(window.innerWidth, window.innerHeight);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
interface:
|
||||
display_name: "Game Playtest"
|
||||
short_description: "Run browser-game playtests and QA"
|
||||
default_prompt: "Playtest the browser game, check core interactions and visual state changes, and report concrete issues."
|
||||
display_name: 'Game Playtest'
|
||||
short_description: 'Run browser-game playtests and QA'
|
||||
default_prompt: 'Playtest the browser game, check core interactions and visual state changes, and report concrete issues.'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
interface:
|
||||
display_name: "Game Studio"
|
||||
short_description: "Route browser-game work to the right path"
|
||||
default_prompt: "Help me choose the right browser-game stack and workflow before implementation starts."
|
||||
display_name: 'Game Studio'
|
||||
short_description: 'Route browser-game work to the right path'
|
||||
default_prompt: 'Help me choose the right browser-game stack and workflow before implementation starts.'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
interface:
|
||||
display_name: "Game UI Frontend"
|
||||
short_description: "Design browser-game HUDs, menus, and overlays"
|
||||
default_prompt: "Design a browser-game UI layer that supports the play experience without crowding the playfield."
|
||||
display_name: 'Game UI Frontend'
|
||||
short_description: 'Design browser-game HUDs, menus, and overlays'
|
||||
default_prompt: 'Design a browser-game UI layer that supports the play experience without crowding the playfield.'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
interface:
|
||||
display_name: "Phaser 2D Game"
|
||||
short_description: "Build 2D browser games with Phaser"
|
||||
default_prompt: "Implement this 2D browser game with Phaser, TypeScript, and a clear gameplay architecture."
|
||||
display_name: 'Phaser 2D Game'
|
||||
short_description: 'Build 2D browser games with Phaser'
|
||||
default_prompt: 'Implement this 2D browser game with Phaser, TypeScript, and a clear gameplay architecture.'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
interface:
|
||||
display_name: "React Three Fiber Game"
|
||||
short_description: "Build React-hosted 3D browser games"
|
||||
default_prompt: "Build this 3D browser game with React Three Fiber and keep the 3D runtime aligned with the React app shell."
|
||||
display_name: 'React Three Fiber Game'
|
||||
short_description: 'Build React-hosted 3D browser games'
|
||||
default_prompt: 'Build this 3D browser game with React Three Fiber and keep the 3D runtime aligned with the React app shell.'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
interface:
|
||||
display_name: "Sprite Pipeline"
|
||||
short_description: "Generate and normalize 2D sprite animations"
|
||||
default_prompt: "Create and normalize 2D sprite animation assets for a browser game with consistent scale and anchors."
|
||||
display_name: 'Sprite Pipeline'
|
||||
short_description: 'Generate and normalize 2D sprite animations'
|
||||
default_prompt: 'Create and normalize 2D sprite animation assets for a browser game with consistent scale and anchors.'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
interface:
|
||||
display_name: "Three WebGL Game"
|
||||
short_description: "Build browser-game runtimes with Three.js"
|
||||
default_prompt: "Implement this browser-game runtime with plain Three.js and keep the scene architecture easy to debug."
|
||||
display_name: 'Three WebGL Game'
|
||||
short_description: 'Build browser-game runtimes with Three.js'
|
||||
default_prompt: 'Implement this browser-game runtime with plain Three.js and keep the scene architecture easy to debug.'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
interface:
|
||||
display_name: "Web 3D Asset Pipeline"
|
||||
short_description: "Prepare and optimize browser-game 3D assets"
|
||||
default_prompt: "Prepare these browser-game 3D assets for shipping as predictable runtime-ready GLB or glTF files."
|
||||
display_name: 'Web 3D Asset Pipeline'
|
||||
short_description: 'Prepare and optimize browser-game 3D assets'
|
||||
default_prompt: 'Prepare these browser-game 3D assets for shipping as predictable runtime-ready GLB or glTF files.'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
interface:
|
||||
display_name: "Web Game Foundations"
|
||||
short_description: "Set browser-game architecture before implementation"
|
||||
default_prompt: "Establish the core architecture for this browser game before implementation starts."
|
||||
display_name: 'Web Game Foundations'
|
||||
short_description: 'Set browser-game architecture before implementation'
|
||||
default_prompt: 'Establish the core architecture for this browser game before implementation starts.'
|
||||
|
||||
Reference in New Issue
Block a user