Giter Site home page Giter Site logo

basemod's People

Contributors

alchyr avatar alexdriedger avatar arasmus8 avatar avolny avatar bug-sniper avatar celicath avatar codewarrior0 avatar daviscook477 avatar dbjorge avatar erasels avatar ericbartusch avatar fiiiiilth avatar flipskiz avatar graysonng avatar haashi avatar herbix avatar johnnybazooka89 avatar kiooeht avatar mikepaccnt avatar mistressalison avatar modargo avatar nellydevo avatar pandemonium14 avatar reinashsl avatar robojumper avatar seeonee avatar skrelpoid avatar somdy avatar t-larson avatar twanvl 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

basemod's Issues

Game crash on start-up before menu

Since the newest Update (Beta and non Beta build) the game crashes right before it gets to the menu, after the Megacrit screen.
It only happens if you have a character mod checked in the Modloader.

Here is a picture of it,

untitled

Can you give some tips about mvn package the example_mod in the tutorial?

First, thanks for your excellent work on this mod/tool.
I followed your tutorial in "Getting Started (For Modders)", everything is good, but since I'm new to java..it's very confusing using the mvn, I know how to create new project and package a project followed a tutorial on youtube..But for this specific mod tutorial, I can't figure out how to package the example_mod, I tried to copy the pom.xml from basemod project to the example_mod and change some tags manually, but it didn't work, there are problems about the dependencies I guess.
Is there a way to run the launcher in eclipse (like modding in minecraft) or can you offer some tips on how to mvn package the example_mod? I see there is a build guide about basemod, problem is the example_mod is not a mvn project from the start :(

Custom character selection is not working

Hi guys, first time working on a mod and I created a very basic character using some other mods as a template. I finally have the character select screen working, but when I select my custom character it instead starts the game up as Ironclad. Basemod doesn't seem to complain though.

Edit: I was missing a file apparently so on load it was defaulting to Ironclad.

Enums are handled with toString instead of name

toString can be changed for enum values whereas name is final and will always work so we should keep track of new enum values (for card color and player types) using myEnumThing.name() instead of myEnumThing.toString()

Run History not shown when filtering by class

My runs for custom classes show up in the Run History section of the game with no filters selected. However, when I filter runs by the class dropdown, the game doesn't detect any runs.

Example:
witch run history bug

Debug output after clicking selecting the custom class in the filter dropdown menu:

18:41:13.849 INFO core.CardCrawlGame> PAUSE()
18:41:51.192 INFO core.CardCrawlGame> RESUME()
18:41:54.049 INFO runHistory.RunHistoryScreen> Attempted to load Run History with 0 runs.
18:41:55.549 INFO core.CardCrawlGame> PAUSE()

I've tried this on all known class mods and they all have the same behavior. Is it something BaseMod can fix, or is it a limitation of the vanilla game?

Custom Events?

Will it be possible to add custom events similar to the Potion Seller or Neow Book events?

Startup Crash - NoClassDefFound for powers/Absorbpowers

Downloaded the latest releases of ModTheSpire , Base Mod and Fruity Mod.
Spire is in non-beta mode
Getting this error on startup :

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.evacipated.cardcrawl.modthespire.Patcher.initializeMods(Patcher.java:32)
at com.evacipated.cardcrawl.modthespire.Loader.runMods(Loader.java:154)
at com.evacipated.cardcrawl.modthespire.ModSelectWindow.lambda$null$1(ModSelectWindow.java:71)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: com/megacrit/cardcrawl/powers/AbsorbPower
at basemod.BaseMod.initializePowerMap(BaseMod.java:568)
at basemod.BaseMod.initialize(BaseMod.java:367)
... 8 more
Caused by: java.lang.ClassNotFoundException: com.megacrit.cardcrawl.powers.AbsorbPower
at com.evacipated.cardcrawl.modthespire.MTSClassLoader.findClass(MTSClassLoader.java:82)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.evacipated.cardcrawl.modthespire.MTSClassLoader.loadClass(MTSClassLoader.java:65)
... 10 more

Card Image Simplification

Do away with card_image.png and card_image_p.png system and simply have the larger image be specified and do a scaling for the rendering.

Note that this can't break the original API - it should just be an additional feature where if only the _p.png version is specified the other one will be automatically generated by scaling by 0.5F.

Add a github tag

Can you please tag the project with SlayTheSpire-Mod? This will help people browse github for mods

Hook for card added to deck

Add a hook that is triggered whenever a card is added to the deck which would allow for mods to either allow the card add to go through, stop it, replace the added card with a different card, or do other effects.

There should be two separate hooks. One will be for temporary cards added during combat and the other should be for permanent cards added to the deck outside of combat (this second option may end up being too difficult to do).

Too many buttons at resting spots

this might be related to the fact that I am also using the FruityMod - StS to get the The Seeker, but I am getting 2 buttons that both says Forge at resting zones, this is not that bad under normal circumstances, they both function properly, the issue kicks in if you get both Peace Pipe and Girya, with 1 of those that brings the total number of buttons up to 4 and things still work fine, but once you get both Pipe and Girya and enter a resting area you have no buttons at all and get stuck until you abandon the run.

Crashing on launch

Here is the Error that comes when I try to start the game.

Mod list: basemod (2.12.1), betamode (1), betterrewardsmod (3.0.0), constructmod (0.5.2), customclimb (0.3.2), MadScienceMod (0.1.5), ReplayTheSpireMod, superfastmode (0.8.1), witchmod (0.9),
Finding core patches...
Finding patches...
com.evacipated.cardcrawl.modthespire.patcher.PatchingException: com.megacrit.cardcrawl.core.CardCrawlGame.update: Location matching given description could not be found for patch
at com.evacipated.cardcrawl.modthespire.lib.LineFinder.findInOrder(LineFinder.java:30)
at basemod.patches.com.megacrit.cardcrawl.core.CardCrawlGame.UpdateHooks$PreUpdateHook$Locator.Locate(UpdateHooks.java:40)
at com.evacipated.cardcrawl.modthespire.patcher.LocatorInfo.findLines(LocatorInfo.java:18)
at com.evacipated.cardcrawl.modthespire.Patcher.injectPatches(Patcher.java:265)
at com.evacipated.cardcrawl.modthespire.Patcher.injectPatches(Patcher.java:170)
at com.evacipated.cardcrawl.modthespire.Loader.runMods(Loader.java:185)
at com.evacipated.cardcrawl.modthespire.ModSelectWindow.lambda$null$1(ModSelectWindow.java:189)
at java.lang.Thread.run(Unknown Source)

deactivating all mods didn't help.
And when BaseMod was the last active Mod the same error still came

Game closes when entering the store

as the title says the game closes when you enter the store, there are no errors anywhere so I am not completely sure whats up with it, might have something to do with the alterations of the ? Card from a Boss Relic to a Shop (I think) Relic, either way the game just dies the moment you try to enter a store, played with Ironclad when this happened.

Were using the following Mods: Mod list: basemod (2.4.0), ColoredMap, Custom Climb, MoreRelics, FruityMod, and the newest version of ModTheSpire.

Was a regular run on Ascension 1

Not sure where to put this as it contains errors for both Mods

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.evacipated.cardcrawl.modthespire.Patcher.initializeMods(Patcher.java:32)
at com.evacipated.cardcrawl.modthespire.Loader.runMods(Loader.java:154)
at com.evacipated.cardcrawl.modthespire.ModSelectWindow.lambda$null$1(ModSelectWindow.java:71)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at basemod.BaseMod.subscribeToPostInitialize(BaseMod.java:2067)
at fruitymod.FruityMod.(FruityMod.java:354)
at fruitymod.FruityMod.initialize(FruityMod.java:401)
... 8 more

more issues with the new patch

Begin patching...
Finding core patches...
Finding patches...
javassist.NotFoundException: com.megacrit.cardcrawl.screens.mainMenu.RelicViewScreen
at javassist.ClassPool.get(ClassPool.java:445)
at com.evacipated.cardcrawl.modthespire.Patcher.injectPatches(Patcher.java:206)
at com.evacipated.cardcrawl.modthespire.Patcher.injectPatches(Patcher.java:174)
at com.evacipated.cardcrawl.modthespire.Loader.runMods(Loader.java:229)
at com.evacipated.cardcrawl.modthespire.ui.ModSelectWindow.lambda$null$1(ModSelectWindow.java:199)
at java.lang.Thread.run(Unknown Source)

only thing that pops up, game doens't even start

Annotation-based subscriptions and event priority (ModTheSpire)

Right now the subscription system is messy and results in large and confusing bits of code like:

@SpireInitializer
public class FruityMod implements PostInitializeSubscriber,
    EditCardsSubscriber, EditRelicsSubscriber, EditCharactersSubscriber,
    EditStringsSubscriber, SetUnlocksSubscriber, OnCardUseSubscriber,
    EditKeywordsSubscriber, OnPowersModifiedSubscriber, PostExhaustSubscriber,
PostBattleSubscriber, PostDungeonInitializeSubscriber, PostDrawSubscriber {

These pieces of code define all the events that a class is listening for but are all bunched at the top of the file and make it difficult to know which methods are actually listening for events.

Instead we should take a look at the manner in which Minecraft Forge (link) handles this issue. Basically this means rather than having a class implement an interface the class will declare its intent to be a subscriber to events with the @Subscriber annotation and then it can annotate any of its methods with event annotations that signal to BaseMod that the specific method will be listening for the event. Here's an example of the idea:

@Subscriber
public class MyMod {
    @EditCardsEvent
    public static void handleEditCards() { /* do stuff in here */ }
}

Every method that has an Event annotation would need to make sure it has the proper types for each of the parameters it is being passed and then ModTheSpire would parse mods when they are loaded for the annotations to build up a list of which classes need which events.

Additionally we will need a standardized way to fire events, preferably through some static method.

When using the Event annotations preferably rather than just providing an indication of what events the class wants to listen to we could also implement a priority system. So rather than just implementing an unordered set of subscribers to each event we would use an ordered list, or perhaps some kind of tree map to maintain an ordering of the events through a priority system that allows event order to be specified. An example would look like this.

@Subscriber
public class ExhaustIndicator
    @PostExhaustEvent(priority=2)
    public static void handleExhaust(AbstractCard card) {
        System.out.print("A card");
    }

    @PostExhaustEvent(priority=1)
    public static void handleExhaust(AbstractCard card) {
        System.out.println(" was exhausted!);
    }
}

Using the priority system the above example would always print "A card was exhausted!" in that order rather than having the order to indeterminate.

Ethereal Issue is back + Unlock issue

Ethereal Issue is back in full, not 100% sure what broke it again.

java.lang.ArrayIndexOutOfBoundsException: 2
at com.megacrit.cardcrawl.powers.IntangiblePower.updateDescription(IntangiblePower.java:57) ~[?:?]
at com.megacrit.cardcrawl.powers.IntangiblePower.(IntangiblePower.java:29) ~[?:?]
at com.megacrit.cardcrawl.monsters.thebeyond.Nemesis.takeTurn(Nemesis.java:89) ~[desktop-1.0.jar:?]
at com.megacrit.cardcrawl.monsters.MonsterGroup.takeTurn(MonsterGroup.java:126) ~[?:?]
at com.megacrit.cardcrawl.actions.GameActionManager.getNextAction(GameActionManager.java:270) ~[?:?]
at com.megacrit.cardcrawl.actions.GameActionManager.update(GameActionManager.java:143) ~[?:?]
at com.megacrit.cardcrawl.rooms.AbstractRoom.update(AbstractRoom.java:241) ~[?:?]
at com.megacrit.cardcrawl.dungeons.AbstractDungeon.update(AbstractDungeon.java:2435) ~[?:?]
at com.megacrit.cardcrawl.core.CardCrawlGame.update(CardCrawlGame.java:782) ~[?:?]
at com.megacrit.cardcrawl.core.CardCrawlGame.render(CardCrawlGame.java:374) [?:?]
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225) [?:?]
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126) [desktop-1.0.jar:?]
Game closed.

