Skip to content
View dongatory's full-sized avatar

Block or report dongatory

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
dongatory/README.md

DOTGEARS

DOTGEARS

From the creator of Flappy Bird. Now building the future of AI-powered game creation.

@dongatory verified LinkedIn bags.fm Hanoi, Vietnam Rust License

Contract Address: AfvuTpZXLEkQ6CFG1kdw9Wx7wfCdTnVHhniUbxtDBAGS


The Story

Flappy Bird

In 2013 I built a game in three days. I called it Flappy Bird. Within months it was the most downloaded app on Earth -- 50 million downloads, $50,000 a day in ad revenue, number one in every app store on the planet.

Then I took it down.

I removed Flappy Bird at peak virality because I felt guilty about how addictive it had become. No acquisition. No pivot. No Series A. I walked away from one of the most successful mobile games ever made because it didn't sit right with me.

I don't regret that decision.

Flappy Bird Gameplay      Flappy Bird Animation


DOTGEARS Studio

DOTGEARS is my software development company, headquartered in Hanoi. We have shipped multiple titles since Flappy Bird -- every one following the same design philosophy: light-hearted, easy to understand, kid-friendly, extremely difficult, and incredibly fun.

The games were never about scale. They were about craft. Small team, tight feedback loops, and an obsessive attention to the feel of a single tap.

DOTGEARS
16th Floor, Daeha Business Center
360 Kim Ma Street, Giang Vo Ward, Hanoi, Vietnam

Representative:    Nguyen Ha Dong
Contact:           contact@dotgears.com
Web:               dotgears.com

What Comes Next

The same instinct that made Flappy Bird work -- that a game should be understandable in one second and playable forever -- now applies to how games are made.

I am building an AI-powered creation platform. The idea is radical in its simplicity: describe a game in plain language, and the system builds it. Not a prototype. Not a wireframe. A playable, shippable game with physics, rendering, audio, and input handling.

AI Game Creation Platform

The generation engine is written in Rust. Prompts compile into optimized bytecode that runs natively on iOS, Android, and web. No dependencies. No runtime. Just a binary that plays.

/// Prompt-to-game compilation pipeline
pub struct GameCompiler {
    parser: PromptParser,
    planner: MechanicPlanner,
    codegen: BytecodeEmitter,
    renderer: RenderGraph,
    physics: PhysicsConfig,
}

impl GameCompiler {
    /// Takes a natural language description and produces a shippable game binary.
    /// The pipeline is deterministic -- same prompt, same output, every time.
    pub fn compile(&self, prompt: &str) -> Result<GameBinary, CompileError> {
        let intent = self.parser.extract_intent(prompt)?;
        let mechanics = self.planner.resolve_mechanics(&intent)?;
        let bytecode = self.codegen.emit(&mechanics, &self.physics)?;
        let render_bindings = self.renderer.bind(&mechanics)?;

        Ok(GameBinary {
            bytecode,
            render_bindings,
            metadata: intent.metadata(),
        })
    }
}

The entity-component system handles everything a generated game needs. Collision detection, sprite animation, audio mixing, input routing, score tracking -- all resolved at compile time, not runtime.

/// Every game entity is a composition of components.
/// No inheritance. No virtual dispatch. Just data.
pub struct Entity {
    pub id: u64,
    pub position: Vec2,
    pub velocity: Vec2,
    pub sprite: SpriteHandle,
    pub collider: ColliderShape,
    pub behavior: BehaviorTree,
}

/// Fixed 60Hz physics step. Decoupled from render framerate.
/// Gravity, boundary clamping, and bounce are handled here.
pub fn physics_step(world: &mut World, dt: f32) {
    for entity in world.entities.iter_mut() {
        entity.velocity += world.gravity * dt;
        entity.position += entity.velocity * dt;

        if entity.position.y <= 0.0 || entity.position.y >= WORLD_HEIGHT {
            entity.velocity.y *= -BOUNCE_DAMPING;
            entity.position.y = entity.position.y.clamp(0.0, WORLD_HEIGHT);
        }
    }

    // Broad-phase collision sweep
    world.collision_grid.rebuild(&world.entities);
    for (a, b) in world.collision_grid.candidate_pairs() {
        if intersects(&world.entities[a].collider, &world.entities[b].collider) {
            world.event_queue.push(CollisionEvent { a, b });
        }
    }
}

$GEARS

$GEARS exists to fund my entry into the Bags.fm hackathon -- bringing AI-powered game creation to the Bags ecosystem. A creator economy where anyone can build, publish, and monetize games from natural language.

I proved a three-day game can become the most downloaded app on Earth. Now I want to give everyone else the tools to do the same.

Trade $GEARS on bags.fm/$dongatory.


Twitter @dongatory
Company DOTGEARS
LinkedIn Nguyen Ha Dong
Bags bags.fm/$dongatory
Email contact@dotgears.com
Location Hanoi, Vietnam

DOTGEARS -- Hanoi, Vietnam
Building the future of AI-powered game creation.

Pinned Loading

  1. dotgears dotgears Public

    We develop and publish bite-sized mobile games. Our games are light-hearted, easy to understand, kid-friendly, extremely difficult and incredibly fun.

    Python 19