Giter Site home page Giter Site logo

ellanjiang / gameframework Goto Github PK

View Code? Open in Web Editor NEW
5.5K 269.0 1.4K 6.61 MB

This is literally a game framework, based on Unity game engine. It encapsulates commonly used game modules during development, and, to a large degree, standardises the process, enhances the development speed and ensures the product quality.

Home Page: https://GameFramework.cn

License: MIT License

C# 100.00%
game-frameworks game-modules game-development unity unity3d

gameframework's Introduction

HOMEPAGE


Game Framework


Game Framework 简介

Game Framework 是一个基于 Unity 引擎的游戏框架,主要对游戏开发过程中常用模块进行了封装,很大程度地规范开发过程、加快开发速度并保证产品质量。

在最新的 Game Framework 版本中,包含以下 19 个内置模块,后续我们还将开发更多的扩展模块供开发者使用。

  1. 全局配置 (Config) - 存储一些全局的只读的游戏配置,如玩家初始速度、游戏初始音量等。

  2. 数据结点 (Data Node) - 将任意类型的数据以树状结构的形式进行保存,用于管理游戏运行时的各种数据。

  3. 数据表 (Data Table) - 可以将游戏数据以表格(如 Microsoft Excel)的形式进行配置后,使用此模块使用这些数据表。数据表的格式是可以自定义的。

  4. 调试器 (Debugger) - 当游戏在 Unity 编辑器中运行或者以 Development 方式发布运行时,将出现调试器窗口,便于查看运行时日志、调试信息等。用户还可以方便地将自己的功能注册到调试器窗口上并使用。

  5. 下载 (Download) - 提供下载文件的功能,支持断点续传,并可指定允许几个下载器进行同时下载。更新资源时会主动调用此模块。

  6. 实体 (Entity) - 我们将游戏场景中,动态创建的一切物体定义为实体。此模块提供管理实体和实体组的功能,如显示隐藏实体、挂接实体(如挂接武器、坐骑,或者抓起另一个实体)等。实体使用结束后可以不立刻销毁,从而等待下一次重新使用。

  7. 事件 (Event) - 游戏逻辑监听、抛出事件的机制。Game Framework 中的很多模块在完成操作后都会抛出内置事件,监听这些事件将大大解除游戏逻辑之间的耦合。用户也可以定义自己的游戏逻辑事件。

  8. 文件系统 (File System) - 虚拟文件系统使用类似磁盘的概念对零散文件进行集中管理,优化资源加载时产生的内存分配,甚至可以对资源进行局部片段加载,这些都将极大提升资源加载时的性能。

  9. 有限状态机 (FSM) - 提供创建、使用和销毁有限状态机的功能,一些适用于有限状态机机制的游戏逻辑,使用此模块将是一个不错的选择。

  10. 本地化 (Localization) - 提供本地化功能,也就是我们平时所说的多语言。Game Framework 在本地化方面,不但支持文本的本地化,还支持任意资源的本地化,比如游戏中释放烟花特效也可以做出几个多国语言的版本,使得中文版里是“新年好”字样的特效,而英文版里是“Happy New Year”字样的特效。

  11. 网络 (Network) - 提供使用 Socket 长连接的功能,当前我们支持 TCP 协议,同时兼容 IPv4 和 IPv6 两个版本。用户可以同时建立多个连接与多个服务器同时进行通信,比如除了连接常规的游戏服务器,还可以连接语音聊天服务器。如果想接入 ProtoBuf 之类的协议库,只要派生自 Packet 类并实现自己的消息包类即可使用。

  12. 对象池 (Object Pool) - 提供对象缓存池的功能,避免频繁地创建和销毁各种游戏对象,提高游戏性能。除了 Game Framework 自身使用了对象池,用户还可以很方便地创建和管理自己的对象池。

  13. 流程 (Procedure) - 是贯穿游戏运行时整个生命周期的有限状态机。通过流程,将不同的游戏状态进行解耦将是一个非常好的习惯。对于网络游戏,你可能需要如检查资源流程、更新资源流程、检查服务器列表流程、选择服务器流程、登录服务器流程、创建角色流程等流程,而对于单机游戏,你可能需要在游戏选择菜单流程和游戏实际玩法流程之间做切换。如果想增加流程,只要派生自 ProcedureBase 类并实现自己的流程类即可使用。

  14. 资源 (Resource) - 为了保证玩家的体验,我们不推荐再使用同步的方式加载资源,由于 Game Framework 自身使用了一套完整的异步加载资源体系,因此只提供了异步加载资源的接口。不论简单的数据表、本地化字典,还是复杂的实体、场景、界面,我们都将使用异步加载。同时,Game Framework 提供了默认的内存管理策略(当然,你也可以定义自己的内存管理策略)。多数情况下,在使用 GameObject 的过程中,你甚至可以不需要自行进行 Instantiate 或者是 Destroy 操作。

  15. 场景 (Scene) - 提供场景管理的功能,可以同时加载多个场景,也可以随时卸载任何一个场景,从而很容易地实现场景的分部加载。

  16. 配置 (Setting) - 以键值对的形式存储玩家数据,对 UnityEngine.PlayerPrefs 进行封装,也可以将这些数据直接存储在磁盘上。

  17. 声音 (Sound) - 提供管理声音和声音组的功能,用户可以自定义一个声音的音量、是 2D 声音还是 3D 声音,甚至是直接绑定到某个实体上跟随实体移动。

  18. 界面 (UI) - 提供管理界面和界面组的功能,如显示隐藏界面、激活界面、改变界面层级等。不论是 Unity 内置的 uGUI 还是其它类型的 UI 插件(如 NGUI),只要派生自 UIFormLogic 类并实现自己的界面类即可使用。界面使用结束后可以不立刻销毁,从而等待下一次重新使用。

  19. Web 请求 (Web Request) - 提供使用短连接的功能,可以用 Get 或者 Post 方法向服务器发送请求并获取响应数据,可指定允许几个 Web 请求器进行同时请求。


INTRODUCTION

Game Framework is literally a game framework, based on Unity game engine. It encapsulates commonly used game modules during development, and, to a large degree, standardises the process, enhances the development speed and ensures the product quality.

Game Framework provides the following 19 builtin modules, and more will be developed later for game developers to use.

  1. Config - saves some global read-only game configurations, such as the player's initial speed, the initial volume of the game, etc.

  2. Data Node - saves arbitrary types of data within tree structures in order to manage various data during game runtime.

  3. Data Table - is intended to invoke game data in the form of pre-configured tables (such as Microsoft Excel sheets). The format of the tables can be customised.

  4. Debugger - displays a debugger window when the game runs in the Unity Editor or in a development build, to facilitate the viewing of runtime logs and debug messages. The user can register their own features to the debugger windows and use them conveniently.

  5. Download - provides the ability to download files. The user is free to set how many downloaders could be used simultaneously.

  6. Entity - provides the ability to manage entities and groups of entities, where an entity is defined as any dynamically created objects in the game scene. It shows or hides entities, attach one entity to another (such as weapons, horses or snatching up another entity). Entities could avoid being destroyed instantly after use, and hence be recycled for reuse.

  7. Event - gives the mechanism for the game logic to fire or observe events. Many modules in the Game Framework fires events after operations, and observing these events will largely decouple game logic modules. The user can define his own game logic events, too.

  8. File System - the virtual file system, based on the concept of disks, manages scattered files in a centralized way, optimizes memory allocation when resources are loaded, and can even load segments of resources. These will drastically enhance the performance of resource loading.

  9. FSM - provides the ability to create, use and destroy finite state machines. It’d be a good choice to use this module for some state-machine-like game logic.

  10. Localization - provides the ability to localise the game. Game Framework not only supports the localisation of texts, but also assets of all kinds. For example, a firework effect in the game can be localised as various versions, so that the player will see a "新年好" - like effect in the Chinese version, while "Happy New Year" - like in the English version.

  11. Network - provides socket connections where TCP is currently supported and both IPv4 and IPv6 are valid. The user can establish several connections to different servers at the same time. For example, the user can connect to a normal game server, and another server for voice chat. The 'Packet' class is ready for inheritance and implemented if the user wants to take use of protocol libraries such as ProtoBuf.

  12. Object Pool - provides the ability to cache objects in pools. It avoids frequent creation and destruction operations of game objects, and hence improves the game performance. Game Framework itself uses object pools, and the user could conveniently create and manage his own pools.

  13. Procedure - is in fact an FSM of the whole lifecycle of the game. It’d be a very good habit to decouple different game states via procedures. For a network game, you probably need procedures of checking resources, updating resources, checking the server list, selecting a server, logging in a server and creating avatars. For a standalone game, you perhaps need to switch between procedures of the menu and the real gameplay. The user could add procedures by simply subclassing and implementing the 'ProcedureBase' class.

  14. Resource - provides only asynchronous interfaces to load resources. We don’t recommend synchronous approaches for better play experience, and Game Framework itself uses a complete system of asynchronous resource loading. We load everything asynchronously, including simple things like data tables and localisation texts, and complex things like entities, scenes and UIs. Meanwhile, Game Framework provides default strategies of memory management (and of course, you could define your own strategies). In most cases, you don't even need to call 'Instantiate' or 'Destroy' when using 'GameObject' instances.

  15. Scene - provides features to manage scenes. It supports simultaneous loading of multiple scenes, and the user is allowed to unload a scene at any time. Therefore partial loading/unloading of scenes could be easily implemented.

  16. Setting - stores player data in key-value pairs by either encapsulating UnityEngine.PlayerPrefs or by saving the data directly to the disk.

  17. Sound - provides features to manage sounds and groups of sounds. The user could set the properties of an audio clip, such as the volume, whether the clip is 2D or 3D, and could even bind the clip to some entity to follow its position.

  18. UI - provides features to manage user interfaces and groups of UIs, such as showing or hiding, activating or deactivating, and depth changing. No matter the user uses the builtin uGUI in Unity or other UI plugins (NGUI, for example), he only needs to subclass 'UIFormLogic' and implement his own UI logic. The UIs could avoid being destroyed instantly after use, and hence be recycled for reuse.

  19. Web Request - provides features of short connections, supports GET and POST methods to send requests to the server and acquire the response data, and allows the user to send simultaneous requests to different servers.