this is with the latest (downloaded just before taking it out on another run)

BUG: Console cannot spawn upgraded cards

When I use the commands "deck add Enigma" and "deck add Enigma 1" they both spawn an unupgraded Enigma. Same for other cards. Expected behavior is that the 1 makes it spawn an upgraded Enigma.

Lag when using BaseMod

Not sure about specific conditions required for reproduction - yet. If anyone has experienced lag with using BaseMod could you maybe report your CPU and GPU? Thanks.

Request: Disable console case sensitivity

Hey would it be possible to disable case sensitivity in BaseMod's console? So all card strings could be pushed to lower case for comparison? Have not dug through the code so I don't know if that would even be possible, or if it would require a lot of extra code. Perhaps make a hash map of the cards when it loads with their lower case values?

The goal is so that the following 2 lines produce the same result:

deck add BloodForBlood
deck add bloodforblood

Version Selector (ModTheSpire)

ModTheSpire should backup desktop-1.0.jar for every version of StS so when people who use mods update their game it doesn't break the ability to use mods because ModTheSpire would let them select what version of StS to run. ModTheSpire could automatically tell them what version of StS is the latest and which one is the latest that will work with their mods. Note that this would only be making local backups in order to avoid piracy/copyright issues.

Some console issues...

Actually there is a bit problems with the console. First - potions. There suppose to be a command potion list. Here is the respose for it:
image

