Giter Site home page Giter Site logo

nicholas-ochoa / opensc2k Goto Github PK

View Code? Open in Web Editor NEW
4.9K 154.0 82.0 8.44 MB

OpenSC2K - An Open Source remake of Sim City 2000 by Maxis

License: GNU General Public License v3.0

HTML 1.45% JavaScript 56.72% CSS 0.67% TypeScript 41.16%
game remake simcity simcity-2000 sim city 2000 phaser3 phaser phaserjs

opensc2k's People

Contributors

dependabot[bot] avatar nicholas-ochoa 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  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

opensc2k's Issues

rage8885 does not exist

Yarn install fails to access rage8885/OpenSC2K because the repository does not exist. I tried switching rage8885/OpenSC2K to nicholas-ochoa/OpenSC2K in the package.json and it still did not work. Linux btw. Also, why do you ask us to git clone rage8885/OpenSC2K instead of nicholas-ochoa/OpenSC2K? As far as I can tell, rage8885/OpenSC2K does not exist, or it redirects to this github. What is going on here?

webpack it!

Hey!!! Sean from the webpack team! Would you take a PR if provided to bundle the assets on both main and renderer portions of this application?!

Pros: startup and render performance could be significantly faster!

Cons: have a build step?

I've been looking for a great case study for electron performance and app migration and I think this would be a great one.

Thanks!
Sean - webpack team

Map Generation

The base foundation of all maps is terrain generation - we need to talk about how we're going to implement this and whether we're going to attempt to replicate the original game's algorithm or if we're going to create one that simply comes close - we could also talk about providing different ways of generating terrain.

The most ideal scenario would be to provide all of these options - although it really depends on how far we want to extend the scope of the original game.

We can use OpenSimplex noise or Perlin Noise to generate a height map - generating water as a river/ocean/lakes could be done as part of the height map by simply setting a water level. I'm open to hearing about other ideas as well. Finally, plants - trees specifically, we'd have to decide on how we'd want to place them.

Once we've generated a map, we need to figure out how to save it somewhere - since we already know how to import maps, we'll need to essentially reverse this process and store it in files - there is also the option, of course, to create our own format, although keeping the files we generate consistent with the original game is probably the preferred option.

Switch to PhaserIO

Both use webgl and are considerably better than handling canvas directly.

electron-rebuild: The system cannot find the path specified. (Windows)

I did exactly what it's described here:

  1. git clone https://github.com/rage8885/OpenSC2K or download this repository
  2. cd OpenSC2K
  3. Windows: npm install --global --production windows-build-tools (as admin) installs Windows specific prerequisites
  4. npm install downloads and installs the dependancies
  5. Windows/Linux: node_modules/.bin/electron-rebuild -f -w better-sqlite3 rebuilds Electron with better-sqlite3 bindings
  6. npm start to run

But when I execute /node_modules/.bin/electron-rebuild -f -w better-sqlite3 on Windows 10 into a non-admin cmd (cmder), I have this result: The system cannot find the path specified..

image

I just get a brown window

Installed full xcode after warnings about commandline, did npm rebuild, npm start, still just gives me a big, brown window.

Port to web

is it possible to play it without electron?

Package "pngjs" refers to a non-existing file

Can imagine that the "pngjs": "file:C:/Users/Nicholas/Development/pngjs/", in package.json has some custom modifications, but it would be good to update to certain version so we don't have errors when trying to run the repo.

Hosted deployment

Hey, this repo is awesome. I managed to get it to run locally super easily, and then, just as easily, managed to deploy it to now. I threw up a deployment of the latest master up here:

https://simcity.now.sh/

And I think it could be awesome to keep this (or another deployment of this) up to date as changes are made so people can try it without having to run it locally. I'm happy to transfer ownership of (https://simcity.now.sh/) or take it down or help you build and maintain a deployment pipeline to have an active deployment of the game as you continue to build core features to this (obviously depends on how actively you're working on this project).

mac sierra cannot start because of better-sqlite3 install warning

[email protected] start /Users/xxxxx/workspace/OpenSC2K
electron .

2018-02-08 20:47:15.924 Electron Helper[24154:5630488] Couldn't set selectedTextBackgroundColor from default ()

SOLINK_MODULE(target) Release/better_sqlite3.node
clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of OS X 10.9 [-Wdeprecated]
CC(target) Release/obj.target/test_extension/deps/test_extension.o
SOLINK_MODULE(target) Release/test_extension.node
clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of OS X 10.9 [-Wdeprecated]

Data Storage: SQLite or alternative