gameframework's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gameframework's Issues

无法加载编码为ANSI的数据表文件

按照官网的教程:http://gameframework.cn/archives/235
数据表文件需要保存为ANSI编码,但实际上,当我的数据表文件里包含中文的时候(在注释行里),加载文件会失败(不报错,但是加载不出数据)。

最终是将文件转换为UTF-8才能读取成功,请问是为什么呢?

Game Framework版本:3.1.1
Unity3D版本:2017.3

不支持webgl?

报错
NotSupportedException: Platform 'WebGLPlayer' is not supported.
at Flower.ProcedureCheckVersion.GetPlatformPath () [0x00000] in <00000000000000000000000000000000>:0

浏览器:Microsoft Edge,版本 102.0.1245.41 (正式版本) (64 位)
1111

Unity 2017.2 Error CS0619

Using the Unity 2017.2 Test the GameFramework project, is say:

Assets/Scripts/Runtime/Debugger/DebuggerComponent.WebPlayerInformationWindow.cs(21,60): error CS0619: `UnityEngine.Application.isWebPlayer' is obsolete: `This property is deprecated and will be removed in a future version of Unity, Webplayer support has been removed since Unity 5.4'

Assets/Scripts/Runtime/Debugger/DebuggerComponent.WebPlayerInformationWindow.cs(23,59): error CS0619: `UnityEngine.Application.srcValue' is obsolete: `Application.srcValue is obsolete and has no effect. It will be removed in a subsequent Unity release.'

I add the #if #endif to simple fix it

namespace UnityGameFramework.Runtime
{
    public partial class DebuggerComponent
    {
        private sealed class WebPlayerInformationWindow : ScrollableDebuggerWindowBase
        {
            protected override void OnDrawScrollableWindow()
            {
                GUILayout.Label("<b>Web Player Information</b>");
                GUILayout.BeginVertical("box");
                {
                    DrawItem("Absolute URL:", Application.absoluteURL);
                    DrawItem("Streamed Bytes:", Application.streamedBytes.ToString());
#if UNITY_5_4
                    DrawItem("Is Web Player:", Application.isWebPlayer.ToString());
                    DrawItem("Source Value:", Application.srcValue);
#endif
#if UNITY_5_3 || UNITY_5_4
                    DrawItem("Web Security Enabled:", Application.webSecurityEnabled.ToString());
                    DrawItem("Web Security Host URL:", Application.webSecurityHostUrl.ToString());
#endif
                }
                GUILayout.EndVertical();
            }
        }
    }
}

这个地方看看呢

GameFramework/GameFramework/Base/TaskPool/TaskBase.cs
internal void Initialize(int serialId, string tag, int priority)
{
m_SerialId = serialId;
m_Priority = priority;
m_Done = false;
}
这个方法里m_Tag要赋值吗?

加入表格编辑的拓展

会考虑加入在unity中对表格进行编辑的功能么, 创建表 编辑表结构和内容 对其他表的引用

UI界面回收问题

