Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
DragonMoffon opened this issue Jul 27, 2022 · 12 comments
Closed

Comments

@DragonMoffon
Copy link
Collaborator

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.

@eschan145
Copy link
Contributor

eschan145 commented Jul 27, 2022

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.

@Cleptomania
Copy link
Member

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.

@DragonMoffon
Copy link
Collaborator Author

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.

@einarf
Copy link
Member

einarf commented Jul 27, 2022

@pushfoo
Copy link
Member

pushfoo commented Jul 27, 2022

@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
Copy link
Member

pushfoo commented Aug 15, 2022

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 (In-depth documentation on loading custom fonts #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 pyglet/pyglet#622.

@einarf
Copy link
Member

einarf commented Aug 15, 2022

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

@pushfoo
Copy link
Member

pushfoo commented Aug 15, 2022

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
$

@einarf
Copy link
Member

einarf commented Aug 16, 2022

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.

@pushfoo
Copy link
Member

pushfoo commented Aug 16, 2022

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

@einarf
Copy link
Member

einarf commented Aug 16, 2022

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
Copy link
Member

einarf commented Feb 18, 2024

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 einarf closed this as completed Feb 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants