The core module is for the TenIO framework.

Overview

TenIO Core Module Tweet

TenIO is an open-source project to create multiplayer online games that includes a java NIO (Non-blocking I/O) based server specifically designed for multiplayer games, which supports UDP, TCP, Websocket, HTTP transports, and available simple client projects for quick development.

This module provides all the main features for the framework to operate. It contains an NIO mechanism, server configuration solution, events handling, and other necessary functions that you may find helpful.

All supported events

EventAttachConnectionRequestValidation
EventAttachedConnectionResult
EventConnectionEstablishedResult
EventDisconnectConnection
EventDisconnectPlayer
EventFetchedBandwidthInfo
EventFetchedCcuInfo
EventHttpRequestHandle
EventHttpRequestValidation
EventPlayerAfterLeftRoom
EventPlayerBeforeLeaveRoom
EventPlayerJoinedRoomResult
EventPlayerLoggedinResult
EventPlayerReconnectedResult
EventPlayerReconnectRequestHandle
EventReceivedMessageFromPlayer
EventRoomCreatedResult
EventRoomWillBeRemoved
EventSendMessageToPlayer
EventServerException
EventServerInitialization
EventServerTeardown
EventSwitchParticipantToSpectatorResult
EventSwitchSpectatorToParticipantResult
EventSystemMonitoring
EventWriteMessageToConnection

Requirements

  • Java 11

License

The TenIO project is currently available under the MIT License.

Changelog

Please check out the changelog for more details.

Contributing

Please check out the checklist and contributing guideline for more details.

Installation

$ git clone https://github.com/congcoi123/tenio-core.git

Happy coding !

Comments
  • [CR-7] Allows multiple UDP channels

    [CR-7] Allows multiple UDP channels

    For now, there is only one UDP channel working on the server. That may be the reason causing an issue that in case of high load, a lot of UDP messages dropped. Therefore, implementing a new feature that allows setting up multiple channels UDP might resolve the issue.

    Prerequisites

    • [x] The number and ports number can be configured in the configuration file
    • [x] Each client-side will automatically pick a UDP channel for communication. The algorithm might be the "round-robin"
    enhancement 
    opened by congcoi123 2
  • CR-7 Allows Multiple UDP Channels

    CR-7 Allows Multiple UDP Channels

    … amount of UDP channel will be opened on the server

    The UDP channel port will be chosen arbitrarily. The client should be received this value from the server when required.

    enhancement feature 
    opened by congcoi123 1
  • [CR-11] Organize command flags

    [CR-11] Organize command flags

    There are some commands applied when running the server to purposely control it. To illustrate.

    $ java -jar server.jar configuration=configuration.xml command=on scripts=/scripts
    

    With the increasing of number of commands, they need to be managed better.

    Prerequisites

    • [ ] The configuration flag is must
    • [ ] Command flags are only applied if present, unavailability means there is no effect as well
    • [ ] Order does not matter
    enhancement 
    opened by congcoi123 1
  • [CR-17] WebSocket communication handling

    [CR-17] WebSocket communication handling

    Creates new implementation for the web-socket implementation between client and server-side. The client-side handling is missing for the new server version. It needs to implement the serialize and deserialize methods based on the ticket: https://github.com/congcoi123/tenio-core/issues/12

    feature 
    opened by congcoi123 0
  • [CR-9] Commands on Console

    [CR-9] Commands on Console

    It is necessary to be able to control the game server behaviors in a debug mode. The idea should like when running the following command.

    $ java -jar server.jar configuration.xml command=on
    

    Then a command console appears. It will listen input instructions from the user and execute them.

    Prerequisites

    • [ ] There are two modes: on and off. In off state or in case of no declaration for command, the command console will not be present
    • [x] All commands should be implemented, declared by annotations for easy implementation and extension
    • [x] Commands execution must use the ServerApi to interact with server, there should not have any exception
    enhancement 
    opened by congcoi123 0
  • [CR-19] Implement the AOI mechanism

    [CR-19] Implement the AOI mechanism

    Prerequisites:

    • Each client needs 2 UDP connections, one for sending data and the other one for receiving information from its interested area.
    • The game server opens multiple UDP channels and does a mapping between grids of areas and their corresponding IP groups.
    enhancement feature 
    opened by congcoi123 0
  • [CR-16] Implements logic handling for removable rooms

    [CR-16] Implements logic handling for removable rooms

    This is a missing feature and should be implemented. Reference: https://github.com/congcoi123/tenio-core/blob/master/src/main/java/com/tenio/core/schedule/ScheduleServiceImpl.java#L92 https://github.com/congcoi123/tenio-core/blob/master/src/main/java/com/tenio/core/schedule/task/AutoRemoveRoomTask.java

    feature 
    opened by congcoi123 0
  • [CR-15] Implements logic handling for removable players

    [CR-15] Implements logic handling for removable players

    This is a missing feature and should be implemented. Reference: https://github.com/congcoi123/tenio-core/blob/master/src/main/java/com/tenio/core/schedule/ScheduleServiceImpl.java#L91 https://github.com/congcoi123/tenio-core/blob/master/src/main/java/com/tenio/core/schedule/task/AutoDisconnectPlayerTask.java

    feature 
    opened by congcoi123 0
  • [CR-14] Supports plugins

    [CR-14] Supports plugins

    Allows a server to be able to extend its features by supporting the plugin mechanism. In short, there would be a folder (such as a plugin) in which the user puts their built .jar files. When the server starts, it will load all the plugins available and then run as expected.

    enhancement feature 
    opened by congcoi123 0