UIForm类的回收函数OnRecycle里将序列号设成0,是否应设成-1才对?
出现此问题是因为程序里有个地方短时间Close一个UI两次,第一次关闭后序列号置0后,第二次关闭时就会把程序第一个打开的UI(序列号为0,但并非真正我要关的ui)给关了。

希望增加 UDP, WebSocket, HTTPS 支持

建议 GameFramwork 支持一些必要的网络通讯协议:
UDP --> 提供 UDP 基础支持,游戏开发者通过派生自己实现 KCP.
WebSocekt --> 为支持 H5 游戏
HTTPS --> 用于 Passport

提个建议

建议一整套解决方案叫GameFramework,这部分叫GameFrameworkCore

         Game
    UnityGameFramework
Unity          GameFrameworkCore

事件派发与释放机制

事件的释放机制逻辑似乎有些问题(3.1.7)
从应用池里获一个事件var eventArg = ReferencePool.Acquire<TestEventArgs>() 然后抛出GameEntry.Event.Fire(this, eventArg ),这两行代码似乎必须得绑定执行——如果在TestEventArgs里定义了一个其他参数object TestParam,每次给参数TestParam赋不同值,将eventArg作为一个全局变量,每次抛出时就会异常。
也就是说Acquire出来的对象不能重复使用、作为全局变量,Fire后就Release了。不知道这算不算是合理还是就是这么设计的

将导出的 .unitypackage 发布到 release 中

如题, 这样只需要在 GitHub 即可获取最新的轮子, 无需自行编译或直接使用源码
目前 (2020.12.30) 可以看到, 最新的 tag: 2020.11.03 并没有在 gameframework.cn 中发布
更新日志也可以相应地同步到 Release 中, 方便对不同的版本进行纵向的对比

官方demo一启动就报错

为什么ab都处理好了启动时也会报错,崩溃停了,也是黑屏

2018-08-04 23:18:59.920362+0800 starforce[770:251825] [DYMTLInitPlatform] platform initialization successful
2018-08-04 23:19:00.150500+0800 starforce[770:251716] Built from '2018.2/release' branch, Version '2018.2.1f1 (1a9968d9f99c)', Build type 'Release', Scripting Backend 'il2cpp'
2018-08-04 23:19:00.168410+0800 starforce[770:251716] -> registered mono modules 0x10140abd0
-> applicationDidFinishLaunching()
2018-08-04 23:19:00.413372+0800 starforce[770:251716] Metal GPU Frame Capture Enabled
2018-08-04 23:19:00.414608+0800 starforce[770:251716] Metal API Validation Disabled
-> applicationDidBecomeActive()
GfxDevice: creating device client; threaded=1
Initializing Metal device caps: Apple A8 GPU
Initialize engine version: 2018.2.1f1 (1a9968d9f99c)
UnloadTime: 1.914000 ms
Game Framework Version: 3.1.4
UnityGameFramework.Runtime.BaseComponent:Awake()
 
(Filename: /Users/builduser/buildslave/unity/build/Runtime/Export/Debug.bindings.h Line: 43)

Game Version: 0.1.0 (0)
UnityGameFramework.Runtime.BaseComponent:Awake()
 
(Filename: /Users/builduser/buildslave/unity/build/Runtime/Export/Debug.bindings.h Line: 43)

Unity Version: 2018.2.1f1
UnityGameFramework.Runtime.BaseComponent:Awake()
 
(Filename: /Users/builduser/buildslave/unity/build/Runtime/Export/Debug.bindings.h Line: 43)

Init language settings complete, current language is 'ChineseSimplified'.
StarForce.ProcedureLaunch:InitLanguageSettings()
StarForce.ProcedureLaunch:OnEnter(IFsm`1)
UnityGameFramework.Runtime.<Start>c__Iterator0:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
 
(Filename: /Users/builduser/buildslave/unity/build/Runtime/Export/Debug.bindings.h Line: 43)

Init current variant complete.
StarForce.ProcedureLaunch:OnEnter(IFsm`1)
UnityGameFramework.Runtime.<Start>c__Iterator0:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
 
(Filename: /Users/builduser/buildslave/unity/build/Runtime/Export/Debug.bindings.h Line: 43)

Init quality settings complete.
StarForce.ProcedureLaunch:OnEnter(IFsm`1)
UnityGameFramework.Runtime.<Start>c__Iterator0:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
 
(Filename: /Users/builduser/buildslave/unity/build/Runtime/Export/Debug.bindings.h Line: 43)

Init sound settings complete.
StarForce.ProcedureLaunch:OnEnter(IFsm`1)
UnityGameFramework.Runtime.<Start>c__Iterator0:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
 
