Git Product home page Git Product logo

osrsbot's Introduction

OSRSBot

An automation API for Old School RuneScape

OSRSBot automating the RuneLite client

OSRSBot automating the RuneLite client


If you are interested in writing scripts go to the script template

  • If you ask nicely and with meaningful details about your problem you may get some help.

Community

What is OSRSBot?

OSRSBot is an API designed to aid in automating the gameplay of Old School RuneScape using RuneLite's third party client.

RuneLite?

RuneLite is an open-source API that seeks to enable a player to make quality of life improvements directly contradictory to the original goal outlined during the creation of Old School RuneScape. Sure, games evolve, but when you have a plugin that tells you exactly where to click during a quest then your claims to taking steps to prevent or reduce the ease of botting are misplaced. Removing the deobfuscator months after it was publicly available and forked led to the creation of OpenOSRS which hosted all the even shadier plugins that even RuneLite didn't approve.

How RuneLite is used

Really, RuneLite only introduces more means to exploit the underlying game just by existing and having a sizable contributor count. Using RuneLite to handle the client interaction code directly we avoid having to take the workload of having to update our repository in respect to a game update. This means more time can be spent focusing on building out the API functionality to aid script makers instead of ensuring unrelated systems remain relevant.

Using the Client

Set up

So, if you're a script user reading this then you can click here to download the latest jar file. To run this file you'll need an installation of JDK 17 which can be obtained by clicking that link and downloading the version that matches your operating system. If you need help just jump into the community server and ask. Alternatively, you can install it through IntelliJ IDEA by hitting File -> Project Structure -> Project -> Project SDK and selecting the JDK version you want to use (or adding it).

Building

To build make sure to use the Gradle build tasks to build the classes or the jar task to build the jar.

Installing a script

To install a .jar script, put it in the following folder:

Windows: C:\Users\[username]\OsrsBot\Scripts\Precompiled
Linux: /home/[username]/.config/OsrsBot/Scripts/Precompiled
MacOS: /Users/[username]/Library/Application Support/OsrsBot/Scripts/Precompiled

Running a script

You can then run the client by clicking the jar file twice (or from command-line if you choose) and waiting for RuneLite to initialize. After RuneLite has loaded you can hit our icon visible on the sidebar and open the interface. From here you can add accounts to a secure file storage system on your machine (stored in the location you executed the jar) and after adding the login details swap to the script panel and execute your script by clicking it to highlight it and then selecting the start button. You're good to go now! Stopping the script can be done by closing the client or by selecting stop or pause.

Using the API

Most of the time as a script developer you won't really need to mess with the API directly beyond maybe a fork and fixing a widgetID. That said if you need to test certain changes and behaviors feel free to ask for help.

Building Scripts

For the general populace though it isn't necessary, and you can simply refer to First Script Set Up You can follow the instructions there to get a feel for how to proceed in using the APIs in OSRSB to build automation tools for Old School RuneScape.

Wiki Links

If you do plan on operating within the API some quick wiki pages to look over are:

  1. Setting up the project
  2. Developing a script in the API environment
  3. Script Creation and Logic

Running the API

To run you'll need to modify your program arguments to the following depending on how you wish it to run:

--bot-runelite This runs the API, it uses the RuneLite interface

--ea This enables assertions, it should never be used with bot mode. It does need to be enabled for base RuneLite to use --developer-mode

--developer-mode Enables the developer features in RuneLite stock and RuneLite API modes.

VM args: -debug Activates debug log messages

After entering the program arguments you wish to enable (one mode only --runelite OR--bot-runelite) it is ready to run.

Building

The project uses Gradle so to build a jar just click on the Gradle task in the Gradle menu.

Changing the API used in your script environment

If you're developing in your script environment, and you decide you wish to make changes to the API it is fairly manageable. Script jars are not intended to be runnable (even if they're able to be). They're really just a zip file for the API to load. If the script is compiled without dependencies and only using the module compiled (script classes only) then you really only need to worry about directing the gradle.build to your local file system directory containing OSRSBot.

Simple

Adjusting a built output (class files not a jar) where they are in the Source folder in GService means that updates to the API are directly visible in your scripts on relaunching the application. I'd recommend using this option and have configured it to default to this behavior because it is far easier. (Personally I just keep multiple windows of IntelliJ. One for each project. You could likely set up the script environment to be a module within the opened project).

Advanced

