Code Monkey home page Code Monkey logo

agora-unreal-sdk-cpp's Issues

Meeting with Customer dev to solve Agora + custom engine issue

Issue
When Gathr attempts to open their project in the Unreal Editor using a Mac, they are consistently blocked by an error.

Solution
Provide a fix to the plugin, or instructions Gathr can follow to avoid this blocking issue

More Context
Using a Mac with a blank project does not cause this error. It appears to be related to something involving Gathr's engine settings, plugins, code, etc.

[FEATURE] Android support?

I can see that the Unreal Blueprint demo app runs on Android. However this CPP demo app is Windows, Web and IOS only. Looking through the code, I cant see why though as the Unreal project is cross-platform. Or am I missing something?

Agora Windows Error

Describe the bug
In AgoraService.h, the platform check for IOS is improperly formatted and causes the compile to fail.
This:
#if defined (__APPLE__ && TARGET_OS_IPHONE) #include <Agora/iOS/Include/IAgoraService.h> #else #include <Agora/IAgoraService.h> #endif
Should be:
#if defined (__APPLE__) && (TARGET_OS_IPHONE) #include <Agora/iOS/Include/IAgoraService.h> #else #include <Agora/IAgoraService.h> #endif

To Reproduce
Steps to reproduce the behavior:

  1. Create new UE 4.25 project.
  2. Install Agora plugin.
  3. Open project solution file in Visual Studio 2019.
  4. Compile solution.

Expected behavior
The Agora plugin should not cause any compilation issues.

Screenshots
n/a.

Desktop (please complete the following information):

  • OS: Windows 10
  • UE Version: 4.25.3
  • Agora SDK Version: 3.0.1

PC Platform Support for Unreal 4.25.3

Problem
Unreal updated the engine to 4.25.3, causing errors during PC builds for the plugin and project.
As Unreal automatically updates the engine, this is a blocker for PC users.

Solution

  • Identify what changes to the engine broke the build support, and attach them to this issue so we can understand what happened and avoid this issue in the future if possible.
  • Update the plugin to support Unreal 4.25.3

enableSoundPositionIndication(true) - Crash when many people are talking at once

Describe the bug
Broadcasting to a voice channel with many instances causes a crash after enabling positional audio.

To Reproduce
Instances will crash randomly/when spikes in volume occur:

  1. Call method enableSoundPositionIndication(true) from rtcEngine
  2. Connect to a voice channel with many instances of game on one device (I reproduced with >10 instances of the game)
  3. Start broadcasting audio (playing music is easiest way to reproduce)
  4. Some instances will crash pointing to agora_rtc_sdk.dll

All instances will crash once microphone is unmuted:

  1. Call method enableSoundPositionIndication(true) from rtcEngine
  2. Mute your input device
  3. Connect to a voice channel with many instances of game on one device (I reproduced with >10 instances of the game)
  4. Start broadcasting audio (playing music is easiest way to reproduce)
  5. Unmute your input device so that other instances receive audio at the same time.
  6. All instances will crash pointing to agora_rtc_sdk.dll

Expected behavior
Positional audio works smoothly and there is no crash

Screenshots
I have reproduced the crash in the editor with Rider for Unreal 2021.2. It points to agora_core_audio_render_thread and the method AgoraRTC::ChENetwork::~ChENetwork(void)
stacktrace

Desktop:

  • OS: Windows 10
  • Version: 19042.1165

Additional context
Been reproduced when joining a single Agora voice channel and also joining multiple Agora channels

Unreal SDK BP Refactor

Blueprint wrapper Doesn't include all functionality
The Blueprint wrapper doesn't reflect Agora's native functionality.
Currently, it has been modified at Nix's discretion for Unreal adaptation.

Solution
The Blueprint wrapper includes functions that have been left out.

Nix Comments
Pure c++ version is not available in blueprints,
blueprints version is available in c++ but its interface is different from native agora SDK.

In the current implementation, we are faced with the fact that sometimes users try to mix approaches.
This use case was not included in the plugin idea and leads to incorrect plugin behavior.
We suggest to merge ั++ module and blueprints module to have a single approach customers should work with.