Second problem - powers. If you use the command without args - you would get the arrow that does nothing. At all =) I think it's related to the lastes game update, but still.

receivePostCreateStartingRelics does not trigger a hook

In order to change starting relics, you have to use PostCreateIroncladStartingRelicsSubscriber or PostCreateSilentStartingRelicsSubscriber instead of receivePostCreateStartingRelics.

receivePostCreateStartingRelics does not trigger a hook. This is very confusing.

I haven't tested this with custom characters, but it seems like the hook to change custom starting relics would not work with custom characters.

Custom Monsters

Allow for registering custom enemies/monsters with the game.

Steps:

  1. BaseMod should handle monster textures similar to its current handling of player textures.
  2. The dungeon initialization code needs to have hooks for modifying monster spawns, i.e. the percentage changes for current monsters needs to be changeable and percentage chances need to be able to be added for custom monsters.

Patch that is more robust in the face of weekly changes (ModTheSpire)

Since right now we can only specify patches by line number (for the most part) when we want to insert code, whenever Slay the Spire is updated a lot of things break even when the underlying logic doesn't change because line numbers change. If we had a way of writing patches that could recognize the actual logic that's going on rather than the line numbers this would make patches more robust.

Right now the Instrument Patch does already handle this use case but it's API is a bit complex. I'm thinking some kind of wrapper around Instrument Patch that allows users to use it just like the Insertion patch but instead of specifying a line number to patch they could specify a method call by the calling object and the method name and then have the patch insert either before or after that line.

Something like:

public class MyPatches {

    @SpireFancyPatch(objectName="AbstractDungeon", methodName="getPlayer", loc="after")
    public static class FancyNewPatch {

        public static void FancyPatch(/* probably should have same params as InsertPatch and allow for local var capture? */) {}

    }

}

Or in the case of allowing the user to specify methods it expects to have called first instead of objectName and methodName we additionally have previousCalls=new String[] {"obj1", "call1", "obj2", "call2", etc...}

Need Some Help

I'm having an issue with getting this mod installed correctly. I'm VERY unfamiliar with the "Building" process via maven. I've installed maven correctly, as well as eclipse, but I have no idea how to actually build the jar file in eclipse from there.

I found two prebuilt Jar files for ModTheSpire and BaseMod, but I get errors that prevent me from launching when I select "Base Mod". If I don't select any mods, the game launches fine.

Links for those mentioned files.
ModTheSpire - https://github.com/kiooeht/ModTheSpire/releases
BaseMod - https://github.com/t-larson/BaseMod/releases

I've attached the debug text from when it errors out, if that helps at all.

Any assistance is greatly appreciated!

debug.txt

Logging publishStartAct hundreds of times

When playing ModTheSpire in the newest patch, the following line is logged literally hundreds and hundreds of times:

19:46:25.036 INFO basemod.BaseMod> publishStartAct

EDIT: The timestamp changes.

Game crashes when using card with custom buff

I'm making a mod right now and while custom Attack cards work, a custom Skill card that I made keeps crashing the game when it tries to apply a custom debuff. The error log is below, does anyone know what's going on?

image

Starting Save is Unloadable

When you automatically save at the choosing of your starting bonus room, with this latest BaseMod version the save created will make it so when it tries to load the save an index of range exception occurs.

ID changes for updated items?

For example trying to add the upgrade of cloak and dagger: "deck add Cloak And Dagger 1 1" only gives you the normal card.
same thing happens for Flash of Steel 1 1

is their another ID for the upgrade ?

thank you!

Some kind of exception happened when I picked up a card

Exception: java.lang.NullPointerException
01:40:34.711 ERROR core.CardCrawlGame> Exception caught
java.lang.NullPointerException: null
at java.io.StringReader.(Unknown Source) ~[?:1.8.0_162]
at java.util.Scanner.(Unknown Source) ~[?:1.8.0_162]
at com.megacrit.cardcrawl.cards.AbstractCard.initializeDescription(AbstractCard.java:387) ~[?:?]
at fruitymod.cards.Brainstorm.upgrade(Brainstorm.java:56) ~[FruityMod.jar:?]
at com.megacrit.cardcrawl.relics.ToxicEgg2.onObtainCard(ToxicEgg2.java:21) ~[desktop-1.0.jar:?]
at com.megacrit.cardcrawl.vfx.FastCardObtainEffect.update(FastCardObtainEffect.java:49) ~[desktop-1.0.jar:?]
at com.megacrit.cardcrawl.dungeons.AbstractDungeon.update(AbstractDungeon.java:2516) ~[?:?]
at com.megacrit.cardcrawl.core.CardCrawlGame.update(CardCrawlGame.java:782) ~[?:?]
at com.megacrit.cardcrawl.core.CardCrawlGame.render(CardCrawlGame.java:374) [?:?]
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225) [?:?]
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126) [desktop-1.0.jar:?]
Game closed.

