Code Monkey home page Code Monkey logo

supermodel's People

Contributors

aaronbpaden avatar baraclese avatar capitainesheridan avatar casasfernando avatar dukeeeey avatar firewave avatar gm-matthew avatar h0tw1r3 avatar j-lag avatar jaoxford avatar john-peterson avatar thebrinkoftomorrow avatar tobul avatar toxieainc avatar trzy avatar villedevs avatar

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

supermodel's Issues

Multiple mice with Linux

Hello,

This is a continuation of the discussion from the Supermodel forum.

It doesn't appear to be possible to use multiple mice in the current version of Supermodel with a Linux system (lamachin, lostwsga, oceanhun).

The three ways to allow multiple mice that come to mind are:

  • Alternate "raw" input driver for Linux systems (AdvanceMAME did something similar to this)
  • Use the ManyMouse library (maybe AdvanceMAME did this; not sure)
  • Create a Libretro port of the emulator so that the Libretro LIGHTGUN absolute device type can hook into the emulator's own coordinates. The various Libretro MAME ports do this. This would also give a GUI system to allow various emulator settings to be adjusted.

The recent additions are exciting! I could help with the lightgun hookup in a potential Libretro port, but that would mean the port already exists. Other than that, my friends and I are happy to help with testing anything that anyone comes up with!

Build flow and compiling: Improving compilation by utilizing mingw/make – can't find SDL

@BlackPowerade and I are having a discussion over at the Scoop Games repository.

Scoop is a command-line installer – more commonly known as a package manager.

We're trying to figure out how to improve the compiling process of the emulator, particularly by using mingw or make in a GitHub Actions flow rather than python – but so far we're unable to get those methods to find SDL.


We're also trying to figure out how to make regex recognize the addition of a new compiled build, as well as the hash of the corresponding build, at the same time.

That would make us able to create a manifest for the emulator.

error: no function with name 'texture2DLod'

When running a Supermodel build compiled on my Linux machine, I get this error at runtime:

0:110(14): error: no function with name 'texture2DLod'
0:111(14): error: no function with name 'texture2DLod'
0:112(14): error: no function with name 'texture2DLod'
0:113(14): error: no function with name 'texture2DLod'
0:116(5): warning: `p0q0' used uninitialized
0:116(14): warning: `p1q0' used uninitialized
0:116(35): warning: `p0q0' used uninitialized
0:117(5): warning: `p0q0' used uninitialized
0:117(14): warning: `p0q1' used uninitialized
0:117(35): warning: `p0q0' used uninitialized
0:119(14): warning: `p0q0' used uninitialized
0:120(14): warning: `p1q1' used uninitialized

error: linking with uncompiled/unspecialized shader

From there, as expected, there's no 3D output but the rest of the game runs.

It seems like newer GLSL versions have this function included, and when messing with OpenGL ES porting it worked fine after changing the vertexShaderR3D and fragmentShaderR3D's versions to 300 es (not accounting for the other changes that had to be made to get that to work), but there also seem to be extensions like GL_EXT_EGL_image_storage and GL_EXT_shader_texture_lod which might work without a version change if added to fragmentShaderR3D and changing texture2DLod calls to texture2DLodEXT but I couldn't get this solution to work. I'd get this error message from attempting to use the latter extension in particular:

warning: extension `GL_EXT_shader_texture_lod' unsupported in fragment shader

The OpenGL version Supermodel is being ran with appears to be 4.6.

Create a default Supermodel.ini and Games.xml if they don't exist

When a user runs Supermodel for the first time or if for some reason the Config directory is not available in current Supermodel binary path, Supermodel fails to start because of the missing Supermodel.ini and Games.xml files.

It would be great if Supermodel can automatically create these two mandatory files in case they are missing.
This is sort of related to #6 so implementing this can solve that one as well.

Thanks.

[Linux] Scaling to lower resolutions not working in fullscreen mode

Supermodel does not honor resolution settings lower than the display's highest setting when in fullscreen mode, when the target display is a secondary monitor. For example, on a secondary monitor connected via HDMI that supports 1920x1080 resolution, running Supermodel with:

-force-feedback -res=1024,768 -vsync -fullscreen -true-hz -quad-rendering

Results in a stretched 16:9 image, rather than the proper 4:3 image as specified above.

Test info:

  • OS: Linux Mint 21 / kernel 5.15
  • CPU: Intel i7-10870H
  • GPU: Nvidia GTX 3070 / driver 525.60
  • Commit tested: ad0aed4

Provide Pre-Compiled Linux Binary as Tarball

While I completely agree that compiling it yourself is a key part of the linux experience, providing a pre-compiled tarball of the binary I believe would be useful for a matter of reasons, including hash comparison and ease of distribution.

This is something that could be pretty easily automated, using a VM, cloud service, or GitHub actions for example.

Issues configuring joystick

I've got an odroid h2+ x86 intel board inside of an arcade cab, running Ubuntu 22. I compiled the emulator and when i run the command: ./supermodel -config-inputs
The window comes up, but it won't accept my joystick/button inputs. I am using a dragon usb encoder, and it works in RetroArch and various stand alone emulators, not sure what exactly the issue is, any help would be appreciated.

The keyboard works if i press a button as input as well.

srally2: Bad sound quality with new Supermodel releases

Hello, first of all thank you all for this great effort you are doing!

Well, unfortunately I experienced some audio issues when testing srally2.zip with many of the latest Supermodel 0.3a snapshots (64-bit Windows) and get choppy, cracking sound.
Tried changing channels, tweaking legacy dsp, etc but nothing seemed to improve the situation...

All I know is that the old Supermodel 0.3 SVN 626 Release gives me good audio quality, as well as the even older 0.2a version.

Also I got stereo audio, if that matters.

Transparency Issues in all games

I was testing the lastest Supermodel 3 version (0.3a-git-0eef09b_Win64) and notice issues with the transparency. Its more noticeable in the reflections/lens flare effects in games like "Sega Rally 2" or "Scud Race"... this glitch reminds me a lot of when you try to emulate Dreamcast without using OIT, is this similar layer issue?

Sega Rally 2:
sega rally 2
sega rally 2 (1)

Scud Race:
scud race
scud race (1)

Core i7 4770K
GTX1070
Windows 10.

Saludos!

Missing textures

Linux 6.5.0-1-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.5.3-1 (2023-09-13) x86_64 GNU/Linux
GPU info: 4.6 (Compatibility Profile) Mesa 23.2.1-1 (compatability profile)

OpenGL information:

Vendor : Intel
Renderer : Mesa Intel(R) UHD Graphics (TGL GT2)
Version : 4.6 (Compatibility Profile) Mesa 23.2.1-1
Shading Language Version : 4.60
Maximum Vertex Array Size: 3000 vertices
Maximum Texture Size : 16384 texels
Maximum Vertex Attributes: 16
Maximum Vertex Uniforms : 16384
Maximum Texture Img Units: 32

[supermodel.log](https://github.com/trzy/Supermodel/files/13
Sega Rally 2
07
Star Wars Trilogy
3997/supermodel.log)
The Lost World

The games appear to run normally, but some 3d objects are white.

New gfx engine won't work on Orange Pi 5

Hello!!
Thank you a million times for making your awesome emulator available for people to try! :)
I just spotted someone posting videos running it on a Orange Pi 5 so I thought I have to try it too on mine!

I just got Sega Rally 2 going to start with and it runs at mostly 60fps when using your legacy 3d engine option. Very Cool!
There are some graphical things that seem broken (like the speedometer and doubling up flickering cars) on the old engine but I'm sure you're aware of that or it's possible that it's the 'Panfork' mesa drivers on my system that's not fully working. (The GPU does not yet have full proper Panfrost support so Armbian has been using this 'Panfork' version)

When I try with the new engine using default or explicit with -new3d it doesn't want to start at all and gives a message,

Error: Unable to create OpenGL context: Could not create GL context: GLXBadFBConfig

The SBC is run on Armbian with Ubuntu gnome desktop.
This is my glxinfo output if you're interested:

name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Panfrost (0xffffffff)
Device: Mali-G610 (Panfrost) (0xffffffff)
Version: 23.0.0
Accelerated: yes
Video memory: 7689MB
Unified memory: yes
Preferred profile: compat (0x2)
Max core profile version: 0.0
Max compat profile version: 3.0
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.1
OpenGL vendor string: Panfrost
OpenGL renderer string: Mali-G610 (Panfrost)
OpenGL version string: 3.0 Mesa 23.0.0-devel
OpenGL shading language version string: 1.30
OpenGL context flags: (none)

OpenGL ES profile version string: OpenGL ES 3.1 Mesa 23.0.0-devel
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10

Cheers and Thanks again this was fun to try!

[Sega Rally 2] Engine sound is missing?

Using the latest GIT code as always, but I can't hear the engine sound.
Is that a known bug? Searched the issues but didn't find anything.
Is there a workaround?

Compiling with NET_BOARD on macOS

Hi

I successfully build and ran Supermodel on my M1 Arm Mac.
Yet, when I tried to build it again with NET_BOARD enabled, I got an error referring to <SDL2_net/SDL_net.h> not being found.

both SDL_net and SDL2 are installed using brew.

Am I missing something here ? let me know if I can run or check anything you need.

[fvipers2]Sound Bug

There's a sound bug when playing "Fighting Viper 2".
If we play "Fighting Viper 2" in Stage 5,
it often occur that so loud noise comes to us.

Please see and fix it.

Best.

No audio on GNU/Linux (x86_64, latest stable SDL2 on ALSA)

Hi there,

I have just built Supermodel for the first time on GNU/Linux (Debian 12, x86_64) and I get no sound at all.
Seems like Supermodel uses SDL2 audio, and on my system SDL2 uses the ALSA backend (no Pulseaudio or other latency-introducing APIs, only direct ALSA audio for me).

Has Supermodel been tested on such an scenario?
Maybe audio is currently broken on current GIT code somehow?

All my other SDL2 games (Scummvm, SDLPop, DoomRetro, VanillaConquer and a LONG list) do work fine, it's only Supermodel that's failing to produce any audio.

Update Documentation

The documentation (read me etc) is a little outdated and could do with bringing everyone up to speed on the latest developments.
I am willing to help with this.

White track graphics on Scud Race and Daytona USA 2

Hi there,

As I said in a previous thread, I have just build Supermodel latest GIT code on Debian 12, where I run latest stable SDL2 and latest stable MESA (23.2.1 as of this writing).

The problem is that are supposedly working good on Supermodel current code look like this:

photo_2023-10-18_18-13-33

I suspect MESA drivers: I have 12th gen Intel XE Graphics, and as I said I use latest stable MESA 23.2.1.
Has Supermodel been tested on 12th gen Intel graphics?

Linux Intel GPU error: GLSL 4.10 is not supported

Linux 5.10.0-19-amd64 #1 SMP Debian 5.10.149-2 (2022-10-21) x86_64 GNU/Linux

Supermodel Version 0.3a-WIP as of 5f30614

./supermodel -print-gl-info

OpenGL information:

Vendor : Intel Open Source Technology Center
Renderer : Mesa DRI Intel(R) HD Graphics (ILK)
Version : 2.1 Mesa 20.3.5
Shading Language Version : 1.20
Maximum Vertex Array Size: 3000 vertices
Maximum Texture Size : 8192 texels
Maximum Vertex Attributes: 16
Maximum Vertex Uniforms : 16384
Maximum Texture Img Units: 16

./supermodel -legacy3d vf3.zip

0:3(10): error: GLSL 4.10 is not supported. Supported versions are: 1.10, 1.20, and 1.00 ES
error: linking with uncompiled/unspecialized shadererror: linking with uncompiled/unspecialized shader

I'm not sure why its trying to use GLSL 4.10.

Make quad rendering the new default?

As the feature is more precise and roughly same speed (measured on my Intel and NVIDIA laptop GPUs, using HDish resolution and no-throttle and no-vsync), should it be the new default?

[Linux] Predictable paths for configuration, nvram, etc

When running Supermodel on Linux the program expects to find the configuration files and folders (e.g. Config, NVRAM, Saves) in the same path where the binary was called from.

For example if the user is sitting on /directory_a and he executes supermodel, the program expects to find Config directory in /directory_a/Config, but then if the user moves to say /directory_b and executes supermodel again, the program will look for the Config directory in /directory_b/Config and it will fail. This forces the user to always execute the program binary while sitting in the same directory where the Config and other program folders are otherwise it will not find them.

In order to solve this the program folders should reside in a standard and predictable place where the program will always look for them instead of current directory. E.g.: the user home directory (/home/<username>/.config/supermodel).
As a plus, this would also allow for different users in the same Linux machine to have separate configuration files, nvram, save states, screenshots, etc.

You can find a sample, outdated, patch that reflects what I'm talking about, here: https://aur.archlinux.org/cgit/aur.git/tree/multiuser.patch?h=supermodel-git

I can work on a PR for this if you are interested.

Looking forward your thoughts.
Thanks

Driver forced anisotropic filtering doesn't work

Hello,

Nvidia driver forced Aniso used to work in old versions of Supermodel.

Oldest verified version that works is r453. Next version that I've verified doesn't work is r846.

Something was done in the middle that has broken the Anisotropic compatibility. Other Driver options like limiting framerate or activating driver FXAA work, but not Aniso.

Anisotropic filtering lack is obvious in racing games where road lines are blurred a few meters away of the car.

Thank you

Request: Ability to adjust the size of the crosshair(s) / corresponding scaling depending on the resolution/DPI

Especially useful for high resolution displays where the crosshairs become very small.

Its implementation would make the resolution of the display a non-issue, as well as give the user control of the experience overall, i.e., what size of crosshair they prefer while playing.

The feature to, depending on the resolution/DPI of the display, automatically scale the crosshair(s) accordingly, would obviously be ideal – but I don't doubt that's something very intricate to implement.

Whatever the case, the ability to manually specify a value that corresponds to the size of the crosshair(s) would be a great improvement.

Remove Supermodel.ini from future releases

Hi @trzy , opening this ticket as requested in the forums.

Context:
During update, users tend to download the latest ZIP and simply overwrite all their old files with the new ones. Controller config is often cited as the part that needs work and having a Supermodel.ini included in the ZIP overwrites existing custom controls if users forget to back it up, which they will haha. Not a heavy task to back up, but an added cognitive load which users have to remember when doing so.

Proposed Solution:

  • For new users/fresh installs, the missing INI is not a problem because they are already instructed from the Help documentation to generate one if it is missing. Nothing changes from this POV.
  • For existing users with configs, the accidental overwrite is a real possibility. Removing the INI from future releases should require no additional code and Supermodel effectively behaves the same. All files are safely overridden on update, with the safety of avoiding a possibly frustrating mishap. This is the quick no-code solution.

Possible Approach: (good to have, not mandatory)

  • -config-inputs generates the INI if it does not exist. This is current behaviour, so no changes here.
  • -config-inputs detects an existing INI and asks the following in the cmd prompt:
Supermodel.ini exists. Do you wish to overwrite and reset inputs to default (y/n)? y
Creating new INI file...
(proceeds to the usual input config)

Supermodel.ini exists. Do you wish to overwrite and reset inputs to default (y/n)? n
Modifying existing INI...
(proceeds to the usual input config)

y = creates a new INI, all custom mappings reset to default
n = uses existing INI and appends to it, previous custom mappings preserved

The command is very well doing this now under the hood, but perhaps a couple of decision/confirmation messages further improves user experience when they are already daunted by the cmdline interface. This is also the feedback I hear from the emulation group I'm in, so I try to make the YouTube tutorials to make Supermodel config easier for them.

Thanks for reading Bart. Best of luck for your crunch time! :)

Noticeable "clicking" sound in music

Using "Supermodel_0.3a-git-0eef09b_Win64" version.

Playing Daytona USA 2 Power Edition (also noticeable on Sega Rally 2) there is a random clicking in the bgm sound, I'm assuming it's related to the MPEG decoding.

Here is a ~1m sample where you can clearly listen to the "clicking" multiple times. This seems to happen randomly and sporadicly, but more noticeable in drum beats.

Advised to use earphones or headphones to be more noticeable.

https://mega.nz/file/Mok2zJoJ#OJEvYkO8Nb9kgO3d4btWktHsqocc-V_yRslEO6aVEH8

UPD: Forgot to mention that this did not happen on previous builds like r862. Same PC. Same setup. Nothing changed.

Reduce fixed function pipeline usage

It seems like only a few pieces of code in the 2D renderer and new 3D renderer (a snippet CRender2D::DisplaySurface and some crosshair rendering) utilize fixed function rendering. The legacy renderer might be a whole other beast-- I haven't looked into it much-- but I think it'd be interesting to adapt everything else to use shaders to help it be compatible with more OpenGL versions (e.g. Core, ES, and newer standard OpenGL versions which have these functions deprecated).

Unable to create OpenGL context glxbadfbconfig error.

I´ve compiled the source code on Raspberry Pi 3B+ and despite some warnings, I got the bin file.

But when I try to run it, I get the error message:

Error: Unable to create opengl context glxbadfbconfig.

I have enabled the OpenGL and installed the SDL2 libraries. What am I missing ?

[Linux] Build Failure

Details:

  • OS: Linux Mint 21 / kernel 5.15
  • Compiler: gcc 11.2.0
  • Bad build commit: f0872cc
  • Last good build commit: e644751
  • Build log: build.log

Build log excerpt:

Src/Graphics/New3D/GLSLShader.h: In member function ‘bool GLSLShader::cmp_str::operator()(const char*, const char*) const’:
Src/Graphics/New3D/GLSLShader.h:38:37: error: ‘strcmp’ is not a member of ‘std’
   38 |                         return std::strcmp(a, b) < 0;
      |                                     ^~~~~~
In file included from Src/Graphics/New3D/R3DFrameBuffers.h:6,
                 from Src/Graphics/New3D/R3DFrameBuffers.cpp:1:
Src/Graphics/New3D/GLSLShader.h: In member function ‘bool GLSLShader::cmp_str::operator()(const char*, const char*) const’:
Src/Graphics/New3D/GLSLShader.h:38:37: error: ‘strcmp’ is not a member of ‘std’
   38 |                         return std::strcmp(a, b) < 0;
      |                                     ^~~~~~

Supermodel config files not found

I am trying to manually add this to the Steam Deck through EmulationStation. ES documentation suggests using their older linus build here: https://gitlab.com/es-de/emulationstation-de/-/blob/master/USERGUIDE.md#arcade-and-neo-geo

When I set up the files, regardless of where I move the config and NVRAM folders, I get an error that I believe is supposed to say "Unable to open 'Config/Supermodel.ini'. Configuration will not be loaded", only the part in single quotes is garbled. I also tried the windows version in custom systems and I get the same error, only its not garbled. And I cant get it to find the Config folder no matter where I put it. Yet it finds the folder just fine when it goes to write to the error log. EmulationStation's documentation says that Supermodel has to be installed in the ~/Applications directory, but for the deck it has to be in /home/deck/Applications and I am wondering if that is the issue? Wouldn't the custom systems xml override that? I know there was an existing PR merged back in that checked for the config in 3 locations, but does it create one if its not found?

Analog positive/negative inputs are not implemented correctly

A user recently requested that it be possible to map analog axes to digital inputs that do not decay when released. After some digging, it appears this is not as simple as replacing:

int d = Clamp((int)decaySpeed, 1, 200);

With:

int d = Clamp((int)decaySpeed, 0, 200);

Analog axes are implemented by CAnalogAxesInput, which takes two digital input sources for the positive and negative sides. These maintain their own value which increments and then decays but this seems wrong. For example, when using digital inputs for the light gun axes, pressing left to move the cursor all the way to the left edge of the screen, releasing, and then pressing right before the decay has finished causing the positive and negative digital inputs to fight each other.

Here is the implementation:

void CAxisInput::Poll()
{
	prevValue = value;

	// Try getting value from analog inputs that represent negative and positive range of the axis first and then try the default input source
	int intValue = value;
	if ((m_negInput != NULL && m_negInput->HasValue()) || (m_posInput != NULL && m_posInput->HasValue()))
	{
		if (m_maxVal > m_minVal)
		{
			value = m_offVal;
			if (m_posInput != NULL) value += (int)(m_posInput->ValueAsFraction() * (double)(m_maxVal - m_offVal));
			if (m_negInput != NULL) value -= (int)(m_negInput->ValueAsFraction() * (double)(m_offVal - m_minVal));
		}
		else
		{
			value = m_offVal;
			if (m_posInput != NULL) value -= (int)(m_posInput->ValueAsFraction() * (double)(m_offVal - m_maxVal));
			if (m_negInput != NULL) value += (int)(m_negInput->ValueAsFraction() * (double)(m_minVal - m_offVal));
		}
	}
	else if (m_source != NULL && m_source->GetValueAsAnalog(intValue, m_minVal, m_offVal, m_maxVal))
		value = intValue;
	else
		value = m_offVal;
}

Instead of summing the contributions of both, the positive and negative inputs should both modify an underlying shared value, and that value should simply be returned. Instead of the following (Inputs.cpp):

CAnalogInput *gun1Left  = AddAnalogInput("GunLeft",  "P1 Gun Left",  Game::INPUT_GUN1, "NONE");
CAnalogInput *gun1Right = AddAnalogInput("GunRight", "P1 Gun Right", Game::INPUT_GUN1, "NONE");

We should have something like:

CAnalogInputValue *gun1XAxisValue = std::make_shared<CAnalogInputValue>();
CAnalogInput *gun1Left  = AddAnalogInput(gun1XAxisValue, "GunLeft",  "P1 Gun Left",  Game::INPUT_GUN1, "NONE");
CAnalogInput *gun1Right = AddAnalogInput(gun1XAxisValue, "GunRight", "P1 Gun Right", Game::INPUT_GUN1, "NONE");

I don't think that the value in Poll() should be incremented/decremented but simply obtained directly and then scaled accordingly in the range [m_minVal, m_offVal],[m_offVal,m_maxVal] (note the axis can be asymmetric). Lastly, HasValue() cannot simply check whether the underlying value != 0. Possibly, the positive/negative inputs can produce a single offset. That way, HasValue() can remain as is and when false indicates there is no offset to apply from digital inputs and that the axis input can be checked directly.

[Feature Request] Allow to map gamepad buttons to emulator function keys

It would be really handy to add the possibility to map gamepad buttons or button combinations to emulator function keys (e.g.: exit emulator).
When running supermodel on dedicated gaming platforms (Steam Deck, RetroPie, etc.) where the main if not the only interface between the user and the system is just a gamepad it can be really useful to be able to access some emulator functions using just that.

Probably the best approach would be to be able to define a "special button" (e.g.: mode button) in the gamepad that when pressed in combination with other buttons (start, select, etc.) can trigger different actions like Exit, Pause, Reset, etc.

Thanks!

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.