Giter VIP home page Giter VIP logo

vuengine / vuengine-studio Goto Github PK

View Code? Open in Web Editor NEW
30.0 4.0 3.0 19.38 MB

Full-featured Nintendo Virtual Boy game development application.

Home Page: https://www.vuengine.dev

License: MIT License

JavaScript 0.32% TypeScript 74.18% CSS 7.61% HTML 17.69% Shell 0.16% NSIS 0.02% Dockerfile 0.02%
nintendo virtual-boy integrated-development-environment ide vscode theia homebrew vuengine

vuengine-studio's People

Contributors

jorgeche avatar kr155e 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

Watchers

 avatar  avatar  avatar  avatar

vuengine-studio's Issues

Build not working with multiple windows open

When opening multiple VUEngine Studio windows, pressing the build button only works properly in one of them (it seems that the last opened one). Closing all but the original window doesn't fix the issue and VES has to be restarted for the building to work again.

Idea: build archive

Store last x builds, e.g. in build/archive/output_20210910221805.vb.

Also store logs and make those inspectable in build widget.

Add quick links to launch ROMs in emulator.

ROM size info

After a build succeeded, determine the output ROM size and display it in the build widget.

Flash Cart config widget

Create a widget to ease working with flash cart configs. Holds a list of flash cart configs with "+" button.

Button to reset to default as well on top.

Aborting builds can lead to inconsistent state

Aborting builds during preprocessing can lead to an inconsistent state of the build folder, in which builds are no longer possible. Thus, the build folder should be cleaned when a build is aborted during preprocessing. To not unnecessarily clean, and thus increase the build time on next run, it should probably be checked if any files have been actually processed during any of the preprocessing steps.

Get application working on Windows

  • Fix filepath issues
  • Get build working
  • WSL support, include Linux gcc
  • Get packaging working
  • Fix path problems in "New Project" dialogue
  • Test extensively

Include built-in libs in workspace

Add option to include the configured VUEngine-Core, VUEngine-Plugins and user plugin libraries in the workspace, without the need for a workspace file.

Preference should be set to false by default, since this is not neccessarily interesting for regular users.

Build widget search

Allow to filter the build widget by a search word. We should be able to get that feature almost for free by refactoring the build log to be a Tree.

Rumble Pack Test Tool

  • Rumble Pack Test Tool to test drive effects and effect chains.
  • Status bar items when connected, links to test tool
  • Additional custom editor for effects, tailored for VUEngine rumble implementation

JSON schema editors and code generation

  • Add custom editors.
  • Generate forms from JSON schema and generate code on save
  • Include version numbers in JSON schema files.
  • Need a mechanism to automatically update project's config files according to engine's schema files.

Build widget enhancements

  • Color code on warnings - Color progress bar yellow once a warning appeared in the log
  • Introduce new status "Build successful (with warnings)"?
  • Automatically open widget when a build failed

Fix build times

Investigate why build times are much higher in VES than they are when building through the terminal.

Might have to do with file watchers, output parsing or such?

Browser version

Get VES to compile for, and run in, the browser. So we could potentially offer a web-based version.

Fully remove debug features

Almost done, although not everything could be removed, yet.

  • Remove Preferences->Extensions->Debug (-> bindDebugPreferences)

Implement image conversion

Implement image conversion via grit using individual image config files.

Include option to specify storage area: "ROM Space" (default) or "Expansion Space".

Auto convert when an image or a .image.json file has been changed.

System notifications

Implement system notifications for long running processes like building or flashing.

Generate config.make file

We don't have a way to generate custom editors from JSON schema files, yet and no code generation mechanisms either. But we'll need to implement something to generate config.make, otherwise the plugins sidebar won't do anything useful.

Add screenshot functionality to emulator

Add screenshot functionality to the emulator that lets you capture the screen and then allow you to crop and annotate the image for faster communication in dev teams.

marker.js?

Trim msys archives

msys archive is huge, we can pobably shave a lot of unnecessary files from them.

Custom zoom logic

Bring back custom zoom logic from early VUEngine Studio version. Prevent too high or low zoom levels.

Fix various emulator issues

  • Queueing is not working correctly
  • Sometimes ROM is present, but not detected by emulator. In that case, the build starts instead.
  • Emulator is not persisting save data
  • Focus gets lost when emulator is dragged to sidebar
  • Disable toolbar while emulator is loading/starting
  • Keys bindings must only trigger when emulator is focused
  • Introduce global theia-button::active state (better feedback when clicking a button)
  • If the run command is executed when the emulator is already active, it should be opened and reset.

Refactor Documentation

  • Use custom WidgetOpenHandler, like plugins widget, to open docs by URI.
  • Highlight currently opened doc page in tree
  • Add "collapse all" command to tab tool bar

Custom emulator widget

Create a widget to ease adding new custom emulator configurations. Holds a list of emulator configs with "+" button.

Each config has these fields:

  • Name: text input, required.
  • Path: text input with file select button (like on new project dialog), required
  • Args: text input, preset with value "%ROM%"
  • Default: checkbox, checking it will uncheck all other config's default checkbox

Name, Path and Args go into emu config, default goes into default emulator config.

On top of list, the Build-In Emulator is listed. It has a default checkbox as well. It cannot be removed.

Shows a notice on top when emulator preferences have changed with a button to resync the widget.

Customize workspace file name

  • Change .theia-workspace to a custom name
  • Change file dialog (and other) labels accordingly

Note: This ticket is still blocked, because the respective parts of Theia still have to refactored to be changeable via DI.

Build not working when folder contains whitespaces

Can't name the application "VUEngine Studio", or otherwise the build is not working, due to the whitespace.

Likewise, building won't work if the user installs the application to any folder that contains whitespaces. Same problem probably occurs when trying to build a project that's inside a path containing whitespaces.

Auto Updater

Implement inline Auto Updates via Electron update service.

  • Get code signing and notarizing working on Windows and Mac
  • Implement application dialogs
  • Tie up Github releases

Refactor flash carts widget

  • Allow to flash to specific carts (show flash button for each cart if there's more than one)
  • Update to latest hfcli and direct-to-flash programming
  • Parse HF32 progress
  • HF32 and HyperBoy port detection
  • Refactor pad function to use FileService instead of fs
  • Display warning and skip flashing if cart is too small to hold ROM
  • New events for flash start/succeed/fail
  • Tabbar decorators for above events + number of connected carts
  • Bug: Losing flash progress state when reconnecting any cart
  • Generalize parser and expose to flash carts config
  • Add support for additional actions. Can be useful for HyperBoy's save/load savegame feature.
  • Bug: Not flashing after being queued.
  • Bug: If one flash cart fails while another one starts, the overall process breaks
  • Allow to select any ROM for flashing

Finish new project creation

  • Verify the "new project" dialog is working fine.
  • Adjust new project with custom name, author name and maker code

Cache data on code gen

When doing more complex code generation, i.e. regenerating all .lang.json files, cache retrieved data to increase performance.

Refactor emulator

  • Fix focus
  • Fix button remapping
  • Backport latest advancements from PVB to VES.
    • Fullscreen
    • Fixed button assignments (toggle slowmotion)
    • EmulatorLoaded event
  • Load emulator in iframe via http -> Endpoint class?
  • Figure out mapping low battery toggle
  • Start vb files in the configured default emulator

Create additional templates

Create more game templates, or rather, plugins for GameState and respective entities.

  • RPG
  • Top-down racing game (based on Formula V code)
  • Falling block puzzle
  • Shoot'em Up
  • Point & Click/Adventure

Might mix them all into a single game template, akin to GB Studio's sample project.

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.