Giter Site home page Giter Site logo

oraclestation / oraclestation Goto Github PK

View Code? Open in Web Editor NEW
19.0 16.0 100.0 946.61 MB

Repository for OracleStation SS13 project

Home Page: https://www.oraclestation.com/

License: GNU Affero General Public License v3.0

DM 93.22% CSS 0.30% JavaScript 0.39% HTML 3.60% Python 1.61% Shell 0.04% Batchfile 0.02% C# 0.22% C++ 0.08% PowerShell 0.01% Java 0.40% PHP 0.11%
ss13 space station 13 game tgstation

oraclestation's Introduction

Whoops!

It appears we have died! On the 8th of September 2018 Oracle Station has ceased to exist as a server and community. That said, this repository will stay up for as long as it can, for the sake of you people being able to port features from us or just have a good hearty laugh at how shitty our codebase was.

Enjoy.

OracleStation

Build Status

DOWNLOADING

There are a number of ways to download the source code. Some are described here, an alternative all-inclusive guide is also located at http://www.tgstation13.org/wiki/Downloading_the_source_code

Option 1: Follow this: http://www.tgstation13.org/wiki/Setting_up_git

Option 2: Download the source code as a zip by clicking here (note: this will use a lot of bandwidth if you wish to update and is a lot of hassle if you want to make any changes at all, so it's not recommended.)

INSTALLATION

First-time installation should be fairly straightforward. First, you'll need BYOND installed. You can get it from http://www.byond.com/. Once you've done that, extract the game files to wherever you want to keep them. This is a sourcecode-only release, so the next step is to compile the server files. Open tgstation.dme by double-clicking it, open the Build menu, and click compile. This'll take a little while, and if everything's done right you'll get a message like this:

saving tgstation.dmb (DEBUG mode)
tgstation.dmb - 0 errors, 0 warnings

If you see any errors or warnings, something has gone wrong - possibly a corrupt download or the files extracted wrong. If problems persist, ask for assistance on Discord

Once that's done, open up the config folder. You'll want to edit config.txt to set the probabilities for different gamemodes in Secret and to set your server location so that all your players don't get disconnected at the end of each round. It's recommended you don't turn on the gamemodes with probability 0, except Extended, as they have various issues and aren't currently being tested, so they may have unknown and bizarre bugs. Extended is essentially no mode, and isn't in the Secret rotation by default as it's just not very fun.

You'll also want to edit config/admins.txt to remove the default admins and add your own. "Game Master" is the highest level of access, and probably the one you'll want to use for now. You can set up your own ranks and find out more in config/admin_ranks.txt

The format is

byondkey = Rank

where the admin rank must be properly capitalised.

Finally, to start the server, run Dream Daemon and enter the path to your compiled tgstation.dmb file. Make sure to set the port to the one you specified in the config.txt, and set the Security box to 'Safe'. Then press GO and the server should start up and be ready to join. It is also recommended that you set up the SQL backend (see below).

UPDATING

To update an existing installation, first back up your /config and /data folders as these store your server configuration, player preferences and banlist.

Then, extract the new files (preferably into a clean directory, but updating in place should work fine), copy your /config and /data folders back into the new install, overwriting when prompted except if we've specified otherwise, and recompile the game. Once you start the server up again, you should be running the new version.

MAPS

Oraclestation currently comes equipped with five maps.

All maps have their own code file that is in the base of the _maps directory. Maps are loaded dynamically when the game starts. Follow this guideline when adding your own map, to your fork, for easy compatibility.

The map that will be loaded for the upcoming round is determined by reading data/next_map.json, which is a copy of the json files found in the _maps tree. If this file does not exist, the default map from config/maps.txt will be loaded. Failing that, tgstation2 will be loaded. If you want to set a specific map to load next round you can use the Change Map verb in game before restarting the server or copy a json from _maps to data/next_map.json before starting the server. Also, for debugging purposes, ticking a corresponding map's code file in Dream Maker will force that map to load every round.

If you are hosting a server, and want randomly picked maps to be played each round, you can enable map rotation in config.txt and then set the maps to be picked in the maps.txt file.

Anytime you want to make changes to a map it's imperative you use the Map Merging tools

AWAY MISSIONS

Oraclestation supports loading away missions however they are disabled by default.

Map files for away missions are located in the _maps/RandomZLevels directory. Each away mission includes it's own code definitions located in /code/modules/awaymissions/mission_code. These files must be included and compiled with the server beforehand otherwise the server will crash upon trying to load away missions that lack their code.

To enable an away mission open config/awaymissionconfig.txt and uncomment one of the .dmm lines by removing the #. If more than one away mission is uncommented then the away mission loader will randomly select one the enabled ones to load.

SQL SETUP

The SQL backend requires a MySQL server. SQL is required for the library, stats tracking, admin notes, and job-only bans, among other features, mostly related to server administration. Your server details go in /config/dbconfig.txt, and the SQL schema is in /SQL/tgstation_schema.sql and /SQL/tgstation_schema_prefix.sql depending on if you want table prefixes. More detailed setup instructions are located here: http://www.tgstation13.org/wiki/Downloading_the_source_code#Setting_up_the_database

IRC BOT SETUP

Included in the repository is a python3 compatible IRC bot capable of relaying adminhelps to a specified IRC channel/server, see the /tools/minibot folder for more

CONTRIBUTING

Please see CONTRIBUTING.md

LICENSE

All code after commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST is licensed under GNU AGPL v3.

All code before commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST is licensed under GNU GPL v3. (Including tools unless their readme specifies otherwise.)

See LICENSE-AGPLv3.txt and LICENSE-GPLv3.txt for more details.

tgui clientside is licensed as a subproject under the MIT license. Font Awesome font files, used by tgui, are licensed under the SIL Open Font License v1.1 tgui assets are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

See tgui/LICENSE.md for the MIT license. See tgui/assets/fonts/SIL-OFL-1.1-LICENSE.md for the SIL Open Font License.

All assets including icons and sound are under a Creative Commons 3.0 BY-SA license unless otherwise indicated.

All assets located in the sound\effects\mob_effects\goonstation and goon directory are under a Creative Commons 3.0 BY-NC-SA license. Assets created by Goonstation.

oraclestation's People

Contributors

anturk avatar aranclanos avatar changelingrain avatar cheridan avatar coiax avatar cyberboss avatar duncathan avatar firecage avatar giacom avatar gunhog avatar iamgoofball avatar ikarrus avatar imtakingabreakdontatme avatar incoming5643 avatar jordie0608 avatar korphaeron avatar lzimann avatar mrperson avatar mrstonedone avatar neersighted avatar optimumtact avatar phil235 avatar razharas avatar remierichards avatar robustin avatar silicons avatar steelpoint avatar tgstation-server avatar theoperand avatar tkdrg avatar

Stargazers

 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

oraclestation's Issues

Consoles record printing blank paper

While testing with a friend on a private server. I found that printing records (Security, Medical, or ID Console) would print a clear page, but when examine you can see that the paper is written with the person's record.

This is probably just a sprite issue.

Card Against Station Runtime

[22:43:01] Runtime in cas.dm,65: Cannot read "7 of Hearts".name
  usr: Janie Keener (guest444767161) (/mob/living/carbon/human)
  usr.loc: The floor (139,131,2) (/turf/open/floor/plasteel/vault)

EMP-Kit contains 5 EMP grenades, slight balance issue.

Simple one. On the hijack and kill 2 guys shift I had last night I bought carp and an EMP Kit. The implanter was in along with 5(!) emp grenades. Considering the price is 2 TC only the ammount of grenades should be lowered to 1 or maybe 2. 5 is pretty much overkill if you ask me. The implanter alone is worth 2 TC...

Runtime in npcpool.dm

[13:28:22] Runtime in npcpool.dm, line 50: Cannot read null.ckey
proc name: fire (/datum/controller/subsystem/npcpool/fire)
src: NPC Pool (/datum/controller/subsystem/npcpool)
call stack:
NPC Pool (/datum/controller/subsystem/npcpool): fire(1)
NPC Pool (/datum/controller/subsystem/npcpool): ignite(1)
Master (/datum/controller/master): RunQueue()
Master (/datum/controller/master): Loop()
Master (/datum/controller/master): StartProcessing(0)

Runtime in game.dm line 561

[13:58:10] Runtime in game.dm, line 561: Cannot execute null.return pressure().

proc name: lavaland equipment pressure check (/proc/lavaland_equipment_pressure_check)
src: null
call stack:
lavaland equipment pressure check(the floor (74,70,7) (/turf/open/floor/plasteel))
the plasma blast (/obj/item/projectile/plasma): Initialize(1)
Atoms (/datum/controller/subsystem/atoms): InitAtom(the plasma blast (/obj/item/projectile/plasma), /list (/list))
the plasma blast (/obj/item/projectile/plasma): New(1)
the plasma blast (/obj/item/projectile/plasma): New(the energy weapon lens (/obj/item/ammo_casing/energy/plasma))
the energy weapon lens (/obj/item/ammo_casing/energy/plasma): New(the plasma cutter (/obj/item/gun/energy/plasmacutter))
the plasma cutter (/obj/item/gun/energy/plasmacutter): update ammo types()
the plasma cutter (/obj/item/gun/energy/plasmacutter): Initialize(1)
Atoms (/datum/controller/subsystem/atoms): InitAtom(the plasma cutter (/obj/item/gun/energy/plasmacutter), /list (/list))
Atoms (/datum/controller/subsystem/atoms): InitializeAtoms(null)
Atoms (/datum/controller/subsystem/atoms): Initialize(466440)
Master (/datum/controller/master): Initialize(10, 0)

Syndicate uplink 'Random Item' shows cost of 0TC

Round ID: 35

Played as Cargo Tech syndicate agent. Used the PDA uplink and saw 'Random Item' showing cost of 0TC. It did not cost 0TC - I bought an emag and pizza bomb, then clicked the Random Item three times and did get three random items. Ran out of TC and couldn't order any more.

Cyborgs can drop bolts on depowered airlocks

Round ID 70.
Saw an emmaged borg dropping bolts on depowered airlocks. With no power the bolts couldnt be raised, essentially making them impassable objects. This was an issue when the escape shuttle hallway was bolted down, preventing anyway from getting on the shuttle save the two tators and the emmaged borg.

Goliath Tentacle Speed not adjusted

Alright current playtest, cant do anything. You have trouble dodging one goliath with tentalces if you dont have the timing straight. Try 3... impossible. Movement speed too low. Or tentacles too fast rather. Should have a delay just like Bubblegum and Ash Drake got.

LOOC issues with AI

LOOC doesn't seem to work for AI, not from eye or main mob.

What happens when attempted is: Nothing shows, you can use the verb, but after you type in what you want, it just disappears with nothing happening playerside.

After being carded the AI can LOOC in carded form.

Broken bones don't injure you if you're being dragged

Broken bones should injure you when dragged, not just when you move yourself.

The exception to this is with canes / wheelchairs and roller beds etc....

Currently if you're being pulled your broken bones are fine!

Cargo bay conveyor direction inconsistent

Round ID: 35

When turning on the conveyors in the cargo bay, they seem to not all run in one direction - had to turn it off and on a couple times before it seemed to correct itself.

Station alerts do not update outside of tablet computers

Atmospheric, Power, and Fire alarms do not clear from fixed computer stations, A.I dialog screens, or anything that is not the tablet computer that some jobs start with.

Very easy to reproduce: Start a round as an engineer, download the alarms application, and start a fire somewhere - then compare the results from the tablet computer to the alarms console.

dreamseeker_2017-09-28_20-59-40

PDA Slot Runtime

[22:51:20] Runtime in corpse.dm,153: undefined variable /obj/effect/mob_spawn/human/clown/var/pda_slot
  proc name: equip (/obj/effect/mob_spawn/human/equip)
  src: Clown (/obj/effect/mob_spawn/human/clown)
  src.loc: the shuttle floor (98,74,3) (/turf/open/floor/mineral/titanium/blue)
  call stack:
  Clown (/obj/effect/mob_spawn/human/clown): equip(Dylan Smail (/mob/living/carbon/human))
  Clown (/obj/effect/mob_spawn/human/clown): create(null, 1, null)
  Clown (/obj/effect/mob_spawn/human/clown): Initialize(1)
  Clown (/obj/effect/mob_spawn/human/clown): Initialize(1)
  Atoms (/datum/controller/subsystem/atoms): InitAtom(Clown (/obj/effect/mob_spawn/human/clown), /list (/list))
  Atoms (/datum/controller/subsystem/atoms): InitializeAtoms(null)
  Atoms (/datum/controller/subsystem/atoms): Initialize(786751)
  Master (/datum/controller/master): Initialize(10, 0)

Muzzle doesn't stop scream noise

I had a muzzle on and did *scream, it gave the proper message for screaming while mute in chat (makes a loud noise or something), but the scream noise still played.

May be the same for other types of muting, idk though. I didn't fuck with any variables either iirc.

Language button visible when a ghost

Forgot to get a screenshot, but... ghost or aghost, and you've still got the Languages button visible and clickable as a ghost.

I know this was recently edited, so must be to do with that PR.

Cargo shuttle send inconsistent

Round ID: 37

Sending shuttle to CentComm caused it to just sit in the dock and not move. After it finished and sent it again, it suddenly disappeared from the dock after 60 seconds elapsed.

Ashwalker shown as Unathi

When you examine a Ashwalker, the examination text states their species as being Unathi instead of being a Ashwalker.

Cactus fruit taste like name

Round ID 70.
After wondering around slaying monsters as an ashwalker I decided to scavenge up some cactus fruit for a quick snack. Little did I know that it would taste like the literal manifestation of name.

You bite the cactus fruit.

You can taste name and fruity mushroom.

AI can be blinded

Unsure of circumstances that caused it, sadly. Issue presents as if a normal player went blind (or unconscious). Admin healing resolves temporarily.

Bubblegum charge not adjusted to reduced movement speed.

Same issue as with the ashdrake. You can react to the charge but the movement speed we got does not allow dodging in time. Its by far the most deadliest megafauna but should be doable without being a meth addict or having TGs movement. Havent had a chance to see his other attacks cause he decided to charge instantly with a speed of 300.000 kilometers per second. I suggest the same change like we gave the drake: Less speed on the charge to make it dodgeable without meth.

Runtime in timer.dm

[15:09:25] Runtime in timer.dm, line 108: Invalid timer: Timer: 499, TTR: 784, Flags: TIMER_STOPPABLE, callBack: [0x21028ad3], callBack.object: some_magic_bullshit0x6000197, callBack.delegate:/proc/qdel(the sparks) timer.timeToRun=784||QDELETED(timer)=1663||world.time=1663.5||head_offset=732.5||practical_offset=104||timer.spent=1
proc name: fire (/datum/controller/subsystem/timer/fire)
src: Timer (/datum/controller/subsystem/timer)
call stack:
Timer (/datum/controller/subsystem/timer): fire(1)
Timer (/datum/controller/subsystem/timer): ignite(1)
Master (/datum/controller/master): RunQueue()
Master (/datum/controller/master): Loop()
Master (/datum/controller/master): StartProcessing(0)

human_defense.dm Runtime

[23:37:02] Runtime in human_defense.dm,39: Cannot read null.species
  proc name: bullet act (/mob/living/carbon/human/bullet_act)

Ash Drakes Fly Attack not dodgeable with current speed.

So considering we got lowered speed and we got megafauna I thought I would try out the easiest of them. Normally with enough speed the ashdrake is manageable. You can dodge all of his attacks with the current speed but one. Thats the flying sweep, you know where he flies up into the air and stomps you if you dont dodge in time. Usually you got a second to get away which is, provided you have normal TG movementspeed absolutly doable. As it stands now its pretty much impossible. Ash Drake used his sweep 3 times on me and couldnt dodge them at all because they are always targetting the center. I suggest to fix this minor issue the ashdrake should get a small delay on his sweep attack, say 1.5 seconds. That way you can dodge his sweep if you react in time which is (near) impossible right now. Other than that the megafauna is pretty much good to fight against at the speed we now have.

Space lit overlays

Weird overlay glitch in space on Omega station

image

@Citinited think this is something you might be able to have a look at? Lights the overlays kinda weirdly.

Runtime in update_icons

[14:18:19] Runtime in update_icons.dm, line 57: Cannot read null.species
proc name: update mutant bodyparts (/mob/living/carbon/human/proc/update_mutant_bodyparts)
usr: AndrewMontagne () (/mob/dead/new_player)
src: Hortensia Matthews (/mob/living/carbon/human/dummy)
src.loc: null
call stack:
Hortensia Matthews (/mob/living/carbon/human/dummy): update mutant bodyparts()
Hortensia Matthews (/mob/living/carbon/human/dummy): update inv wear mask()
Hortensia Matthews (/mob/living/carbon/human/dummy): wear mask update(the clown wig and mask (/obj/item/clothing/mask/gas/clown_hat), 1)
Hortensia Matthews (/mob/living/carbon/human/dummy): wear mask update(the clown wig and mask (/obj/item/clothing/mask/gas/clown_hat), 1)
Hortensia Matthews (/mob/living/carbon/human/dummy): doUnEquip(the clown wig and mask (/obj/item/clothing/mask/gas/clown_hat), 1, null, 1, 1)
Hortensia Matthews (/mob/living/carbon/human/dummy): doUnEquip(the clown wig and mask (/obj/item/clothing/mask/gas/clown_hat), 1, null, 1, 1)
Hortensia Matthews (/mob/living/carbon/human/dummy): temporarilyRemoveItemFromInventory(the clown wig and mask (/obj/item/clothing/mask/gas/clown_hat), 1, 1)
the clown wig and mask (/obj/item/clothing/mask/gas/clown_hat): Destroy(0)
the clown wig and mask (/obj/item/clothing/mask/gas/clown_hat): Destroy(0)
qdel(the clown wig and mask (/obj/item/clothing/mask/gas/clown_hat), 0)
...
Hortensia Matthews (/mob/living/carbon/human/dummy): Destroy(0)
Hortensia Matthews (/mob/living/carbon/human/dummy): Destroy(0)
Hortensia Matthews (/mob/living/carbon/human/dummy): Destroy(0)
Hortensia Matthews (/mob/living/carbon/human/dummy): Destroy(0)
qdel(Hortensia Matthews (/mob/living/carbon/human/dummy), 0)
get flat human icon(null, /datum/job/clown (/datum/job/clown), /datum/preferences (/datum/preferences))
/datum/datacore (/datum/datacore): get id photo(Goose McSunny (/mob/living/carbon/human), AndrewMontagne (/client))
AndrewMontagne (/mob/dead/new_player): AttemptLateSpawn("Clown")
AndrewMontagne (/client): Topic("src=\[mob_336];SelectedJob=Clo...", /list (/list), AndrewMontagne (/mob/dead/new_player))
AndrewMontagne (/client): Topic("src=\[mob_336];SelectedJob=Clo...", /list (/list), AndrewMontagne (/mob/dead/new_player))

ID in PDA doesn't give access

Round ID: 35

Placed Captain's ID in PDA, did not give any additional access of the ID (but did work when in ID slot as usual).

Runtime in icons.dm,1008: bad savefile or list

Reported by @Ziirobot

runtime error:
[15:28:09]bad savefile or list
[15:28:09]proc name: icon2base64 (/proc/icon2base64)
[15:28:09]  source file: icons.dm,1006
[15:28:09]  usr: (src)
[15:28:09]  src: null
[15:28:09]  call stack:
[15:28:09]icon2base64(/icon (/icon), "misc")
[15:28:09]world: ()
[15:28:09] Runtime in icons.dm,1006: bad savefile or list
  proc name: icon2base64 (/proc/icon2base64)
  src: null
  call stack:
  icon2base64(/icon (/icon), "misc")
  world: ()

Lavaland Ashwalkers sprite: Curretly slightly broken.

Looks like the ashwalkers are missing the middle part of their body. Looks very funky.

How to reproduce: Pick Ashwalker, look at the funky middle bodypart. Looks like they are missing shit.

Woops literally got a PR as I was typing this. Disregard.

[18:04:38] Runtime in , line : bad arg name 'break_modifier'

[18:04:38] Runtime in , line : bad arg name 'break_modifier'
proc name: apply damage (/mob/living/proc/apply_damage)
usr: Bianka II Mcvit (<snip>) (/mob/living/carbon/human)
usr.loc: The floor (149,112,2) (/turf/open/floor/plasteel/grimy)
src: the cow (/mob/living/simple_animal/cow)
src.loc: the floor (150,112,2) (/turf/open/floor/plasteel/grimy)
call stack:
the cow (/mob/living/simple_animal/cow): apply damage(27, "brute", null, null)
the cow (/mob/living/simple_animal/cow): attacked by(the extradimensional blade (/obj/item/nullrod/claymore/multiverse), Bianka II Mcvit (/mob/living/carbon/human))
the cow (/mob/living/simple_animal/cow): attacked by(the extradimensional blade (/obj/item/nullrod/claymore/multiverse), Bianka II Mcvit (/mob/living/carbon/human))
the extradimensional blade (/obj/item/nullrod/claymore/multiverse): attack(the cow (/mob/living/simple_animal/cow), Bianka II Mcvit (/mob/living/carbon/human))
the extradimensional blade (/obj/item/nullrod/claymore/multiverse): attack(the cow (/mob/living/simple_animal/cow), Bianka II Mcvit (/mob/living/carbon/human))
the cow (/mob/living/simple_animal/cow): attackby(the extradimensional blade (/obj/item/nullrod/claymore/multiverse), Bianka II Mcvit (/mob/living/carbon/human), "icon-x=17;icon-y=12;left=1;scr...")
the cow (/mob/living/simple_animal/cow): attackby(the extradimensional blade (/obj/item/nullrod/claymore/multiverse), Bianka II Mcvit (/mob/living/carbon/human), "icon-x=17;icon-y=12;left=1;scr...")
the extradimensional blade (/obj/item/nullrod/claymore/multiverse): melee attack chain(Bianka II Mcvit (/mob/living/carbon/human), the cow (/mob/living/simple_animal/cow), "icon-x=17;icon-y=12;left=1;scr...")
Bianka II Mcvit (/mob/living/carbon/human): ClickOn(the cow (/mob/living/simple_animal/cow), "icon-x=17;icon-y=12;left=1;scr...")
the cow (/mob/living/simple_animal/cow): Click(the floor (150,112,2) (/turf/open/floor/plasteel/grimy), "mapwindow.map", "icon-x=17;icon-y=12;left=1;scr...")

Pipeline Runtime

Runtime in unsorted.dm,1227: /datum/pipeline has one or more null gas mixtures, which may cause bugs. Null mixtures will not be considered in reconcile_air().

Simple mobs and SNPCs chug Estus in combat and are IMMORTAL/Simplemobs cannot be killed with melee

So uh this is an issue we encountered yesterday on multiple instances: Portal storm happened and spawned combine I mean Syndie Troopers. Which didnt want to die despite armblading them for a good 5 minutes and emptying 2 Energy Guns into them (the one without the E-Shield that is). Next round spiders happened, some died in melee other straigth up refused (Medbay spider had 5 people beating on it without it dying). Then last but not least a Goliath on Lavaland refused to take ANY damage whatsoever when prodding him for a good 5 minutes with two handed spears as Ashwalkers. Not sure if this is intended but considering spiders have the issue I doubt it is. Fucking Combat Chuggers. Either have to use a casul dex build or a scrub mage build to beat them.

Null Gasmix Runtime

[01:51:38] Runtime in unsorted.dm, line 1227: addMachineryMember: Null gasmix added to pipeline datum from the Primary Hallway vent pump #18 which is of type /obj/machinery/atmospherics/components/unary/vent_pump/on. Nearby: (184, 157, 2)

Cargo Shuttle never docks

Cargo shuttle can be called but never actually properly docks.

Requires further testing to pin down. Runtime related as far as I know so far. I will update upon further testing.

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.