Skip to content

Latest commit

 

History

History
202 lines (155 loc) · 6.48 KB

File metadata and controls

202 lines (155 loc) · 6.48 KB

NODE-FlyFF - Fly For Fun V19 Emulator

License: GPL v3 Node.js Version TypeScript

Overview

Node-FlyFF is a comprehensive, open-source Fly For Fun (FlyFF) V19 emulator built with modern TypeScript and Node.js. This project aims to recreate the classic MMORPG experience with a focus on performance, scalability, and maintainability.

⚠️ Disclaimer: This project is not affiliated with Gala Lab or any official FlyFF entities. ⚠️

🏗️ Architecture

The emulator follows a distributed server architecture:

  • Login Server: Handles client authentication and server list distribution
  • Cluster Server: Manages character operations (creation, deletion, selection)
  • World Server: Core game logic, entity management, and gameplay systems

🛠️ Technology Stack

  • Runtime: Node.js 22+
  • Language: TypeScript 4.9+
  • Database: SQLite (development), MySQL (production ready)
  • Caching: Redis
  • Configuration: YAML/JSON
  • Development: Visual Studio Code recommended

📋 Prerequisites

🚀 Getting Started

Installation

  1. Clone the repository

    git clone https://github.com/your-repo/nodejs-flyff.git
    cd nodejs-flyff
  2. Install dependencies

    yarn install
    # or
    npm install
  3. Set up Redis Server

  4. Configure the database

    • SQLite is configured by default for development
    • For MySQL, update the configuration files in src/configs/
  5. Start the servers

    # Start all servers
    yarn dev login    # Login server
    yarn dev cluster  # Cluster server
    yarn dev world    # World server

📊 Feature Implementation Status

✅ Completed Features

Common Systems

  • Logger system
  • Cryptography algorithms
  • Packet handler infrastructure
  • SQL database integration
  • Entity Component System architecture
  • Resource loading system (Defines, texts, items, NPCs, jobs, exp tables)

Entity Systems

  • WorldObject base class
  • Mover entity (Player/Monster base)
  • Player entity with full game systems
  • Monster entity with AI behaviors
  • NPC entity with dialog/shop systems
  • MapItemObject for ground items

Core Game Systems

  • Visibility System
  • Mobility System
  • Respawn System
  • Inventory System (move, equip/unequip, save, drop, usage)
  • Battle System (melee attacks, PvM combat)
  • Drop System (pickup gold/items)
  • Shop System (buy/sell items)
  • NPC Dialog System

🔄 In Progress

Server Systems

  • Inter-Server communication and caching
  • Client authentication process
  • Character management (create, delete, list)
  • 2nd password verification

Game Features

  • Chat System with admin commands
  • Trade System
  • Quest System
  • Character customization system
  • Attribute System

📅 Planned Features

Advanced Systems

  • Bank System
  • Friend System
  • Motion System
  • Buff Pang System
  • Mailbox System
  • Guild System
  • Skill System
  • Item Bonus System
  • Party System
  • Job System

Chat Commands (Planned)

  • /ci or /createitem - Create items
  • /getgold - Add gold to inventory
  • /teleport - Teleport to coordinates
  • /ban|unban - Player management
  • /mute|unmute - Chat moderation
  • /freeze|unfreeze - Movement control
  • /onekill - Admin combat mode
  • /nodying - Invincibility mode
  • /invisible - Visibility toggle
  • /summon monster|player - Entity summoning

🗂️ Project Structure

src/
├── abstract/          # Base classes and interfaces
├── common/            # Shared enums and constants
├── configs/           # Server configuration files
├── database/          # Database models and connections
├── entities/          # Game entities (Player, Monster, NPC)
├── helpers/           # Utility functions
├── interfaces/        # TypeScript interfaces
├── libraries/         # Core libraries (packets, networking)
├── protocol/          # Network protocol definitions
├── resources/         # Game data and resource loaders
└── servers/           # Server implementations
    ├── loginServer/
    ├── clusterServer/
    └── worldServer/

🤝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details on how to get started.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests and ensure TypeScript compilation passes
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

📈 Performance & Scalability

  • Entity Component System: Efficient entity management and component-based architecture
  • Redis Caching: Fast inter-server communication and data caching
  • Async/Await: Non-blocking I/O operations for optimal performance
  • TypeScript: Type safety and enhanced developer experience

🐛 Bug Reports & Feature Requests

Please use the GitHub Issues page to report bugs or request features.

📝 License

This project is licensed under the GPL-3.0 License - see the LICENSE file for details.

👥 Contributors

  • eD3ath - Project Creator & Lead Developer

🙏 Acknowledgments

  • Original FlyFF development team for creating this amazing MMORPG
  • Open-source community for tools and libraries
  • Contributors and testers who help improve this project

Note: This is an educational and research project. Please respect the intellectual property rights of the original game creators.