arcade icon indicating copy to clipboard operation
arcade copied to clipboard

Create a series of tools to help support developers using Python Arcade.

Open DragonMoffon opened this issue 3 years ago • 11 comments

I intend to tackle this myself, but If you have an idea for a tool, leave it as a comment.

By tool, I mean an app to do a specific task. Every app would use Python arcade under the hood. Arcade is a purely code-based engine, making it hard for developers to create things such as GUI layouts, Complex Scenes, Hitboxes, etcetera. Providing tools to solve these issues will help speed up development time and can help bring people not so comfortable with programming into game development.

The long run could also provide tools to help make complex systems more digestible, such as a shader graph system.

We could also provide a toolkit that allows developers to create their own tools.

If this got off the ground, we could create a secondary importable library with all these tools collated together and provide ways for community members to submit their tools.

DragonMoffon avatar Jul 27 '22 08:07 DragonMoffon

We could use thetkinter library for stuff like this. tkinter is part of the Python standard library, so it wouldn't have to be installed. Additionally, it has tools to create a GUI graphically.

Search up these tools online, and they can be used as inspiration for the arcade tools.

eschan145 avatar Jul 27 '22 15:07 eschan145

An idea for a good GUI system could be to use imgui. I know that someone had previously made an Arcade connector for it, but if that’s unmaintained or lost, it would probably be fairly trivial to get working. Basically you just need to hand ImGui an OpenGL context more or less. Arcade’s GUI system is probably not optimal for building tools like this, but ImGui is what’s used in a significant number of modern GPU accelerated GUI applications.

Cleptomania avatar Jul 27 '22 16:07 Cleptomania

Yeah, we could, I was hoping to use the arcade's built-in GUI to show that we have a capable enough UI system of our own, but If it is more practical, I will look into ImGUI and Tkinter.

DragonMoffon avatar Jul 27 '22 19:07 DragonMoffon

https://github.com/kfields/arcade-imgui

einarf avatar Jul 27 '22 20:07 einarf

@Cleptomania

Arcade’s GUI system is probably not optimal for building tools like this

From my perspective, the discussion that inspired this ticket was about driving improvement in the GUI system as much as showing off what it can do, not making tools as fast as possible.

If there are tools you'd prefer to get done as fast as possible, which ones are they? A hitbox editor seemed like something that could be kept relatively simple and provide the foundations for other tools.

pushfoo avatar Jul 27 '22 21:07 pushfoo

I think a CLI tool that dumps lists of font names for TTF files might be worth shipping with arcade. It would do the following:

  1. Take a TTF filename as an argument, arcade-font-tool file.ttf
  2. List font names in the file, and maybe some other metadata
  3. Print a link to the font section of the programming guide (#1171)

The programming guide section would contain:

  1. The difference between filename and font name
  2. Recommendations for larger platform-specific tools for in-depth font inspection

It may also be worthwhile to make sure our error messages reflect a failure to load a font because a file wasn't found and a failure where the file was found, but the font name wasn't. Confusion over this was an issue during https://github.com/pyglet/pyglet/issues/622.

pushfoo avatar Aug 15 '22 10:08 pushfoo

I did make arcade into a command in 2.7. This could be expanded on : https://github.com/pythonarcade/arcade/blob/development/arcade/management/init.py

einarf avatar Aug 15 '22 13:08 einarf

Which command style is preferable?

Docker / git style:

$ arcade font-check font.tff
Format: OK! font.ttf appears to be valid
Contents: OK! 
1 font detected in file:
   'Serif Fontname', 100 glyphs
$

or a separate utility?

$ arcade-font font.tff
Format: OK! font.ttf appears to be valid
Contents: OK! 
1 font detected in file:
   'Serif Fontname', 100 glyphs
$

pushfoo avatar Aug 15 '22 14:08 pushfoo

arcade <command_name> <parameters>

The idea is that you can register a unique command name. Possibly this command is implemented in some Command class you implement.

einarf avatar Aug 16 '22 18:08 einarf

Would it make sense to make an arcade example command as well?

pushfoo avatar Aug 16 '22 18:08 pushfoo

Would it make sense to make an arcade example command as well?

That or something more generic like arcade run .... Not entirely sure. Even better if it could be created in a way were it didn't matter if the examples was in the arcade package or a separate package.

einarf avatar Aug 16 '22 18:08 einarf

Closing this due to inactivity. We can discuss projects like this on discord if someone gets extremely expired 😄

We do have the cli commands at least now, but I don't think anyone is using them + they might need updating.

einarf avatar Feb 18 '24 03:02 einarf