Math first, magic second.
Lucky Keno's ~96% RTP was checked over 1,000,000 simulated rounds per pick count.
Open to work · Salem, India
Player one: Dinesh Kumar S
I build iGaming games with PixiJS, GSAP and Spine — and the game UIs and responsive web front-ends around them. 2.5+ years at OliveMultimedia, now looking for my next role.
drag the line — same game, as game and as code
Dinesh Kumar S
01 Player profile
I'm a Game Developer and Front-End Developer from Salem, Tamil Nadu. At OliveMultimedia I worked on iGaming products — slots, roulette, card games, scratch cards, Plinko, video poker and crash games — with PixiJS, GSAP, Spine and TypeScript.
My front-end work covers both sides of the screen: the game UI players touch (HUDs, bet panels, popups, settings, win screens) and the responsive websites and internal tools teams use every day.
To prove it outside work, I built two complete games in 5 days each. They're playable below.
How I play
Lucky Keno's ~96% RTP was checked over 1,000,000 simulated rounds per pick count.
Spine and GSAP timelines synced to game state, so every spin, win and bonus reads clearly.
Portrait and landscape, phone to desktop — tested, not assumed.
02 Quest log · Experience
Save file 01 · –
OliveMultimedia · Chennai, Tamil Nadu
Achievements unlocked · game types I've worked on
Save file 00 · 2020 – 2023
Diploma in Computer Engineering — Ramakrishna Mission Polytechnic College, Chennai · 84%
03 World 1 · Games
Two complete games — designed, coded and tuned end-to-end, built in 5 days each. Both run in the browser on desktop and mobile, with virtual credits only.
const A = 0.075, B = 0.0008;
static valueAt(tau) {1
return Math.exp(A * tau + B * tau * tau);
}
static timeFor(m) {2
return (-A + Math.sqrt(A * A + 4 * B * Math.log(m)))
/ (2 * B);
}
Level 1 Crash / multiplier game
How far will you fly?
A crash-style multiplier game: steer a paper plane through obstacles and cash out before a hidden crash point. Everything is drawn in a hand-sketched notebook style — and every graphic is generated as SVG code, with no image files.
m(t) = eAt + Bt² (A = 0.075, B = 0.0008): a gentle start that accelerates to 10× in about 25 s.t(m) = (−A + √(A² + 4B·ln m)) / 2B schedules a pre-crash warning 1.35 s ahead.
/** Cashout offer = 0.96 x EV, rounded DOWN */
export function cashoutOffer(picks, hits, drawn, bet) {
const ev = expectedMultiplier(picks, hits, drawn);1
const v = CFG.rtp * ev * bet;
return Math.floor(v * 100 + 1e-9) / 100;2
}
Level 2 Keno game
80 numbers, one sketchbook.
Classic 80-number Keno — pick up to 10, 20 balls are drawn — set inside an animated sketchbook with a pen hand that draws the board, page-curl transitions and tiered win celebrations. The math is calibrated and verified, not guessed.
04 World 2 · Game UI
A playable mini slot, built live on this page to show how I put a game's front-end together: HUD counters, a bet panel, reel anticipation, tiered win celebrations and a free-spin feature, all driven by a state machine you can watch on the right.
Paper Slots
Free spins left: 0
Balance and win tween to their new value with an ease-out curve, so players feel the win instead of reading a jump.
Two stars on the first reels make the last one spin longer and glow: the classic "almost there" beat from real slots.
Small wins stay in the HUD. 5× and 15× wins get a Big/Mega banner that any tap skips, because players hate waiting.
Container queries move the controls beside the reels in landscape and under them in portrait. Try the toggle.
Built for this page in plain JavaScript, SVG and CSS; the math is in js/slotMath.js. At work I build the same patterns with PixiJS, Spine and GSAP.
05 World 3 · Web & front-end
The same care, outside the game: responsive websites and internal tools with clean structure, reusable components and layouts that hold up on every device.
Level 6 Website
Designed and hand-coded without a framework or build step. The hero's mini game, the seam slider, the level-select menu and this live preview are plain HTML, CSS and JavaScript.
Loading the live site…
390 pxthat's this site, running inside itself
Level 5 Internal web tool · OliveMultimedia
Animators used to wait for a developer to wire up an animation just to see it. I built a standalone tool that removes that step: drop an export in, and it plays.
Internal tool, so no public demo. The panel is an illustration of the workflow.
Work Internal tools & responsive front-ends
Dynamic, real-time interfaces for production workflows, plus responsive multi-page front-ends built with HTML5, CSS3, Bootstrap, JavaScript and TypeScript — modular components, clean navigation and cross-browser support.
06 Inventory · Skills
Most of my toolkit sits in the overlap — that's why I can move between a game and a website without switching brains.
07 Contact
I'm actively looking for my next role. If you're hiring, press start — email is the fastest way to reach me.
Roles I'm looking for
say hi!