Giter Club home page Giter Club logo

godot-yat's Introduction

YAT

YAT is an addon that provides a customizable, in-game terminal for your project.

Note

This project is in the early stages of development. Many things may be added, removed or changed.

YAT stands for Yet Another Terminal. The goal of this project is to create a real terminal integrated with Godot that allows you to perform actions whether in the game, editor, or user system. This is intended to facilitate game development, debugging, and prototyping.

The second goal, which is particularly important to me, is to make YAT as open as possible to change, personalization, and expansion, so that everyone can customize it as much as possible for their own project.

Of course, creating such a complex and ambitious project is extremely difficult (especially alone), so it will still be in beta for a long time to come.

Prerequisites

Make sure to update your .csproj.

Features

  • Over 35 built-in commands
  • Small size footprint (< 256 KB)
  • Custom commands (regular & threaded), extensions and windows
  • Automatic input validation (arguments, options)
  • Debug screen (FPS, CPU, GPU, etc.)
  • Access to the node tree (experimental)
  • Plugin customization
  • Quick Commands
  • Autocompletion
  • Script templates
  • Ability to restrict access to the plugin

Showcase

2024-02-27.12-03-03.mp4

Documentation

Instructions on how to get started can be found in the USAGE.md file.

You can find the documentation in the docs folder and example in the example folder.

The project also has templates in the script_templates folder, which can make it easier to create commands, etc.

License

Licensed under MIT license.

godot-yat's People

Contributors

masshuu12 avatar molingyu 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

Watchers

 avatar  avatar

godot-yat's Issues

Search node tree using `cn` command

Describe the solution you'd like
The cn command should be able to search the node tree.
Syntax:

cn ?Player
cn ?Player

In the first case, cn will search the tree starting from root for Player, while in the second case it will start from the currently selected node.

Suggestion: C# notification in AssetLib

Would be nice to have the name (or something in the description) indicate the project requires C#. This will be helpful for people to know they cannot use this plugin who use "stock" Godot, such as myself.

YAT - Yet Another Terminal (C#)

is what I would suggest for the name.

Get node command

Describe the solution you'd like
By default, the selected node should be root. Selected node should be visible before prompt.
It should be possible to set the currently selected scene to the one the user is currently looking at.

Pipe commands

Commands should return two values, command status and data.

Command to display performance information

Describe the solution you'd like
The performance command should create a window.
The position of the window should be customizable (e.q. top left, bottom right).
The command should be able to display all the most important information such as FPS, RAM usage, and anything else that can be pulled from Godot, and using C#.

More from here:

  • Process time
  • Physics time
  • Object count
  • Object resource count
  • Object node count
  • Orphans
  • VRAM usage

Command to change scene

Describe the solution you'd like
The command should look like this:
Alias cs.

$ changescene <scene>

`sys` command

Describe the solution you'd like
This command is supposed to allow running system commands.

Features

Commands:

  • quit – exit the game
  • list – list available commands
  • restart – restarts the level
  • changescene <scene> – change game scene
  • view normal/wireframe
  • man <command> – display manual for specified command
  • pause – un/pause the game
  • performance – displays performance information
  • whereami – displays name and path of the current scene

Preferences:

  • prompt
  • toggle prompt
  • history limit
  • autofocus
  • auto scroll
  • auto complete
  • auto complete on tab
  • default width
  • default height
  • background color
  • input color
  • error color
  • warning color
  • window resizable
  • window movable
  • min width
  • min height
  • log severity
  • input font size
  • output font size
  • automatically handle mouse mode
  • use colors

Signals:

  • CloseRequested
  • OptionsChanged
  • OverlayOpened
  • OverlayClosed
  • CommandExecuted
  • YatReady

Other:

  • history
  • autocompletion
  • rich text
  • prompt
  • preferences window
  • save options to the disk
  • load options from the disk
  • load options at runtime
  • restore defaults
  • colored output
  • user can contribute to the commands (e.q. add more options)
  • #9

Add support for command input

Describe the solution you'd like
Commands run on a separate thread should be able to collect user input in real time.
For example, the Ask<T>(string message) method.

Custom context menu

- [ ] context menu for overlay

  • context menu for YAT windows
  • add options for quick select in terminal's context menu
  • limit context menus to specific rect

Rework settings

Is your feature request related to a problem? Please describe.
Currently, the settings screen is ugly and has few options for customizing the plugin.

Describe the solution you'd like
The settings screen should be rewritten.

The new options should be as follows:

General

  • Automatically handle mouse mode when entering/leaving YAT.

Windows

  • Background color.

Terminal

  • History limit.
  • Enable/disable autofocus for terminal input.
  • Enable/disable autocomplete for terminal.
  • Input color.
  • Error color.
  • Log severity.
  • Input font size.
  • Output font size.
  • Enable/disable colored output.
  • Adjust input prompt.
  • Enable/disable input prompt.
  • Enable/disable output auto scroll.
  • Default width & height.

Automatically create default keybindings

Is your feature request related to a problem? Please describe.
Currently, users are forced to create keybindings manually when setting up the plugin, which creates unnecessary difficulties and does not allow for immediate checking out the plugin.

Describe the solution you'd like
The best solution would be to create default keybindings when the plugin is initialized (assuming they don't exist), and remove them when it is deactivated (if they have not been changed).

Rework `CommandArguments`

Describe the solution you'd like
Rename CommandArguments to CommandData.
Separate arguments & options.
Move not validated data to RawArguments & RawOptions variables.

A new record should look like this:

  • Yat
  • Terminal
  • Command
  • Arguments
  • Options
  • RawData
  • CancellationToken

A simplified version of the terminal for the editor

Describe the solution you'd like
Currently, YAT only works in the game, but it would be useful if the terminal could also be run in the editor in a simplified form.

This simplified form would consist of a text box, plus prompts and autocompletion.

It would also be useful to distinguish between commands that are able to run in the editor, and those that are only able to run during the game. This could be solved by creating an attribute that would be given for commands that are able to run in the editor.

Since this would be a very simplified version of the terminal, any output should be displayed in the editor itself.

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.