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

Port to Godot 4 #900

Merged
merged 208 commits into from
Sep 4, 2023
Merged

Port to Godot 4 #900

merged 208 commits into from
Sep 4, 2023

Conversation

OverloadedOrama
Copy link
Member

@OverloadedOrama OverloadedOrama commented Aug 15, 2023

This pull request is upgrading Pixelorama from Godot 3.5.2 to Godot 4.1. It should be working properly but more testing is required. The 3.x codebase can be found in the 0.x branch.

New features/improvements:

  • Overall speedups, most noticeably in the bucket fill algorithm. The below speeds are measured inside the Godot editor, release builds should be faster. Tested with Godot 3's GLES2 renderer and Godot 4's compatibility renderer.
WxH 3.x 4.x
1024x1024 1705 ms 732 ms
2048x2048 6722 ms 2664 ms
4096x4096 26502 ms 11044 ms
  • The brush increment/decrement shortcuts can now be changed.
  • The font size can be changed from the Preferences, separately from the display scale.
  • Every shader-based image effect is automatically working without the need to change renderers, and they all work now on the Web version. This comes at the cost of less compatibility, as the desktop version now requires OpenGL 3.3 minimum instead of 2.1, and the Web version requires WebGL 2 instead of WebGL 1.
  • Added missing shortcuts for buttons. TODO: Add more default shortcuts, if they are needed. Implements the final part of Shortcut Improvements #588.
  • 3D layers now support torus shapes.
  • Image effect animation now supports the tweening transition method of spring.
  • ~10000 less lines of code! Although most of them are related to themes and scenes.

Bug fixes:

  • Dividing by zero in value sliders and spinboxes no longer crashes the program.

Known issues:

Compatibility breaking issues:

  • Extensions made for v0.x will no longer work on v1.x.
  • Projects with 3d cels from v0.x may not be imported properly or at all.
  • Shortcut profiles from v0.x will not work on v1.x.

Stuff not tested yet:

  • CI EDIT: Seems to be working now.
  • Other platforms besides Linux EDIT: Also tested Windows and Web.
  • Extensions EDIT: Updated Voxelorama to Godot 4, seems to be working well.
  • ARM exporting (for devices such as the Raspberry Pi)

@OverloadedOrama OverloadedOrama marked this pull request as draft August 15, 2023 21:54
@OverloadedOrama OverloadedOrama merged commit 91bfef1 into master Sep 4, 2023
5 checks passed
@OverloadedOrama OverloadedOrama deleted the godot4 branch September 4, 2023 13:29
@theofficialgman
Copy link

ARM exporting (for devices such as the Raspberry Pi)

@OverloadedOrama just an fyi, I don't know how many people actually use your github releases for "pi".
At pi-apps for arm32 and arm64 (1000 pixelorama users) I build godot from source since the "pi" godot releases you use can't be used due to too high and inconsistent glibc requirements, in addition to poor choice of tuning variables.

@OverloadedOrama
Copy link
Member Author

For Godot 3.x, we were just using the 32-bit versions of the builds found here https://github.com/hiulit/Unofficial-Godot-Engine-Raspberry-Pi. Unfortunately I do not own a Raspberry Pi 4 or any ARM device that runs Linux to test the builds myself.

For Godot 4 I am hoping Godot will eventually provide ready-to-use ARM builds as requested here godotengine/godot-proposals#988. Otherwise we could build our own ARM release templates, most likely both for 32 and 64 bit, but I don't have neither any prior experience with ARM nor a device to test it, so help would be appreciated.

@theofficialgman
Copy link

theofficialgman commented Sep 9, 2023

Unfortunately I do not own a Raspberry Pi 4 or any ARM device that runs Linux to test the builds myself.

Well ARM hardware is everywhere (likely your phone, Nintendo Switch, lots of embedded devices) so I find it hard to believe you wouldn't have any you could readily use.

Regardless, I typically build on an always free (its really free) ARM Ampere server from Oracle https://www.oracle.com/cloud/free/ even though I have a lot of ARM hardware available to me. I have my free oracle ARM server setup with 200GB of storage, 24GB of ram, 4 cores, running Ubuntu Bionic ARM64 with an ARMhf bionic chroot for any 32bit ARM builds I might need to do. I can even test GUI applications on the server since I can do X11 forwarding (ssh -X) to the server.

Compiling Godot 4 on ARM32/64 is no different than any other platform. Following the official documentation works fine.

For example this is how I built my export templates on the ARM64 Bionic server (using GCC-8 since 7 currently has issues building Godot-4 godotengine/godot#79352 )

scons platform=linuxbsd target=template_release production=yes lto=full bits=64 arch=arm64 CC=gcc-8 CPP=cpp-8 CXX=g++-8 FC=gfortran-8

and this gives me godot.linuxbsd.template_release.arm64

@OverloadedOrama
Copy link
Member Author

The only ARM device I own is my phone, which already runs Android so I'm not sure how I can test Linux ARM builds on it. I didn't know about the Oracle ARM servers though, I will definitely take a look. Thanks for letting me know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants