GithubHelp home page GithubHelp logo

raceintospace / raceintospace Goto Github PK

View Code? Open in Web Editor NEW
163.0 21.0 45.0 76.32 MB

This is the GitHub home of Race Into Space, the computer version of the Liftoff! board game by Fritz Bronner. It was developed by Strategic Visions and published by Interplay as a disk-based game in 1993 and a CD-ROM in 1994. It was open-sourced in 2005 and a number of improvements have been made over the original.

License: GNU General Public License v2.0

Shell 0.30% C++ 88.61% C 8.25% Objective-C 0.37% Perl 0.17% CMake 2.28% 1C Enterprise 0.01%
lunar lunar-lander moon probe race satellite space

raceintospace's Introduction

Race into Space Build Status

Race into Space is the free software version of Interplay's Buzz Aldrin's Race into Space. This is the reworked version following the source release for the computer version of the Liftoff! board game by Fritz Bronner. The original was developed by Strategic Visions and published by Interplay as a disk-based game in 1992 and a CD-ROM in 1994.

The most recent stable releases are available from SourceForge. There is a more recent (interim) 1.2 release on Flatpak (which shows as 2.0), https://flathub.org/apps/details/org.raceintospace.Raceintospace. More recent yet is the 2.0 beta available here at https://github.com/raceintospace/raceintospace/releases/tag/v.2.0beta. The repository here contains a work-in-progress modernization of the game, so if you want to run the very latest version, you will have to download and compile the source here.

We have made a number of improvements to the game, and are hoping to do a release soon. The changes made can be viewed in ChangeLog.md above.

License

Race Into Space is distributed under GNU General Public License (GPL) version 2. You can find the terms and conditions in file COPYING.

Contributing

We coordinate development through the GitHub issue tracker. Feel free to report bugs, discuss tasks, or pick up work there. If you want to make changes, please fork, edit, and send us a pull request.

There's a .git-hooks directory in the root. This contains a pre-commit hook that verifies code styling before accepting changes. You can add this to your local repository's .git/hooks/ directory like:

$ cd raceintospace
$ ln -s ../../.git-hooks/pre-commit .git/hooks/pre-commit

Pull requests that don't match the project code style are still likely to be accepted after manually formatting and amending your changeset. The formatting tool (astyle) is completely automated; please try to use it.

Building

You need CMake.

The build system automatically finds, downloads, and/or compiles:

  • SDL
  • Boost
  • zlib
  • libpng
  • jsoncpp
  • libogg
  • libvorbis
  • libtheora
  • libprotobuf / protoc

The specifics of which things come from where depend on your platform.

On UNIXy systems (including Mac OS X), you can build everything with:

$ git clone git://github.com/raceintospace/raceintospace.git
$ mkdir raceintospace-build; cd raceintospace-build
$ cmake ../raceintospace
$ make

To download a copy of the game, go to the folder where you want the raceintospace subfolder to go, and run:

git clone https://github.com/raceintospace/raceintospace

Linux

Debian/Ubuntu

We rely on the operating system to provide most of the dependencies. If you're on a Debian-based system, you can get everything with:

sudo apt-get install cmake libsdl1.2-dev libboost-dev libpng-dev \
    libjsoncpp-dev libogg-dev libvorbis-dev libtheora-dev \
    libprotobuf-dev protobuf-compiler

Or enter this all on one line:

sudo apt-get install cmake libsdl1.2-dev libboost-dev libpng-dev libjsoncpp-dev libogg-dev libvorbis-dev libtheora-dev libprotobuf-dev protobuf-compiler

If you don't already have git installed, you'll also have to run:

sudo apt install git

You may also need to run (especially if you get "No CMAKE_CXX_COMPILER could be found."):

sudo apt-get install build-essential

Fedora

If you are on a Fedora-based system, you can get everything with:

$ sudo dnf install cmake gcc-c++ SDL-devel protobuf-devel boost-devel \
    libogg-devel libvorbis-devel libtheora-devel jsoncpp-devel \
    physfs-devel libpng-devel