Additionally, OSRSBot does enable a hacky in-environment test script folder that will compile on runtime of the API without any extra effort from you. Refer to the Wiki Links second bulletin. If you find yourself constantly changing the OSRSBot API and testing your script then you might want to look into that.

Dependencies

So as any Java project might this one utilizes a few dependencies and as listed they are:

  1. RuneLite
    • API is built to operate on top of RuneLite
  2. javassist
    • Used loosely in anti-cheat precautions involving the use of instrumentation
  3. NaturalMouseMotion
    • Used for making humanized mouse movements easier to implement
  4. junit
    • Used for making unit tests
  5. slf4j
    • Used for handling logging within the API
  6. jOpt Simple
    • Used for easing the parsing of command-line arguments

Contributing

Currently, I welcome any developer to join the few of us at our community discord for more direct conversation, but opening issues is absolutely fine if they use the templates provided (or are reasonably made).

osrsbot's People

Contributors

2-147-483-647 avatar bia10 avatar blaster23 avatar dginovker avatar electric-lemonade avatar fire-swan avatar gigiaj avatar hardenjt avatar jessicasachs avatar lucid-soft avatar lukaswozniak avatar myzsqn avatar noobik23121 avatar nubebuster avatar phargob avatar phobichd avatar raverydavis avatar rscorpx avatar s0ykaf avatar setrin avatar smeyerhot avatar stonebank avatar willkopec avatar zebdo 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

osrsbot's Issues

[FEATURE] Launch from Command Line

Describe the solution you'd like
Ability to launch bots from command line

Additional context
This would enable faster launching and more efficient automation.

[FEATURE] Script Creation

Is your feature request related to a problem? Please describe.
Currently scripts are a pain to create and test without using --bot-runelite as the program argument and testing in the RuneLiteTestFeatures class.
#25 is an obvious sign of this.

Describe the solution you'd like
A more streamlined method to create scripts for the bot. Probably a wiki page explaining the process to create scripts in this new manner for clarity.

Describe alternatives you've considered
It could probably be done with two projects being opened and having the script creation project be a dependency, but in intelliJ and interacting with RuneLite it could prove problematic to implement in a manner that is intuitive.

[BUG] Multiple bot instances start to bug the GUI out

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
When opening multiple bot instances will render one of them black and unable to be interacted with.

To Reproduce
Steps to reproduce the behavior:

  1. Open bot application
  2. Click File and then new bot
  3. Click the new bot instance

Expected behavior
It should load normally and be visible like the previous bot instance

Screenshots
image

Desktop (please complete the following information):

  • OS: [e.g. iOS]

[REVIEW] Increase low value sleeps

When thread sleeps are left low in the api they can cause inconsistencies if lag occurs or they simply try acting before a transition has occurred.

[FEATURE] IP masking

Currently each individual client is not masked at all, so the end result would look like us running fifty clients on one computer. If possible we need to develop a method to mask IP addresses. In the past I've managed to add run parameters to the shortcuts and programs to manipulate them into connecting to a proxy server. I'll look into incorporating a past solution similar to this or coding up a method to allow the connection between each client and Jagex' servers to be route-able through a proxy service.

[BUG] Debug functions

The bot debug classes all fail to work correctly. Likely requiring the client panel and such to be drawn and assigned appropriately.

Replace getMenuX function and repair getMenuY

In methods.menu getMenuX is reflectively gotten, alternatively we'd like to get this value via calculations to remove our need for reflection. As for getMenuY it just needs some refinement as it works fairly well.

[FEATURE] GUI Missing Icons

Is your feature request related to a problem? Please describe.
The GUI is currently missing icons and it makes the entire application look really bad.
Describe the solution you'd like
Adding icons to match each gui function.

[QUESTION]Program arguments are "not a recognized option"

Based off the readme:
--bot-runelite or --runelite should be commands used in Program arguments however both provide me with error:

"Exception in thread "main" joptsimple.UnrecognizedOptionException: runelite is not a recognized option"

It should be noted when using default commands like: --debug --developer-mode and removing the bot-runelite/runlite commands it launches without any issues.

I am adding these arguments to the RuneLite.main() file in the client folder, I have also tried the RuneLite.main() in the rsb ->botLauncher folder with the same results.

Any ideas what I'm doing wrong?
image

[FEATURE] Camera movement with mouse

Allow the camera to turn and contort using the mouse or keyboard (allow the decision to be saved as a setting in the login files) This will prevent our bots from having similar move patterns.

[BUG] Love the project; having an issue with canvas logged in.