...if you can have localForage with localStorage? Removing SQLite would also eliminate the native dependency which in turn will fix a bunch of issues here (cross-platform native compile issues).

LocalStorage in electron is limited to 10MB in size. But for game data it should never exceed that limit, no?

The tile/city data could be exported into JSON files and thus be lazy-loaded. Wouldn't imply a problematic performance impact, but simplify the architecture a lot.

Contributing

Are you looking for people to contribute to this? If so - it might make sense to start creating issues around features that need implementing and bugs that need fixing?

I'd love to contribute if possible :)

A couple of things that could do with implementing just from looking at screenshots:

  • GUI/HUD
  • Menu Screen

Assets

We could do with creating our own assets so we avoid any issues around copyright.

Doesn't work on Windows.

I saw this error on Electron Developer Tools
Uncaught Error: A dynamic link library (DLL) initialization routine failed. \\?\D:\OpenSC2K\node_modules\better-sqlite3\build\Release\better_sqlite3.node at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:172:20) at Object.Module._extensions..node (module.js:598:18) at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:172:20) at Module.load (module.js:503:32) at tryModuleLoad (module.js:466:12) at Function.Module._load (module.js:458:3) at Module.require (module.js:513:17) at require (internal/module.js:11:18) at bindings (D:\OpenSC2K\node_modules\bindings\bindings.js:81:44) at Object.<anonymous> (D:\OpenSC2K\node_modules\better-sqlite3\lib\database.js:4:40)

Main Menu

We should create a main menu with the following options to replicate what we see in SimCity when the game starts up.

The options should include:

  • Load Saved City
  • Start New City
  • Edit New Map
  • Load Scenario
  • Quit

Some of these options won't have implementations behind them yet, such as loading scenarios, although they could at least be created for now. It would be good to create a button component system here that can also be used for the GUI in game to keep everything consistent across the codebase.

After taking a look at the code I've noticed that we're missing some stuff, we'll need some form of game state management - it may be worth looking into using a game library of some sort so we don't have to implement that ourselves. I'd suggest Phaser. This would also help us to structure the code a bit better since currently it looks like there's a lot being handled in game.js

These are just the options from the original game, it may be worth adding other options - for example a 'Settings' option for selecting resolution/changing in-game volume, etc.

Another potential would be to set up some way for people to share maps that they've created, scenarios, assets, etc. See: OpenTTD. Would be good to allow for mods, etc.

Finally, it would be cool to see a multiplayer version of the game, not sure how far we want to move outside the scope but OpenTTD also allows for multiplayer online, it could be cool to see similar here.

How do we plan on implementing simulation?

Are we going to write approximate simulations where we observe the behaviour of the original game and attempt to emulate that, or are we going to try to use the same algorithms - if so, where are we going to get these from? Am I barking up the wrong tree completely?

Extract and utilize original game assets

  • Extract static tiles (LARGE.DAT)
  • Extract palette
  • Animated tiles (palette rotation)
  • Generate PNG tile maps from original game artwork
  • Small/Medium tiles (SMALLMED.DAT)
  • Game audio files (wav)
  • Game music (JS midi?)
  • Support multiple versions (Win95, DOS) and common install paths (Steam, GOG)
  • Game artwork (BMP to PNG conversion?)
  • Supplemental files from the game (text/strings, newspaper text)

Is this (at least planned to be) actively maintained?

Hi!

I wanted to try and play SC2K on my computer, but the old version doesn't run well under a modern OS. I looked to see if there are any open source engines and came across this. However, it seems to not have much progress (at least that's what the README.md file claims). Is this maintained somewhere else? If not, are there any plans to maintain this?

Thanks for your time!

This is awesome!

Wow, this is pretty awesome! Must have been a ton of work to do but it looks incredible!

Just dropping in to give you an 👏 🙇

The module '../better_sqlite3.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 59. This version of Node.js requires NODE_MODULE_VERSION 57.