Music

Due to copyright concerns, the game's music has been placed in a nonfree repository. To add music to the game, run the following:

$ cd ~/ && git clone https://github.com/raceintospace/raceintospace-nonfree && cp -r ~/raceintospace-nonfree/data/audio/music/ ~/raceintospace/data/audio/ && cp -r ~/raceintospace-nonfree/data/midi/ ~/raceintospace/data/audio/

Build

To compile the game quickly you can run a series of commands in-line. This creates a folder where the compiled game will be installed. If you want it named something other than raceintospace-build, simply change the name. The last two commands also run the game automatically.

mkdir raceintospace-build && cd raceintospace-build && cmake -DCMAKE_BUILD_TYPE=Debug ../raceintospace && make run

Or: mkdir raceintospace-build && cd raceintospace-build && cmake ../raceintospace && make && sudo make install && cd src/game && ./raceintospace

Once built, you can automatically delete the -build folder and recompile by entering this (assuming raceintospace and raceintospace-build are on the root of your home folder):

cd ~/ && sudo mkdir raceintospace-build && cd raceintospace-build && cmake ../raceintospace && make && sudo make install && cd src/game && ./raceintospace

Used to be:

cd ~/ && sudo rm -rf ~/raceintospace-build && mkdir raceintospace-build && cd raceintospace-build && cmake -DCMAKE_BUILD_TYPE=Debug ../raceintospace && make && sudo make install && cd src/game && ./raceintospace

After the first build, you can download the latest version of the source with:

cd ~/ && sudo rm -r raceintospace && git clone https://github.com/raceintospace/raceintospace

Then delete raceintospace-build and recompile:

cd ~/ && sudo rm -r raceintospace-build && mkdir raceintospace-build && cd raceintospace-build && cmake ../raceintospace && make && sudo make install && cd src/game && ./raceintospace