https://i.gyazo.com/ee7aaf8ae1165ab21d51a49152b617e2.mp4

If I switch the script to the test script

https://i.gyazo.com/d92f15046cbea11fed113e1ab3dbe0be.mp4

It's something to do with the canvas class; if I find a fix I will post here

**Unofficial Fix - Works for me

Replace your BotHooks#draw method with mine**

@Override
public void draw(MainBufferProvider mainBufferProvider, Graphics graphics, int x, int y) {
    try {


        //Preferably initialize the value of bot with the current bot on screen
       // IE Application.getBot or similar manner.



        if (graphics == null) {
            return;
        }
        // We only want do do this once because this would MASSIVELY affect performance.


        /*
        if (SUPERCLASS_MAP.get(SUPERCLASS_MAP.keySet().iterator().next()) == null) {

            for (Method method : this.getClass().getSuperclass().getDeclaredMethods()) {
                Iterator itr = SUPERCLASS_MAP.keySet().iterator();
                while (itr.hasNext()) {
                    String name = (String) itr.next();
                    if (method.getName().equals(name)) {
                        method.setAccessible(true);
                        SUPERCLASS_MAP.replace(name, null, method);
                    }
                }
            }
            for (Field field : this.getClass().getSuperclass().getDeclaredFields()) {
                Iterator itr = SUPERCLASS_MAP.keySet().iterator();
                while (itr.hasNext()) {
                    String name = (String) itr.next();
                    if (field.getName().equals(name)) {
                        field.setAccessible(true);
                        SUPERCLASS_MAP.replace(name, null, field);
                    }
                }
            }
        }*/

        //We then simply invoke the method as needed here. It should perform similar to how it does in RuneLite
        //final Graphics2D graphics2d = (Graphics2D) ((Method) SUPERCLASS_MAP.get(GETGRAPHICS)).invoke(this,
         //       mainBufferProvider);

        Image image = mainBufferProvider.getImage();
        // finalImage is backed by the client buffer which will change soon. make a copy
        // so that callbacks can safely use it later from threads.
        drawManager.processDrawComplete(() -> copy(image));

        final Graphics2D g2d = (Graphics2D) bot.getCanvas().getGraphics(bot, mainBufferProvider);

        // Draw the image onto the game canvas
        //graphics.drawImage(image, 0, 0, bot.getCanvas());

        g2d.drawImage(image, 0, 0, bot.getCanvas());


    } catch (Exception e) {
        e.printStackTrace();
        //log.warn("Bot hooks failed to paint properly");
    }
}

[BUG] CheckSelectedItem

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
Currently, the method for getting the selected item in the inventory doesn't appear to return anything besides null.

To Reproduce
Steps to reproduce the behavior:

  1. Simply try using the method and watch the return

Expected behavior
It should properly be going through the image and checking the pixels to validate if the item is selected or not.

[BUG] Login Bot is unable to login after being logged out.

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
Login bot isn't able to log in after the bot is logged out.

To Reproduce

Expected behavior
Should be able to detect the screen it is at and then log back into the game.

[REVIEW] Clean-up Code

Code contains remnants of the massively overhauled code base used to create this. Most of it has been changed and should be updated to reflect said change.
Such changes would include updating comments, class descriptors, variable names, and removing remnant features that are no longer applicable or prepping them for a conversion.

[BUG] LoginBot is unintelligent

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
Because the LoginBot behaves in a dumb manner with literal waits it fails to load properly sometimes.

To Reproduce
Steps to reproduce the behavior:

  1. Run bot
  2. Run any script with an account set up

Expected behavior
It should log in perfectly every time.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]

Additional context
Preferably checking what screen we are on constantly and performing actions based on the screen similar to what we are currently doing.
Because this is a fairly vital component of testing it should be fixed relatively soon.

Menu bugs

#2 #8 Menu bugs are causing the inconsistencies and possible incorrect calculations. Currently if an item like say "chicken meat" is on the entry list and one is searching for entries containing examine and chicken. Instead of the chicken being examined 100% of the time, some results will be for the chicken meat.

[BUG] Possible TileObject Issues?

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
Supposedly interaction with non-game objects (ground, wall, ect) might not be handled correctly or that the way we go about retrieving objects could be invalid due to an assertion in OSRS client.

To Reproduce
Steps to reproduce the behavior:

  1. Attempt to access an object with any standard method
    (getNearest(StringName) or getAllAt(RSTile) ect)
  2. It should return a null or assert error.