Actions that should be done:

  • Exclude ั++ module from the plugin, make single interface.
  • Extend blueprints module with pure c++ functions.
  • Add pure blueprint functions such as registerMediaMetadataObserver, registerPacketObserver to UIAgora class, check the rest of the functions that could be missing.
  • Handle IMediaEngine class (currently it is incapsulated into UIAgora class and only registerAudioFrameObserver and registerVideoFrameObserver are available).
  • Find out if the function queryInterface should be added to the plugin.
  • Find the way how to save native sdk interface in the plugin and extend it with simplified blueprint functions.
  • IRtcEngineParameter class functions are currently integrated in the UIAgora class, double check the idea, probably it is possible to leave them in some IRtcEngineParameter heir.
  • Update the documentation.
  • Remake the c++ demo based on a new plugin

Spatial Audio

Agora cannot pass audio frames by specific user
When Gathr devs try to get audio from Agora users, it comes in one giant block of all user audio mixed together.

Solution: Return audio frames by specific Agora UID

The Gathr team resources
Gathr has provided example code, email descriptions and Slack messages providing extra context and support.

I can't compile the project successul.

There is an error when I compile the original project.

1>------ Build started: Project: AgoraVideoCall, Configuration: Development_Editor x64 ------ 1>Creating makefile for AgoraVideoCallEditor (no existing makefile) 1>UnrealBuildTool : warning : Library 'agora_rtc_sdk.lib' was not resolvable to a file when used in Module 'Agora', assuming it is a filename and will search library paths for it. This is slow and dependency checking will not work for it. Please update reference to be fully qualified alternatively use PublicSystemLibraryPaths if you do intended to use this slow path to suppress this warning. 1>Parsing headers for AgoraVideoCallEditor 1> Running UnrealHeaderTool "E:\Unreal Plugins\Agora-Unreal-SDK-CPP-master\AgoraVideoCall.uproject" "E:\Unreal Plugins\Agora-Unreal-SDK-CPP-master\Intermediate\Build\Win64\AgoraVideoCallEditor\Development\AgoraVideoCallEditor.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -installed 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(173) : LogCompile: Error: 'EFRAME_RATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(197) : LogCompile: Error: 'EORIENTATION_MODE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(209) : LogCompile: Error: 'EDEGRADATION_PREFERENCE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(333) : LogCompile: Error: 'ECAPTURER_OUTPUT_PREFERENCE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(373) : LogCompile: Error: 'EAUDIO_PROFILE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(394) : LogCompile: Error: 'EAUDIO_SCENARIO_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(420) : LogCompile: Error: 'EAUDIO_EQUALIZATION_BAND_FREQUENCY' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(436) : LogCompile: Error: 'EAUDIO_REVERB_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(466) : LogCompile: Error: 'EAUDIO_REVERB_PRESET' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(476) : LogCompile: Error: 'ECLIENT_ROLE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(488) : LogCompile: Error: 'EPRIORITY_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(506) : LogCompile: Error: 'ERENDER_MODE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(516) : LogCompile: Error: 'EAUDIO_CODEC_PROFILE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(540) : LogCompile: Error: 'ERAW_AUDIO_FRAME_OP_MODE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(554) : LogCompile: Error: 'ESTREAM_FALLBACK_OPTIONS' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(574) : LogCompile: Error: 'EVOICE_CHANGER_PRESET' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(586) : LogCompile: Error: 'EVIDEO_MIRROR_MODE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(604) : LogCompile: Error: 'EAUDIO_RECORDING_QUALITY_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(616) : LogCompile: Error: 'ELIGHTENING_CONTRAST_LEVEL' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(628) : LogCompile: Error: 'EAUDIO_SAMPLE_RATE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(639) : LogCompile: Error: 'EVIDEO_CODEC_PROFILE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1332) : LogCompile: Error: 'EUSER_OFFLINE_REASON_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1374) : LogCompile: Error: 'ECHANNEL_PROFILE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1396) : LogCompile: Error: 'EVIDEO_FRAME_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1435) : LogCompile: Error: 'EVIDEO_CONTENT_HINT' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1447) : LogCompile: Error: 'ELASTMILE_PROBE_RESULT_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1503) : LogCompile: Error: 'EQUALITY_ADAPT_INDICATION' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1517) : LogCompile: Error: 'EVIDEO_CODEC_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1595) : LogCompile: Error: 'EREMOTE_VIDEO_STREAM_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1747) : LogCompile: Error: 'ELOCAL_AUDIO_STREAM_ERROR' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1764) : LogCompile: Error: 'ELOCAL_AUDIO_STREAM_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1793) : LogCompile: Error: 'EREMOTE_AUDIO_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1830) : LogCompile: Error: 'EREMOTE_AUDIO_STATE_REASON' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1853) : LogCompile: Error: 'EMEDIA_DEVICE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1870) : LogCompile: Error: 'EAUDIO_MIXING_STATE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1887) : LogCompile: Error: 'EAUDIO_MIXING_ERROR_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1904) : LogCompile: Error: 'ELOCAL_VIDEO_STREAM_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1927) : LogCompile: Error: 'ELOCAL_VIDEO_STREAM_ERROR' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1952) : LogCompile: Error: 'EREMOTE_VIDEO_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1987) : LogCompile: Error: 'EREMOTE_VIDEO_STATE_REASON' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2004) : LogCompile: Error: 'ECHANNEL_MEDIA_RELAY_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2051) : LogCompile: Error: 'ECHANNEL_MEDIA_RELAY_ERROR' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2094) : LogCompile: Error: 'ECHANNEL_MEDIA_RELAY_EVENT' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2122) : LogCompile: Error: 'ERTMP_STREAM_PUBLISH_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2160) : LogCompile: Error: 'ERTMP_STREAM_PUBLISH_ERROR' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2186) : LogCompile: Error: 'EAUDIO_ROUTE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2229) : LogCompile: Error: 'ECONNECTION_STATE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2283) : LogCompile: Error: 'ECONNECTION_CHANGED_REASON_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2309) : LogCompile: Error: 'ENETWORK_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets(46,5): error MSB3075: The command "chcp 65001 >NUL && "D:\Program Files\UE_4.24\Engine\Build\BatchFiles\Build.bat" AgoraVideoCallEditor Win64 Development -Project="E:\Unreal Plugins\Agora-Unreal-SDK-CPP-master\AgoraVideoCall.uproject" -WaitMutex -FromMsBuild" exited with code 5. Please verify that you have sufficient rights to run this command. 1>Done building project "AgoraVideoCall.vcxproj" -- FAILED. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