getting this in the electron window when i run :(

Uncaught Error: The module '/Users/swyx/OpenSource/OpenSC2K/node_modules/better-sqlite3/build/Release/better_sqlite3.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 59. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:172:20)
    at Object.Module._extensions..node (module.js:598:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:172:20)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Module.require (module.js:513:17)

image

steps i have tried to do:

  • this to fix my xcode warnings when i npm install better-sqlite3: nodejs/node-gyp#569
  • this aka npm rebuild: #5

i am on a new mac with the latest whatevers. Any other ideas on what I can tryplease? thank you very much.

macOS: libtool: unrecognized option `-static'

Installation

abcdef:simcity2k neoneye$ git clone https://github.com/rage8885/OpenSC2K
Cloning into 'OpenSC2K'...
remote: Counting objects: 2172, done.
remote: Compressing objects: 100% (2056/2056), done.
remote: Total 2172 (delta 134), reused 2129 (delta 111), pack-reused 0
Receiving objects: 100% (2172/2172), 25.82 MiB | 4.40 MiB/s, done.
Resolving deltas: 100% (134/134), done.
abcdef:simcity2k neoneye$ cd OpenSC2K
abcdef:OpenSC2K neoneye$ npm install

> [email protected] install /Users/neoneye/git/simcity2k/OpenSC2K/node_modules/integer
> node tools/install

  CXX(target) Release/obj.target/integer/src/integer.o
  SOLINK_MODULE(target) Release/integer.node

> [email protected] install /Users/neoneye/git/simcity2k/OpenSC2K/node_modules/better-sqlite3
> node deps/install

==> cwd: /Users/neoneye/git/simcity2k/OpenSC2K/node_modules/better-sqlite3
==> /Users/neoneye/git/simcity2k/OpenSC2K/node_modules/lzz-gyp/lzz-compiled/osx -hx hpp -sx cpp -k BETTER_SQLITE3 -d -hl -sl -e ./src/better_sqlite3.lzz
==> cwd: /Users/neoneye/git/simcity2k/OpenSC2K/node_modules/better-sqlite3
==> node-gyp rebuild
  ACTION deps_sqlite3_gyp_action_before_build_target_unpack_sqlite_dep Release/obj/gen/sqlite-autoconf-3210000/sqlite3.c
  TOUCH Release/obj.target/deps/action_before_build.stamp
  CC(target) Release/obj.target/sqlite3/gen/sqlite-autoconf-3210000/sqlite3.o
  LIBTOOL-STATIC Release/sqlite3.a
libtool: unrecognized option `-static'
libtool: Try `libtool --help' for more information.
make: *** [Release/sqlite3.a] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:258:23)
gyp ERR! stack     at ChildProcess.emit (events.js:160:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:12)
gyp ERR! System Darwin 17.3.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/neoneye/git/simcity2k/OpenSC2K/node_modules/better-sqlite3
gyp ERR! node -v v9.4.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok 
Error: exit code 1
    at ChildProcess.<anonymous> (/Users/neoneye/git/simcity2k/OpenSC2K/node_modules/lzz-gyp/lib/exec.js:19:12)
    at ChildProcess.emit (events.js:160:13)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:12)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `node deps/install`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/neoneye/.npm/_logs/2018-02-10T12_52_39_039Z-debug.log

Environment

abcdef:OpenSC2K neoneye$ libtool --version
libtool (GNU libtool) 2.4.2
Written by Gordon Matzigkeit <[email protected]>, 1996

Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
abcdef:OpenSC2K neoneye$ npm --version
5.6.0
abcdef:OpenSC2K neoneye$ clang --version
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin17.3.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
abcdef:OpenSC2K neoneye$

Thank you for OpenSC2K

Cool project.

error [email protected]: The engine "node" is incompatible with this module. Expected version ">=5.10.0".

Hi,

On ubuntu 16.04, on "yarn install" command, I get this :

yarn install v1.6.0
warning You are using Node "4.2.6" which is not supported and may encounter bugs or unexpected behavior. Yarn supports the following semver range: "^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0"
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
info [email protected]: The engine "node" is incompatible with this module. Expected version ">=4.5".
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
error [email protected]: The engine "node" is incompatible with this module. Expected version ">=5.10.0".
error Found incompatible module
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

Anyone knows how to resolv this issue ?

`npm i` not working from mac

I'm trying to run a simple npm i and I'm getting this error message:

npm ERR! code EWINDOWSPATH
npm ERR! Can't install from windows path on a non-windows system: C:\Users\Nicholas\Development\pngjs\

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/olegmostepan/.npm/_logs/2021-03-14T10_31_38_206Z-debug.log

Couldn't set selectedTextBackgroundColor from default ()

Cloned, npm install, npm start

On macOS High Sierra

I get: 2018-02-07 13:18:13.574 Electron Helper[70006:6619075] Couldn't set selectedTextBackgroundColor from default ()

and in the Electron console.

Error: The module '/Users/byrdj5d/Sites/OpenSC2K/node_modules/better-sqlite3/build/Release/better_sqlite3.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 51. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:172:20)
    at Object.Module._extensions..node (module.js:598:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:172:20)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at bindings (/Users/byrdj5d/Sites/OpenSC2K/node_modules/bindings/bindings.js:81:44)
    at Object.<anonymous> (/Users/byrdj5d/Sites/OpenSC2K/node_modules/better-sqlite3/lib/database.js:4:40)

And I just get a blank brown screen

Keyboard events do not work in Windows build

I was able to get this built on Windows, with one prerequisite - installing the windows-build-tools node package as described in this SO answer: npm install --global --production windows-build-tools

After running this, npm install does work. Unfortunately though, npm start just produces a blank (brown background) window and does not respond to any keyboard events (e.g. "o" to open a map).

Switch to Sequelize or other ORM

I am currently working on issue #17, however, the issue is that it feels rather hacky to require the database file with the bundle, since it it needs to be build specific. In other words, the database needs to reside somewhere in the dist or build folder and does not need to be bundled with the build. The database needs to be created on startup. Am I correct in stating this or is there something I am missing?

Zooming

Needs Implementing

Please mark as a feature :)

I have an idea

Has anyone successfully established this project on the Windows 11 system? I am really at a loss. If so, please leave a message below this request and I will check your warehouse, which is from the year 2023

Fails to start on Linux due to better-sqlite3 compiled version mismatch

First of all, thank you for creating and open sourcing this! I used to love the original game, so this will be an awesome way to play from time to time and see the inner workings as well. 🥇

After npm install I removed the comment enabling mainWindow.webContents.openDevTools() in main.js and the issue is (I've tried npm rebuild like it suggested as well):

Uncaught Error: The module '/home/user/OS/OpenSC2K/node_modules/better-sqlite3/build/Release/better_sqlite3.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 59. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:172:20)
    at Object.Module._extensions..node (module.js:598:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:172:20)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at bindings (/home/user/OS/OpenSC2K/node_modules/bindings/bindings.js:81:44)
    at Object.<anonymous> (/home/user/OS/OpenSC2K/node_modules/better-sqlite3/lib/database.js:4:40)
node v9.5.0
npm v5.6.0

What about TypeScript?

Hey,

I know, it might sound a bit crazy, but what about using TypeScript to organize the code a bit better? I mean, classes, interfaces, decorators and also all the syntactic sugar for asynchronous code execution like async/await, arrow functions etc. -- could be very helpful for a project like this?

Best

Error at launch (in web console) (Using windows)

Here the error :
Uncaught Error: Une routine d'initialisation d'une bibliothèque de liens dynamiques (DLL) a échoué. \\?\C:\OpenSC2K\node_modules\better-sqlite3\build\Release\better_sqlite3.node at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:172:20) at Object.Module._extensions..node (module.js:598:18) at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:172:20) at Module.load (module.js:503:32) at tryModuleLoad (module.js:466:12) at Function.Module._load (module.js:458:3) at Module.require (module.js:513:17) at require (internal/module.js:11:18) at bindings (C:\OpenSC2K\node_modules\bindings\bindings.js:81:44) at Object.<anonymous> (C:\OpenSC2K\node_modules\better-sqlite3\lib\database.js:4:40)

This doesn't work anymore

The installation with yarn install/yarn dev is no longer working. This is both for master and typescript branch.

The master branch in a browser shows only black screen on the localhost:3000 with some errors in the console:

Failed to load resource: the server responded with a status of 404 (Not Found)
:3000/assets/import/LARGE.DAT:1 Failed to load resource: the server responded with a status of 404 (Not Found)
index.js:311 Uncaught TypeError: First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.
    at fromObject (index.js:311)
    at from (index.js:137)
    at Function.push../node_modules/buffer/index.js.Buffer.from (index.js:149)
    at new palette (palette.js:10)
    at LoaderPlugin.<anonymous> (world.js:26)
    at LoaderPlugin.emit (index.js:181)
    at LoaderPlugin.loadComplete (LoaderPlugin.js:900)
    at LoaderPlugin.fileProcessComplete (LoaderPlugin.js:883)
    at LoaderPlugin.nextFile (LoaderPlugin.js:827)
    at BinaryFile.onLoad (File.js:331)

The typescript branch has local hardcoded dependency pngjs (see issue #54). Even when setting this as latest it complains about node_modules/fsevents/fsevents.node file. This file can be cleaned up and the error disappears. However, then in a terminal I can see another error (node:7713) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open 'assets/import/PAL_MSTR.BMP' and Electron's starting page.

Can you please take a look into these issues and let us know?

OSX?

Will this run on OSX? Haven't tried yet, but I see Linux and Windows instructions on README

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.