Releases(tenio-core-0.4.0)
  • tenio-core-0.4.0(Nov 21, 2022)

  • tenio-core-0.3.1(Oct 21, 2022)

    Release Version 0.3.1

    • Multiple data serialization methods supported (MsgPack)
    • Added new events to handle connection-refused cases
    • WebSocket handling issues fixed
    • Allowed showing server's uptime
    • Refactoring the project's structure
    • Bugs fixed
    Source code(tar.gz)
    Source code(zip)
  • tenio-core-0.3.0(Oct 13, 2022)

    Release Version 0.3.0

    • Supported multiple UDP channels
    • Allowed fetching available UDP channel by using round-robin mechanism
    • Refactoring: renamed package "extension" to "handler"
    • Allowed declaring the server address in the configuration file
    • Supported KCP transportation
    • Bugs fixed
    Source code(tar.gz)
    Source code(zip)
  • tenio-core-0.2.0(Apr 21, 2022)

Owner
Kong
I'm a simple man
Kong
Apache Dubbo is a high-performance, java based, open source RPC framework.

Apache Dubbo Project Apache Dubbo is a high-performance, Java-based open-source RPC framework. Please visit official site for quick start and document

The Apache Software Foundation 38.2k Dec 31, 2022
A networking framework that evolves with your application

ServiceTalk ServiceTalk is a JVM network application framework with APIs tailored to specific protocols (e.g. HTTP/1.x, HTTP/2.x, etc…) and supports m

Apple 805 Dec 30, 2022
LINE 4.1k Dec 31, 2022
Netty project - an event-driven asynchronous network application framework

Netty Project Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol serv

The Netty Project 30.5k Jan 3, 2023
Socket.IO server implemented on Java. Realtime java framework

Netty-socketio Overview This project is an open-source Java implementation of Socket.IO server. Based on Netty server framework. Checkout Demo project

Nikita Koksharov 6k Dec 30, 2022
Experimental Netty-based Java 16 application/web framework

Experimental Netty-based application/web framework. An example application can be seen here. Should I use this? Probably not! It's still incredibly ea

amy null 8 Feb 17, 2022
Realtime Client Server Framework for the JVM, supporting WebSockets with Cross-Browser Fallbacks

Welcome to Atmosphere: The Event Driven Framework supporting WebSocket and HTTP The Atmosphere Framework contains client and server side components fo

Atmosphere Framework 3.6k Jan 3, 2023
Telegram API Client and Telegram BOT API Library and Framework in Pure java.

Javagram Telegram API Client and Telegram Bot API library and framework in pure Java. Hello Telegram You can use Javagram for both Telegram API Client

Java For Everything 3 Oct 17, 2021
Unconventional Java code for building web servers / services without a framework.

Unconventional Java code for building web servers / services without a framework. Think dropwizard but as a seed project instead of a framework. If this project had a theme it would be break the rules but be mindful of your decisions.

StubbornJava 227 Nov 15, 2022
Apache MINA is a network application framework which helps users

Apache MINA is a network application framework which helps users develop high performance and high scalability network applications easily

The Apache Software Foundation 846 Dec 20, 2022
The common module is for the TenIO framework.

TenIO Common Module TenIO is an open-source project to create multiplayer online games that includes a java NIO (Non-blocking I/O) based server specif

Kong 1 Nov 24, 2021
Core module for Forgiva Enterprise connecting Forgiva Server to Forgiva Webclient.

Forgiva Integrator INTRODUCTION Forgiva Enterprise is a set of components for a secure and efficient method of re-generation of passwords each time th

Sceptive 13 Oct 18, 2022
Spring Boot starter module for gRPC framework.

Spring Boot starter module for gRPC framework.

Michael Zhang 2.8k Jan 4, 2023
Spring Boot starter module for gRPC framework.

Spring Boot starter module for gRPC framework.

Michael Zhang 1.8k Mar 17, 2021
Core part of pipes framework plus some commonly used extensions

Pipes Pipes is a simple, lightweight data processing framework for Java. This repo comes with the core part plus three extensions (For Google Big Quer

null 7 Oct 4, 2022
💡极致性能的企业级Java服务器框架,RPC,游戏服务器框架,web应用服务器框架。(Extreme fast enterprise Java server framework, can be RPC, game server framework, web server framework.)

?? 为性能而生的万能服务器框架 ?? Ⅰ. zfoo简介 ?? 性能炸裂,天生异步,Actor设计思想,无锁化设计,基于Spring的MVC式用法的万能RPC框架 极致序列化,原生集成的目前二进制序列化和反序列化速度最快的 zfoo protocol 作为网络通讯协议 高可拓展性,单台服务器部署,

null 1k Jan 1, 2023
An uber-fast parallelized Java classpath scanner and module scanner.

ClassGraph ClassGraph is an uber-fast parallelized classpath scanner and module scanner for Java, Scala, Kotlin and other JVM languages. ClassGraph wo

classgraph 2.4k Dec 29, 2022
Extension module to properly support datatypes of javax.money

Jackson Datatype Money Jackson Datatype Money is a Jackson module to support JSON serialization and deserialization of JavaMoney data types. It fills

Zalando SE 217 Jan 2, 2023