Code Monkey home page Code Monkey logo

visu-project's Introduction

Visu

visu-project_thumbnail

visu-project is a visualizer with simple gameplay modes, a built-in timeline, and an assets editor. Made with GameMaker 2.3, it is a hobbyist project where I collaborate with my breakcore music producer friends to create visuals for my YouTube Channel.


This repository only keeps gamemaker yyp project, the actual development & code is keep in:

And synced with this repository using gm-cli. As a result I dont have to use GameMaker IDE or GMEdit, I can just use visual studio code :)

Documentation

Work on the documentation is ongoing, but some of the articles are already pushed to github wiki.

Releases

YouTube Song Date Download track
IMAGE ALT TEXT Perturbator - Sentient Released 2024.06.07
Updated 2024.06.26
TBD
IMAGE ALT TEXT Midbooze - Mare Released 2024.05.31
Updated 2024.06.06
TBD
IMAGE ALT TEXT lolratz - KAIDECA Released 2024.04.30
Updated 2024.06.06
TBD

visu-project's People

Contributors

alkapivo avatar

Stargazers

 avatar

Watchers

 avatar

visu-project's Issues

Track hub

Visu track hub

I'm looking for the simplest technology stack to implement a project like this:

I would like visu to have a built-in level browser for downloading from the internet. In visu, in the settings, there would be a UI for adding custom servers (just URL addresses). Then the search option would query a simple API of these URLs, and a simple JSON with a list of found tracks would be returned. Visu itself would concatenate these responses to display a single list.

A visu level is a zip file containing files like *.json, *.ogg, *.mp4, *.png, *.bmp.

*.ogg and *.mp4 files might be copyright-protected, so I want distributed servers that anyone can set up - my plan to bypass the copyright problem ๐Ÿ˜„

The MVP seems simple, I basically have it done already. It involves a simple app in node.js with a mocked API, always returning the same search result and allowing the download of one track. I believe that implementing such a repository is not the right way, as something like this must already exist (for example, levels for Beat Saber, osu, etc.)

I see it like this: I would upload the project with the server and a Dockerfile to my GitHub (of course, also upload the Dockerfile to Docker Hub) which would contain the server and instructions on how to run it locally. Meanwhile, I would host an "anonymous" hub, which would be the default, and it could contain content with dubious "copyright".

My MVP is not enough because it should include the possibility of logging in, adding/deleting tracks (uploading zip from the client, verifying if it's really a visu level, whether it contains files from the whitelist, whether it doesn't contain any junk, viruses, etc.), DDoS protection, etc.

I'm a "goat programmer" so I see how I could code it all myself, but this time I'd like to use something ready-made and focus on configuring in YAMLs rather than writing code.

Roles/Authentication

Users are needed with three types of roles:

  • User: can add new tracks and delete their own tracks.
  • Moderator: can add and delete tracks, add or remove users from ban list
  • Admin:can do everything what moderator can + assign roles to other users.

API

/get/{trackId}

Type: GET
Description: Link to zip with visu track
Parameters:

  • string trackId: ID of visu track

Response content type: application/json
Response codes:

  • 200: Successful operation
  • 404: Visu track not found

Example response:

{
  "code": 200,
  "message": "Successfull",
  "payload": {
    "url": "https://url.to/track.zip"
  }
}

/find

Type: POST
Description: Return JSON Collection
Parameters:

  • string query: Prompt from user

Response content type: application/json
Response codes:

  • 200: Successful operation
  • 400: Invalid query supplied

Example response:

{
  "code": 200,
  "message": "Successfull",
  "payload": {
    "result": [
      {
        "id": "EXAMPLE_ID",
        "author": "Author public nickname from external authenticator service",
        "name": "Sewerslvt - Blissfull Overdose",
        "description": "Yoo, check this sick level I've made"
      }
    ]
  }
}

/put

Type: PUT
Description: Upload visu track to server.
Parameters:

  • string name: Name of visu track, max 256 characters
  • string description: Note from author, max 2048 characters
  • file track: zip with visu track

Response content type: application/json
Response codes:

  • 200: Successful operation
  • 400: Invalid form supplied
  • 401: Unauthorized
  • 415: Invalid visu track

Example response:

{
  "code": 200,
  "message": "Track added successfully",
  "payload": {
    "id": "EXAMPLE_ID"
  }
}

/delete

Type: DELETE
Description: Remove visu track from server.
Parameters

  • string id: ID of visu track

Response content type: application/json
Response codes:

  • 200: Successful operation
  • 400: Invalid ID supplied
  • 401: Unauthorized
  • 404: Visu track not found

Example response:

{
  "code": 200,
  "message": "Track removed successfully",
  "payload": {
    "id": "EXAMPLE_ID"
  }
}

Documentation in github wiki

Gather all notes and write missing articles and push it to github wiki.

Acceptance criteria

  • User know how to create new track.
  • All UI components are mentioned in wiki.
  • All keyboard shortcuts are mentioned in wiki.
  • Brushes are documented.
  • Templates are documented.
  • Bullet/Shroom/Player JSON behaviour API is documented.

Add cooldown and timeout in VideoService

video_seek_to is not reliable, it is possible to break the feature if that function is called many times between steps, without any break.

Acceptance criteria

  • Cooldown and timeout parameters are defined in external json.
  • Teste on FullHD video

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.