(Filename: /Users/builduser/buildslave/unity/build/Runtime/Export/Debug.bindings.h Line: 43)

2018-08-04 23:19:05.226842+0800 starforce[770:251857] You are using download over http. Currently Unity adds NSAllowsArbitraryLoads to Info.plist to simplify transition, but it will be removed soon. Please consider updating to https.
Latest game version is '0.1.0', local game version is '0.1.0'.
StarForce.ProcedureCheckVersion:OnWebRequestSuccess(Object, GameEventArgs)
GameFramework.EventPool`1:HandleEvent(Object, T)
GameFramework.EventPool`1:Update(Single, Single)
GameFramework.GameFrameworkEntry:Update(Single, Single)
 
(Filename: /Users/builduser/buildslave/unity/build/Runtime/Export/Debug.bindings.h Line: 43)

Init resources complete.
GameFramework.Resource.ResourceManager:OnIniterResourceInitComplete()
GameFramework.Resource.ResourceIniter:ParsePackageList(String, Byte[], String)
UnityGameFramework.Runtime.<LoadBytesCo>c__Iterator0:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
 
(Filename: /Users/builduser/buildslave/unity/build/Runtime/Export/Debug.bindings.h Line: 43)

(lldb) 

ProcedureChangeScene.OnUpdate 异常,很少触发

NullReferenceException: Object reference not set to an instance of an object.
at Game.ProcedureChangeScene.OnUpdate (GameFramework.Fsm.IFsm`1[T] procedureOwner, System.Single elapseSeconds, System.Single realElapseSeconds) [0x00000] in <00000000000000000000000000000000>:0
at GameFramework.Fsm.FsmManager.Update (System.Single elapseSeconds, System.Single realElapseSeconds) [0x00000] in <00000000000000000000000000000000>:0
at GameFramework.GameFrameworkEntry.Update (System.Single elapseSeconds, System.Single realElapseSeconds) [0x00000] in <00000000000000000000000000000000>:0

EntityLogic Loading Slow

When I create Entity A. Then i attach 4 or 5 EntityLogic to Entity A. The game loading is somehow slow. Can you give me some advice?

网络组件解包问题

版本 Game Framework 2019.11.26,unity2018.4.1
问题:包头解析后,得到包的大小和消息id,当给包头的 PackageLeng赋值后,包体解析函数没有被调用。反之,不给包大小赋值就正常调用 包体解析函数。

UI弹框队列

如果一个弹框已经打开了,但其实后面会有打开弹框的需求,但必须得等这个界面关闭后再出现缓存的弹框。看目前框架里没有支持

加载某个资源就会导致整个游戏死机,无法进行任何操作(Android端)

这个问题是这样的,就是加载实体(ShowEntity)的操作,生成Android版本跑的,一加载某个实体就会卡住(无响应的状态)。
后来发现是加载某个资源的时候出问题的,加载这个资源的时候,就会卡住。
目前发现的是,加载这个资源的时候没有成功调用OnLoadAssetSuccess,但是也没有报错。

一加载这个资源就会导致整个游戏死机,无法进行任何操作。

这个问题在Editor和PC版里都是正常的,只有Android版本会出现这个问题。

能不能提供一个思路或方向给我,我现在有点迷失方向了。

框架版本:3.1.6
Unity3D版本:2018.3

AssetObject被lock可能导致bug

虽然没有用到lock,但在处理时发现这个地方可能导致bug,需Ellan确认。

AssetObject在OnUnspawn()的时候会将其依赖资源全Unspawn,如果在资源层次上把某个AssetObject Lock了,它不会被Release掉,但依赖资源可能会被Release掉。下次加载该资源时就可能出现问题。

解决方法是AssetObject在Lock时,将其依赖资源也lock掉。

好吧,其实你没有开放接口可以对某个资源进行lock,不过说不准谁会自己加一个这样的接口。所以这算一个不是bug的bug。

Unity 2017.2 UnityEditor not show

in Unity 2017.2,UnityEditor must in the folder Assets/Editor/xxx
I am new unity user. so i not know it work in unity old version.

异步加载优化

异步加载资源的优化怎么办??
现在我需要控制上百个entity 并且有声音 特效
要怎么搞???
现有的这一套框架 单个异步加载不耗时间
如果控制实体太多了 就算是就不会卡顿 声音和实体也对应不上了

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.