Missing Relics (not sure which mod added these)

a few days ago I ran into a duo of relics that were actually pretty interesting, one of them I cannot remember the name of, but it lowered all damage you took by one, meaning torii now would negate all damage of 5 and bellow, a solid relic overall.

The other was named Homunculus and prevented you from losing health from cards you owned, so Rupture would no longer work at all with this relic, but you would not take damage from playing cards like Offering.

Both these relics are now nowhere to be seen and I was wondering if they were removed on purpose or if the mod that added them (Fruity, BaseMod or MoreRelics might have had an update that removed them.

Either way I would like to see these relics restored as I had an idea for a deck that requires both heck if the idea works as I hope we might have another deck archetype going.

Basemod not working???

Hi I really want to play with mods yet for some reason the actual startup isnt working. I have v2.6.0 of modthespire, i have opted out of the latest beta branch as apparently that causes problems and I have literally tried every basemod package and none of them work.
This is what keeps popping up. Any help would be appreciated.

Java version: 1.8.0_171
Slay the Spire version: 05-10-2018
ModTheSpire version: 2.6.0
Mod list: JuggerMod, basemod (2.4.0),
Finding core patches...
Finding patches...
ERROR: No method [getPotion] found on class [com.megacrit.cardcrawl.gashapon.NeowReward]
com.evacipated.cardcrawl.modthespire.patcher.PatchingException: com.megacrit.cardcrawl.screens.mainMenu.CardLibraryScreen.render: Location matching given description could not be found for patch
at com.evacipated.cardcrawl.modthespire.lib.LineFinder.findInOrder(LineFinder.java:30)
at basemod.patches.com.megacrit.cardcrawl.screens.mainMenu.CardLibraryScreen.EverythingFix$Render$Locator.Locate(EverythingFix.java:258)
at com.evacipated.cardcrawl.modthespire.patcher.LocatorInfo.findLines(LocatorInfo.java:18)
at com.evacipated.cardcrawl.modthespire.Patcher.injectPatches(Patcher.java:265)
at com.evacipated.cardcrawl.modthespire.Patcher.injectPatches(Patcher.java:170)
at com.evacipated.cardcrawl.modthespire.Loader.runMods(Loader.java:185)
at com.evacipated.cardcrawl.modthespire.ModSelectWindow.lambda$null$1(ModSelectWindow.java:189)
at java.lang.Thread.run(Unknown Source)
commit close #61

Game crashes when using localization strings for custom characters

Ideally custom characters would use strings loaded from a localization file. But when attempting to do that the game crashes on startup. I suspect that this happens receiveEditCharacters is called before receiveEditStrings.

The current workaround is to hardcode the character strings in the call to BaseMod.addCharacter, and MyCustomPlayer.getLoadout().

Add a list of powertips to IUIElement

I think it would be a cool feature for Tooltips/PowerTips to be added to UIElements. They would have to render them when hovered and IUIElement would have to have some default methods to add and remove powertips.

Maven Tutorial

Hey I was wondering if anyone here would be able to create a tutorial in the wiki on how to use maven to build a mod.
Currently maven is only mentioned as a dependency but is not explained.
Hopefully someone can do this as it would help me and others to make mods.
Cheers

ModalChoice cards + Dead Branch interaction

Originally reported by KongMD in regards to Stroke of Genius from FruityMod, cards that open the modal choice and also exhaust have an odd interaction with Dead Branch. Original issue:

Expected Behavior

Either
a) User chooses power, attack or skill, then Dead Branch card is added to hand
or
b) Dead Branch card is added to hand, then users chooses power, attack, or skill

Actual Behavior

Video of the behavior

Steps to Reproduce the Problem

  1. Get Dead Branch
  2. Play Stroke of Genius

Specifications

  • Version: v0.6.7 of mod, ModTheSpire 2.7, 06-21-2018 main branch
  • Platform: Windows 8.1 x64
  • Subsystem:

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.