Expected behavior
For the object array to return properly without fail.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Windows 10

Additional context
Found by @vuurman100

[FEATURE] Trade

Lacks any actual means of trading, simply a means to initiate the trade.

Needs a method to verify what is being traded to it.
Doesn't need a means to trade items (inventory and doAction("Offer") ect, but should contain methods to interact with the trade items to remove them or update offers perhaps?

Not currently a priority as trading players isn't really needed at the moment.

[BUG] Mouse value isn't updated

If the user clicks it disrupts the mouse position as the user click isn't sent to the virtual mouse and can cause bugs when checking for entries that should be directly under the virtual mouse but aren't there leaving a null menuentry object instead.

Imitate RuneLite GUI

At a later time, it'd be even more optimal to emulate RuneLite's gui to look even less suspicious.

[BUG] Menu Doesn't Handle Resizable Math

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
Currently in resizable the math doesn't apply for it. The larger the viewport means the more entries can be listed.

[QUESTION]Anyway you could help?

I am trying to implent my own gui.

but i am really struggle how the botpanel/bothome are working with the client panel.
Could you help me with make it work? i know i could easy copy/paste most but try to learn something also.

Is there anyway to come in private contact with you? if you are willing to help.

Update Label System

Right now the labels only are applicable to bugs, but enhancements and such should also be applicable with the labels.

API is outdated

Currently the API is outdated and incompatible with RuneLite at the current moment.

Any plans

Do you have any plans on updating?

[BUG] IDs are broken

Describe the bug
Currently IDs for interfaces may be incorrect, and thus most features may be unusable

To Reproduce
Steps to reproduce the behavior:
Try any script, in --bot-runelite or --bot it should fail

Expected behavior
Literally the expected behavior of the bot

Desktop (please complete the following information):

  • Windows 10

Additional context
Ideally updating the IDs would be beneficial and additionally creating a wiki page entry detailing how to do so would benefit anyone wishing to add features.

[BUG] setAngle interference

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
When setAngle is interrupted it stays in the while loop indefinitely as it is never notified that it isn't turning anymore.

To Reproduce
Steps to reproduce the behavior:

  1. Run a script that utilizes the setAngle method
  2. Proceed to supply user input to stop it from moving
  3. Watch as the bot proceeds to sit indefinitely in an inescapable while loop
  4. See error

Expected behavior
Adjusts to handle this interruption

Desktop (please complete the following information):

  • OS: Windows 10

[CHANGE] API will undergo large changes

Currently, the API uses a poor GUI to display the client and such.
This has introduced a number of issues that could simply be done away with if re-written as well as provide far more functionality.

This will likely take a bit of time (a week or more), but I'll be pushing changes to the wip branch while that takes place.

[BUG] Scripts failing to execute on first run

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
Scripts currently aren't executing any code written in them or the getBot function is returning null values.

To Reproduce
Steps to reproduce the behavior:

  1. Create any script with code to be executed.
  2. Watch it fail to do anything.

Expected behavior
It should execute the code. Additionally, at the moment I am uncertain if the issue lies in the scripts themselves or elsewhere

Screenshots
If applicable, add screenshots to help explain your problem.
image

Desktop (please complete the following information):

  • OS: [e.g. iOS]

Additional context
Found while attempting to fix #1
Scripts appear to not be able to interact with any given object after getBot() which results in virtually everything written in them failing to run.

[BUG] Walking module

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
The walking module is mostly dysfunctional. For most purposes, it will not run.
This is because the prediction tree and every method involved with it are very much broken since they use collision flags which RuneLite prevents us from using to prevent abuse.

To Reproduce
Steps to reproduce the behavior:
Use any method in the module.

Expected behavior
The module should function.

Additional context
I've already re-created a collision map and I'll begin working on making a maze solver (effectively what a pather is)

[FEATURE] Automated Muling

Need to create a way for the bots to transfer gold/resources to a mule account for it to store wealth.

Duplicate menu entries

Menu entries might be incorrect or not corresponding to the appropriate NPC and can cause inconsistencies and misclicking. #2 might also be related to this behavior.

[BUG] GService Folder doesn't fill itself

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
GService is blank on creation. This leaves a very ambiguous situation for any script user.
Additionally without the pre-created folders a user won't know where to put scripts.
To Reproduce
Steps to reproduce the behavior:

  1. Start the bot
  2. Check home_dir\G Service\

Expected behavior
It should auto-generate folders named Scripts, Settings, Logs, Cache
and inside Scripts it should auto-generate folders Precompiled and Source