You can run these commands separately, or just run the ones you need (for instance, if you already have the folder you want the game installed to, there's of course no need to create it.

mkdir raceintospace-build
cd raceintospace-build
cmake -DCMAKE_BUILD_TYPE=Debug ../raceintospace
make run

Mac OS X

You need CMake, which is readily obtained from Homebrew, which you probably have anyway. Homebrew also has a nice Boost package that doesn't cause any runtime linkage issues, so install that along with SDL:

$ brew install cmake boost sdl

CMake automatically handles the other dependencies using the stuff in lib/. Mac OS X sometimes includes libpng, and sometimes it doesn't, so we build our own. We do, however, rely on the platform-provided zlib.

You might want to use Xcode for development. CMake can generate an Xcode project file:

$ git clone git://github.com/raceintospace/raceintospace.git
$ rm -r raceintospace-build; cd raceintospace-build
$ cmake -G Xcode ../raceintospace
$ open raceintospace.xcodeproj

Windows

NOTE: The game may not successfully compile in Windows. See Issues #498, #128, #57 for details.

If the instructions below don't work, you may have to install Ubuntu (or one of its variants) in a VM, such as in Oracle VirtualBox, then follow the Debian/Ubuntu instructions above. Be sure to enable the VM's access to the host computer's network connection: in VirtualBox this setting is called "Bridged Adapter"; in Hyper-V it's "Default Virtual Switch".

Ingredients:

From here, use CMake-GUI or the command-line CMake to generate Visual Studio project files. Literally every dependency will be downloaded and compiled automatically.

For example (assuming code cloned in to c:\raceintospace):

# Change to "c:\"
md raceintospace-build
cd raceintospace-build
cmake ..\raceintospace
  • Start Visual Studio by opening "raceintospace.sln".
  • Right-click "ALL_BUILD" and choose "Build" (Everything will download and install)
  • Right-click on "Race Into Space" and choose "Set as startup project"
  • Right-click on "Race Into Space" and choose "Properties"
  • Open "Configuration Properties" and choose "Output Directory" and set it to the path for "raceintospace-build\local\bin"
  • Click on "Debugging" and edit "Environment". Add: BARIS_DATA=[path to raceintospace\data] BARIS_SAVE=.\save Click "run"

raceintospace's People

Contributors

artforz avatar bmoscon avatar cleric-k avatar gnarledbeach avatar hweimer avatar joequant avatar kiyote avatar laenion avatar mkmccarty avatar pemensik avatar peyre avatar rnyoakum avatar ryandesign avatar sundhaug92 avatar tdi avatar tusharpm avatar willglynn 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

raceintospace's Issues

Build libogg from lib/ if needed

Linux users can and should require libogg-dev for developers and libogg for users, but Windows and OS X targets should automatically download and compile libogg as part of the build process, similar to JsonCPP (ebd6f5b).

Create screen abstraction

Right now, the code does a few icky things:

  • Writes to screen and pal buffers to access the display
  • Reads from key to access the keyboard
  • Reads from x, y, and mousebuttons to access the mouse
  • Calls music/sound related functions to produce audio
  • Sits in a loop, maintaining state on the stack, blocking until input arrives

I'm thinking we should break all that out into a "screen" abstraction to provide access to a screen-specific drawing surface, as well as key presses/mouse input/timers delivered by an event loop. We would then update the existing graphics/av_* methods to reference a LegacyScreen so as to avoid breaking everything all at once. I'm thinking LegacyScreen would handle the current screen and pal buffers, while Screens in general would work in terms of RGBA surfaces.

Screens would live in a stack where the topmost screen gets exclusive access to the underlying SDL resources. Pushing a screen would give you a blank canvas in which to operate -- none of the implicit palette inheritance we have now. Popping the screen (e.g. when the recruit astronauts screen is complete) would automatically restore the previous screen's state -- both graphics and audio -- as well as resume the previous screen's message pump.

Remove EVENT.TMP, REPLAY.DAT & ENDTURN.TMP files.

Due to the original DOS memory constraints there were a few temporary files written to disk to bookmark player turns, replay data and event card usage.

At the end of every turn RIS creates the ENDTURN.TMP file from player data and pulling in the saved REPLAY.TMP & EVENT.TMP files to bookmark where the player was at the end of a game season. During the next turn when a game is saved this ENDTURN.TMP is converted to the save game. This was done so we didn't worry about partial turns when saving games.

These can all be kept in memory now, with the possibility of saving the state of every turn so you can back up if necessary and keep an entire save history.

Code is extremely ugly

It should be made prettier. We should:

  • pull things out of the global scope
  • de-mangle functions and clarify their internals
  • refactor methods to increase purity
  • give data elements sensible names
  • push #pragma pack down to the definitions that need them
  • convert domain concepts into objects

This issue is a forever-ticket intended to consolidate discussion of this general task.

Add in-game tutorial

The game mechanics are not at all clear to new players. We should have some type of tutorial system, guiding a new player as follows:

  • establish the long-term goal: get to the moon
  • lay out the basic flow of the game and of what happens each turn
  • establish a short-term goal: launch a satellite
  • purchase a satellite and a rocket
  • R&D a satellite and a rocket
  • schedule the first mission
  • assemble the rocket
  • set a launch date
  • launch

Data_decoder not compilable on Windows Visual Studio

Not sure what this project does (exactly), but looks like it was built with a compiler specific directive that won't work on VS 2010.

attribute((packed))

Not sure what the VS equivalent is, but this needs to be either made compiler neutral, or #defined so that each compiler uses a different directive.

Remove CVS folders

From #133:

Also CVS folders should be removed, all is kept in git anyway.
src/os_win32/CVS
src/utils/CVS
src/utils/decrypt_sav/CVS

Asset licenses?

Are the assets for this game licensed the same way as the code, or differently?

Decouple save games from internal data structures

I'd really like to shuffle around the members of struct BuzzData, but I can't because the game assumes old save files conform to that structure layout. We could change the magic number every time we change the save game format, but that's a poor solution. So, let's talk about better solutions.

Protocol Buffers

Protocol Buffers were created to address this need to sanely version data structures.

  • Pro: it lets us be explicit about how data should now be laid out without forgetting about how it used to be structured
  • Pro: it cleanly separates the definition of an interchange data structure from the code that accesses it
  • Pro: it would be particularly appropriate for use over a network (play-by-mail/Internet multiplayer)
  • Con: it's another library

jsoncpp

Another option would be to use jsoncpp's coercion and default value support:

m_name = json_object["name"].asString();
m_female = json_object.get("female", false).asBool();
m_capsule = json_object.get("capsule", 0).asInt();
m_lunar = json_object.get("lunar", 0).asInt();
m_eva = json_object.get("eva", 0).asInt();
m_docking = json_object.get("docking", 0).asInt();
m_endurance = json_object.get("endurance", 0).asInt();
  • Pro: we already have jsoncpp
  • Con: we have to consciously worry about versioning in the code
  • Con: ...and we're going to get it wrong somewhere

Even if we pick Protocol Buffers for save games, it shouldn't replace jsoncpp for game data. Game data should be user-editable, and JSON wins there. Moreover, versioning is unimportant since we can to change both the game data and the code that reads it simultaneously. Save games live on-disk, and we're expecting saves to be written by one version and read by another.

Thoughts?

Use PhysicsFS

We now have PhysicsFS in the source tree (#28). We should throw away the grody stuff in src/game/fs.cpp and use PhysicsFS instead.

Move hardcoded bitmaps into images

DispChr() draws a bitmap font using a bunch of macros in a switch statement. Flag() and FlagSm() draw flags by setting individual pixels. We should dump these things to PNGs instead of embedding the images in code.

Mission hardware deleted when it shouldn't be

If a mission is canceled prior to ignition (e.g. last-second problem with the boosters), the rocket, capsule, etc. are deleted, but it seems like they should still be available for reuse.

Similarly, if part A of a Joint mission fails, part B won't be launched - but the game deletes the hardware anyway.

I imagine that hardware is deleted before the mission actually starts, on the assumption that the hardware will be used. Maybe we could fix it so that the game deletes hardware as it's used, or adds back hardware for missions that aren't actually flown.

Build libtheora from lib/ if needed

Linux users can and should require libtheora-dev for developers and libtheora for users, but Windows and OS X targets should automatically download and compile Theora as part of the build process, similar to JsonCPP (ebd6f5b).

Can't build executable on linux

The build works, but there doesn't seem to be an executable generated when building via linux.

If there is something missing, I can add it.

'Naut Roster

I've found another issue in the 'naut roster. What do I do with the updated data files? They all go in Gamedata.

Saving cause segmentation fault

Start game: BARIS_SAVE=/home/user/.raceintospace BARIS_DATA=/opt/ris/data gdb ./raceintospace

Press A, Press T (time capsule), Click save, give name, press enter -> Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.
0x4037d88c in fread () from /lib/libc.so.6
(gdb) bt
#0  0x4037d88c in fread () from /lib/libc.so.6
#1  0x00042de8 in FileAccess(char) ()
#2  0x0004078c in Admin(char) ()
#3  0x000f4758 in PortSel(char, char) ()
#4  0x000f3928 in Port(char) ()
#5  0x000f119c in Master(char) ()
#6  0x000a1d14 in MainLoop() ()
#7  0x000a0ad4 in game_main_impl(int, char**) ()
#8  0x000a0e5c in game_main ()
#9  0x00136e48 in main ()

admin.cpp, void FileAccess(char mode) - What does it do?

Sorry to open an issue for this. I'm trying to determine what the FileAccess method does with the vhptr buffer. It looks like it could be reading frames in from ENDTURN.TMP?

Does anyone know what the structure of these files are? Is this method just using the buffer as a convenient place to load data? Can I substitute another buffer?

Play-by-Email (PBEM) missing

Stumbled across this project today, and excitedly cloned it. Building was easy on my Fedora box.

I was looking forward to playing this game asynchronously with friends using the PBEM game mode, but I can't seem to find it.

Any idea where it is?

Get CMake working on Windows

CMake should Just Work™ on Windows.

Known issues:

  • Boost, SDL, libpng are external
  • os_win32 is totally disconnected from everything at the moment, meaning we don't actually build an executable
  • lib/Global.cmake doesn't test for Windows and set the appropriate flags
  • protobuf ships a vsprojects/config.h that should be used instead of a CMake-generated config.h
  • We blindly include unistd.h. We should probe for it instead.

[Wishlist] Tag releases on github

This is a wishlist like issue. It would be great that you tag releases on github. It would be great for Debian packaging and checking the newest version automatically with uscan (Debian dev tool).

Also it would be good for providing a get-import-orig target in debian/rules that automatically downloads the upstream source tarballs to Debian.

It will also help with consitency. Currently the tarball on the web page is not consistent with the git repo. With git tagging you could just point to tarballs from github on your web page.

Corrupt image when purchasing equipment

Start new game. Go right into R&D, visit purchasing, purchase the default unmanned craft. There appears to be a palette problem immediately upon selecting purchase.

RD_odd

Historical lunar landing crash

I get "re-entry corridor" leading to "orbital insertion", followed by another lunar landing sequence, followed by a crash in Launch():

for (i = 0; i < 1 + JOINT; i++) {
    /* XXX: was MANNED[i]+1, but why? */
    for (j = 0; j < MANNED[i]; j++) {
        if (MA[i][j].A) {
            if (FINAL >= 100) {
                MA[i][j].A->Mis = 1;    // Successful
            } else if (Data->P[plr].Other & 4) {
                MA[i][j].A->Mis = 2;    // Failure
            }
        }
    }
}

Everything seems successful, but it segfaults on the "Failure" branch here with i = 0, j = 9.

Backport changes from CVS

This repository diverged from the SourceForge CVS at or around V270. We should include ensure these changes survive here.

I've (crudely) mirrored the CVS repository as it stands today into raceintospace-cvs to make this easier. We don't want to pull commits straight from that repository, but at least now you don't need to leave git to compare. I believe this link contains all the changes.

Re-evaluate Vorbis + Theora

Do we still want to use Vorbis and Theora?

Windows and Mac OS X provide a platform media subsystem with e.g. AAC and H.264 decoding built-in. We could access that without creating any licensing concerns. This would increase our platform-dependence but decrease our runtime baggage. Does this make more sense than shipping Ogg codecs? What do we do on Linux?

Does not currently build on macOS

cmake files try and download protobuf from googlecode (its no longer hosted there, its on github). Updating the repo does not fix the issue, as it now fails to build with default macOS compiler:

      template is declared here
    class _LIBCPP_TEMPLATE_VIS basic_istream;
                               ^
/raceintospace-build/lib/protobuf-2.4.1/src/ext_protobuf/src/google/protobuf/message.cc:175:16: error: 
      implicit instantiation of undefined template
      'std::__1::basic_ostream<char, std::__1::char_traits<char> >'
  return output->good();
               ^
/Library/Developer/CommandLineTools/usr/include/c++/v1/iosfwd:111:32: note: 
      template is declared here
    class _LIBCPP_TEMPLATE_VIS basic_ostream;
                               ^

Corrupt graphics after End Turn dialog

Click on the flag to end the turn. When clicking on YES or NO the corruption will occur. When pressing YES it's a quick glitch before the redraw, pressing NO will do the same corruption showing an offset background buffer.

EndTurn

Fix liftoff.abz.SVC0.png

2596542 seems to have decoded all the hardware images inside liftoff.abz, but it didn't work for SVC0. It looks like a palette issue, but I really don't understand what's happening. Fix.

Rewrite SpotCrap()

This function has several problems:

  • I don't understand it
  • It uses a weird SPOTS.CDR file
  • It uses vhptr
  • There's a ton of magic numbers
  • clang says it can find a crash bug 27 steps deep, and while it might be wrong, I'm just not sure

Screen Shot 2013-01-29 at 10 23 36 AM

Build libvorbis from lib/ if needed

Linux users can and should require libvorbis-dev for developers and libvorbis for users, but Windows and OS X targets should automatically download and compile libvorbis as part of the build process, similar to JsonCPP (ebd6f5b).

Video files for N1 & UR-700 launches, and Lapot landings

This may be an obscure part of the whole project, but I thought I'd put it out there just in case.

Does anyone have any idea about the minishuttle video files? I know the game uses M2-F2, M2-F3, and HL-10 footage for both the US and Soviet shuttles because nothing was available for Lapot/Spiral back in 1992, but I have some actual Spiral footage that would be awesome to add to the game. Only thing is I don't know if the game just pulls up the same video files for both sides.

I notice there are two sets of minishuttle videos: 8 mild_xx.ogg and 10 mini_xx.og files. The mild ones seem to be mostly M2-Fx footage and the mini ones are mostly HL-10. Does anyone have any ideas (since we're looking at data files and all that) if the computer pulls up one set for the US and the other for the Soviets, or does it pull from both for both sides?

Set up Travis CI

Travis supports C++ projects. We could use it to verify that we can build on 32-bit Linux, even if we don't really have a test suite at the moment.

Externalize strings

Move inline strings into a string resource catalog which can be more easily localized.

Game does not build on Debian testing

When building src code from the web page (not git) for testing I get:

ld ...flags... -o raceintospace ...libs...
/usr/bin/ld: Warning: size of symbol `table' changed from 792 in news.o to 408 in //usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-5.0.so
/usr/bin/ld: news.o: undefined reference to symbol 'table'
//usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-5.0.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:98: recipe for target 'raceintospace' failed
make: *** [raceintospace] Error 1

gcc 4.8.2-4
libsdl 2.12
libogg 3.1
pulse 5.0

I think it is because pulseaudio also has a table exported.

Game uses crazy binary data files

Mostly these are images which have already been converted by the but2png utility, but for which the game still uses the original data files. Some of these actually contain data.

Crazy binary data is bad because it has endainness and structure packing issues. It also discourages modification. This issue is intended as a meta-issue to centralize discussion and track progress towards eliminating these files.

Give attention to display::Surface

This class feels dirty to me. I'd like to:

  • define display::Image and display::Surface, so I can reason about them and eliminate the overlap
  • hide SDL_Surface entirely within Surface -- make callers work with SDL surfaces via display::Surface
  • standardize on either copyTo or copyFrom, dropping the other direction

Maximum R&D not affected when safety level increased by event

I saw this sequence of events with the Atlas:

  • I had researched up to a safety level was at 75%
  • An event at the start of the turn informed me that the safety level had been increased by 17 points
  • The safety level of the Atlas was now at 92%; the maximum R&D was still at 87%

I would have expected that the maximum R&R would be increased to 92%. That season I flew a successful mission with the Atlas. The maximum R&D is now 88%; the safety factor is 93%.

Missing file "SENDH.MSG"

Warning:
src/game/fs.cpp:273:try_find_file can't find file `SENDH.MSG' in game data dir(s)

Referenced in:
./src/game/news.cpp:221: if ((gork = sOpen((Option == 0) ? "SENDR.MSG" : "SENDH.MSG", "rb", 0)) != NULL) {

(Seems that 'SENDR.MSG' is also missing)

Crash when changing opponent level

Based on the comment where the assert fails, some kind of palette hasn't been realized.

To reproduce:
Start a new game
Click the "Game Level" button on the right

Unify hardware drawing

The game currently uses three 320x200 images (stored in CIA.BUT and VAB.IMG) for different hardware sprites:

cia.but
vab.img.0
vab.img.1

There's hardcoded offsets all over, the images are difficult or impossible to change, and there's a lot of duplication. We should replace these with a class that represents a drawable type of hardware.

Change to event.dat

I'd like to make a change in event.dat, taking out a few words in one newscast. Can I make the change without issue, or is the game still uber-picky about character spacing and so on?

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.