@golamrabbitonmoy/object-memory-core
v1.1.0
Published
Shared randomization, scoring, and anti-cheat package for the object memory game.
Maintainers
Readme
@niftycoders/object-memory-core
Shared npm-compatible package for the object memory game.
It extracts the three SOW-critical parts from the current HTML prototype into reusable runtime-agnostic modules:
- deterministic session randomization
- shared score calculation
- event recording and anti-cheat validation
Install
npm i @golamrabbitonmoy/object-memory-coreMain exports
import {
generateSession,
recreateSessionFromMetadata,
ScoreEngine,
createEventRecorder,
validateEventLog,
} from '@golamrabbitonmoy/object-memory-core';Example
import {
generateSession,
ScoreEngine,
createEventRecorder,
validateEventLog,
} from '@golamrabbitonmoy/object-memory-core';
const session = generateSession({
seed: 123456,
difficulty: {
id: '2x2',
label: '2×2',
cols: 2,
rows: 2,
memorizeTimeSec: 5,
},
objectPool: [
{ id: 'apple', label: 'Apple', value: '🍎' },
{ id: 'book', label: 'Book', value: '📘' },
{ id: 'chair', label: 'Chair', value: '🪑' },
{ id: 'clock', label: 'Clock', value: '🕒' },
],
});
const recorder = createEventRecorder(session.seed);
recorder.markMemorizeStart();
recorder.markMemorizeEnd();
recorder.logPlacement(0, session.placementByCell[0]);
recorder.logPlacement(1, session.placementByCell[1]);
recorder.logPlacement(2, session.placementByCell[2]);
recorder.logPlacement(3, session.placementByCell[3]);
recorder.logCheck();
const antiCheat = validateEventLog({
events: recorder.getEvents(),
metadata: session.metadata,
memorizeTimeSec: session.difficulty.memorizeTimeSec,
});
const earned = ScoreEngine.calculate({
correct: 4,
total: 4,
timeBonus: 3,
round: 1,
cellCount: 4,
streakBonus: 0,
});Notes
- This package is intentionally UI-free, so it can run in browser game code and in backend TypeScript validation.
- The package uses object ids, not UI indexes, so backend validation stays stable even if tray ordering changes.
- The current HTML game can be migrated by replacing inline
GameRandomizer,ScoreEngine, andAntiCheatwith imports from this package.
