Giter Site home page Giter Site logo

ark2000 / pankuconsole Goto Github PK

View Code? Open in Web Editor NEW
929.0 17.0 33.0 9.72 MB

Feature-packed real-time debugging toolkit for Godot Engine.

Home Page: https://k2kra.xyz/PankuConsole/

License: MIT License

GDScript 100.00%
godot godot-addon godot-engine godot-plugin godot4 gdscript game-development gamedev game-console

pankuconsole's Introduction

logo


Panku Console is a feature-packed real-time debugging toolkit for Godot Engine. With Panku Console, you can easily interact with your scripts and objects at runtime, whether to cheat, debug, prototype, or just to have fun ๐Ÿ˜„๐ŸŽฎ.

Panku Console is designed to be modular and extensible, and it is easy to add and maintain features. It is also designed to be as unobtrusive as possible, so you can use it in your project without worrying about the impact on the final product ๐Ÿงฉ๐Ÿš€.

โœจ Highlights

๐Ÿ“ฆ Tiny Footprint - Less than 256KB!

Panku Console is and will always be as lite as possible.

๐Ÿ–ผ๏ธ Multi-window UI - Arrange your layout however you want!

Any windows can be scaled, snapped, collapsed, dragged and even become an independent OS window.

ui

๐Ÿ’ป๐Ÿ”ฎ Developer Console - Execute Arbitrary Code at runtime with hints!

Allows you to execute arbitrary expressions (such as function calls) at runtime like if you were god ๐Ÿง™โ€โ™‚๏ธ.

console

๐Ÿ“๐Ÿ•น๏ธ Native Logger - Display native logs just in your game!

View native logs (the same as the editor output panel) in an overlay or a separate window ๐Ÿ“‹.

logger

๐Ÿ› ๏ธ๐Ÿ”ง Data Controller - Turn Any Object into a Tweakable Property Panel!

Automatically convert all export properties in your script into an inspector window.

data_controller

๐Ÿ‘€๐ŸŽฎ Expression Monitor

Watch the results of expressions at runtime just in your game.

expression_monitor

And More... ๐ŸŒŸ

  • History Manager: view history inputs. โช
  • Keyboard Shortcut: bind expressions to keys for quick cheating. โŒจ๏ธ๐Ÿ•น๏ธ
  • Screen Notifier: display popup messages on the screen. ๐Ÿ’ฌ๐Ÿ“ข
  • Texture Viewer: view textures in real time. ๐Ÿ–ผ๏ธ๐Ÿ‘๏ธ
  • Misc Commands: provide some useful commands. ๐Ÿ› ๏ธ๐Ÿ”ง
  • General Settings: customize the console to your liking. โš™๏ธ๐Ÿ”ง
  • FAQ: frequently asked questions. ๐Ÿ™‹โ€โ™‚๏ธ๐Ÿ™‹โ€โ™€๏ธ

Since Panku Console is modular, you can easily remove or add features to suit your needs. ๐Ÿงฉ๐Ÿ”ง

modular

Installation ๐Ÿš€

A. Downloading GitHub master branch directly

  1. Download Latest commit from Github ๐Ÿ“ฅ.

  2. Copy the addons folder to your project root directory ๐Ÿ“‚.

  3. Enable this addon within the Godot settings โš™๏ธ: Project > Project Settings > Plugins

B. Using mirror repo as git submodule

Or if you prefer to use git(recommended), you can add this mirror repo as a submodule in your addons folder which will automatically update the addon when you pull the latest changes ๐Ÿ”„.

# in your project root directory
cd addons
git submodule add https://github.com/Ark2000/panku_console

C. Downloading from Godot Asset Library

Which is the same as downloading godot4_asset_library branch (always points to latest stable release version and only contains addons folder)


For more information about plugin installation, you can visit the corresponding Godot documentation ๐Ÿ“š.

Note: Panku Console currently only supports Godot version 4.x, 3.x support is still in progress.

Contribute ๐Ÿค