I have tried to modify the path of agora_rtc_sdk.lib ,but it doesn't work. Can you give me some help? I use UE4.24, vs2019, win10.
Image_20200609090102

Include PC, Mac, Android, iOS Build Support into Single Plugin

Issue
Currently, the plugin builds are separated into two different branches:

  • Mac, PC, Android
  • iOS

Solution
Include iOS build support into plugin along with the other platforms

Additional context
The iOS separation was caused by fundamental changes to Agora SDK. Support might be needed from Agora team to make this happen

Unreal SDK C++ Refactor

C++ SDK isn't to parity with Agora Native SDK
The C++ SDK currently doesn't reflect Agora's native C++ SDK.
Currently, it has been modified at Nix's discretion for Unreal adaptation.

Solution
The C++ SDK reflects the standard with which Agora has built their C++ SDK, adapted for Unreal code standards, etc.

For Nix
Please include what needs to be changed in C++ wrapper here

Failed To Load Agora Third Party Plugin

1

On Making a build its shows this message and crashes

Hey Saurabh,

What platform are you using, and what version of Unreal Engine are you using?

Hello Joel,

My bad!! I forgot to package the plugin as well

Thanks for the reply though

Text Chat via StreamMessage

Stream Messages weren't able to be sent to multiple channels
As a user, I can send text chats to one person, but not to people using multiple Agora channels

Solution
Stream Messages are able to be sent through IChannel objects, for the purpose of text chat through multiple Agora channels

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.