Screenshots
If applicable, add screenshots to help explain your problem.
image

Desktop (please complete the following information):

  • OS: [e.g. iOS]

[BUG] Clan Chat Tab may be broken

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
It appears as if RuneLite (and likely OSRS) has removed the clan chat tab and other in-game occurrences of clan stuff. So it is very likely the API won't compile currently as we use references to the RuneLite usages.

Expected behavior
The API compiles and executes properly. All references that are invalid need to be removed.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]

Additional context
Add any other context about the problem here.

[BUG] Models with two renderables aren't handled

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
Models that contain two renderables will currently never interact with the second renderable
IE WallObjects

Expected behavior
They should be added to the model in some manner so we can interact with that renderable.

Additional context
First noticed here, and fixed most of the model issues. This one won't stop the api from functioning. #48
#52 fixed the api so at least one renderable for any object was used. This prevented nulls. That said we should create a separate object model class for objects with two renderables or something and see if the getModel can incorporate both renderables.

[BUG] TurnTo doesn't get entities into vision enough to be practical

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
Currently the turnTo method can turn you to an entity, but leave it just far enough out of vision to not consistently be able to click the model despite it technically being within vision.

To Reproduce
Steps to reproduce the behavior:
For example

  1. Go to Grand Exchange
  2. Position yourself like in the image
  3. Ensure the script is attempting to interact with the Grand Exchange Clerk
  4. Watch the API struggle to click on them.

Expected behavior
It should preferably turn to the entity to have more of them in the screen.

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows 10

Additional context
Somewhat related to #17 and #6

[FEATURE] Mouse Movements

Is your feature request related to a problem? Please describe.
Currently, the mouse movements are rudimentary. They lack any real depth in functionality and are probably a big cause of bans.

Describe the solution you'd like
The addition of a humanized mouse movement would be imperative. Ideally, a library likely exists that has utilized a neural net
to analyze data and generate humanized mouse movements. I'd like this to be added.

Describe alternatives you've considered
Obviously, removing the mouse, in general, could work. Perhaps simulating a touch screen. I'd like to add this too.

[BUG] Ignored Exceptions may cause freezes

BEFORE REPORTING
Ensure RuneLite is up to date in IDE and you are using the latest version of the master branch

Describe the bug
Throughout use, the ignored exceptions may result in a freeze or crash

To Reproduce
Hard to reproduce

Expected behavior
No random freezing

Desktop (please complete the following information):
Windows 10

[FEATURE] Touch Screen Emulation

Is your feature request related to a problem? Please describe.
While a mobile bot is out of the question at the moment, simulating touch screens is not.

Describe the solution you'd like
Determine if it is possible to send touch screen like behavior to the game.

[BUG] Small models

When attempting to click on small models it's not uncommon for the bot api to mis-click the model in question

Turn to

NPC.turnTo() and likely methods.camera.turnTo() are broken and result in an infinite loop causing complete lack of functionality.

[REVIEW] Line of Sight

Currently we can confirm if something is on screen, but not if we have line of sight of it. We need to likely rework some interactions or add in a check to verify that the object we are attempting to see and interact with is visible to the player. (To prevent clicking through walls or similar consistently)

[FEATURE] Improve GroundItem getAll()

Is your feature request related to a problem? Please describe.
Currently the ground item will throw an error likely if it can't render the default value being passed.
Was 52, but I'm trying to figure out the render distance

Describe the solution you'd like
A constant or variable that changes based on the client render distance. That way we know how many tiles away we ever render at one time.

Additional context
Add any other context or screenshots about the feature request here.

[FEATURE] Multi computer optimization

Set up a network drive between the computers you run the bot off of and store the login state so the computers can run synchronously without overlapping.

[BUG] Account Manager

The account manager doesn't save passwords without making a second account and then hitting done.

[QUESTION] Orientation weirdness

Propose your question
Orientation is listed in numerous places and some are conflicting information.
I doubt the API implementation is wrong, but clarification would be useful.

I'm going under the impression that the one listing 0 as north is possibly outdated/incorrect. A quick search clarifies the wall one (albeit mildly weird).

image
image
image

[BUG] getPointOnScreen

The manner in which the bot api gets a point of a model lacks any actual randomization as it'll return on the first match it finds. While this is probably to avoid going through the entire array it means that we're going to consistently hit those early values and never hit the later ones.
Additionally the function returns a value even if there is no point on the screen.

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.