Do you want to contribute? Learn more in the contribution section. ๐ŸŒŸ๐Ÿ™Œ

Also, see Project Roadmap for more information about the development plan.

License ๐Ÿ“œ

MIT License

Copyright (c) 2022-present, Feo (k2kra) Wu

pankuconsole's People

Contributors

ark2000 avatar cheapmeow avatar eggbertx avatar mieldepoche avatar scriptsengineer avatar univeous avatar winston-yallow avatar worron 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

pankuconsole's Issues

Lack of docs to explain features.

  1. The code should be self-documented. It's a mess now.
  2. The runtime console itself should add more intuitive ways to help the user learn it more quickly.
  3. Consider building a project page.
  4. New project icon.

Add a minimal mode for REPL

like this below, only input box and hints are showed in the center.
This is great for its simplicity.
And you can switch between full/minimal mode very easily.
image

Improve the save ability

Currently some settings such as window transparency can not be remembered, this is a problem.

And if the program crashes, you will lost all layout saves.

More details will be described later.

Add categories in export panel.

05BCE2E9-6A1F-4142-94D8-E551CFCB1FEC

The final work should look like this in general.

@export_category("My Properties")
@export var number = 3
@export var string = ""

This will be supported.

Widgets system

image

I came up with this idea from the conversation with @scriptsengineer : #1

You can create floating widgets very quickly inside the console or in your code, they are capable of:

  1. being closed with a close icon.
  2. being dragged around and snap to the screen edge just like the console window.
  3. being clicked and then execute an expression.
  4. being update by an expression at a constant frequency.

There will be something maybe a manager window to manage multiple widgets plans and autoload widgets, more details will be explained later.

This feature will be of great help Imo since you can monitor expressions and call expressions conveniently.

More details

The whole system can be fully accessed inside the console.
More specifically, I added several functions in default_env.gd, explained below:

#Add a widget to watch an expression
w_watch(env:String, exp:String)
#Add an expression widget button
w_button(text:String, env:String, exp:String)
#Add a widget to monitor performance
w_perf
# Show all widgets plans
w_plans
#Save current widgets as a new plan
w_save_as(plan:String)
#Clear current widgets and load a plan
w_load(plan:String)
#Delete a widgets plan (Except for current plan)
w_delete(plan:String)
  • When you add or remove a widget by clicking the close button right in the widget, the plan will be automatically saved.
  • When quitting the current plan is memorized and will be loaded next time.

We need the ability to run a sequence of expressions.

Currently the so called PankuConsole is just REPL, we haven't reached its full potential yet.

There should be something we can run a sequence of expressions with basic flow controls.

Or even further, a runtime gdscript code interpreter to make it more powerful. (This is a pretty tough task, but maybe we can learn something from this project)

Add logger system

The logger window is not the same thing as REPL window.
It will support infinite logs and labels with powerful filter.

Add more built-in functions in default_env.gd

For examples,
show_fps() will allow to add a label on the top left screen displaying current frame rate.
fullscreen() will allow to make the game fullscreen

These simple functions would be very convenient.

Identify assignment expressions

Input like this player.hp = 100.0 will be translated to player.set("hp", 100.0)

Input expressions will be translated like this:

  • player.hp = 100.0 -> player.set("hp", 100.0)
  • allow_jump = false -> set("allow_jump", false)
  • hello = "hello = 123" -> set("hello", "hello = 123")
  • "hello = 123" -> "hello = 123" (This is not an assignment, so nothing happens)

The rule is simple, if we find an equal sign in the input expression and no quotation marks before the equal sign, we then split the input into two parts by the equal sign and apply the translation rules.

Hopefully the heuristic rule or RegEx is enough since I don't want to code an assignment parser for this.

The so called `environment` concept is redundant.

For example, instead this:

1

We can input expressions like that below:

2

With the power of auto-complete, this should be more intuitive and quicker.

What's more, the current predefined expressions in default_env.gd is tedious:

3

We can split these functions into several parts instead all huddled together.

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.