A free & open-source 2D sprite editor, made with the Godot Engine! Available on Windows, Linux, macOS and the Web!

Pixelorama - your free and open-source sprite editor!

Made by Orama Interactive with the Godot Engine, written in GDScript!

Build Passing Build Passing Code Size Repository size License

Downloads Discord Chat Crowdin Localized % Mentioned in Awesome Godot

Pixelorama's UI

Make sure to visit our website for more information! https://www.orama-interactive.com

Join our Discord community server​ where we can discuss about Pixelorama and all our other projects! https://discord.gg/GTMtr8s

If you like, consider helping us by sponsoring this project! It would enable us to focus more on Pixelorama, and make more projects in the future!

Support us on: Become a Patron!

Download

Stable versions:

You can also find early access builds in the GitHub Actions page. There's also a Web version available. Keep in mind that these versions will have bugs and are unstable. Unless you're interested in testing the main branch of Pixelorama, it's recommended that you stick to a stable version.

Documentation

You can find Online Documentation for Pixelorama here: https://orama-interactive.github.io/Pixelorama-Docs

It's still work in progress so there are some pages missing. If you want to contribute, you can do so in Pixelorama-Docs' GitHub Repository.

Cloning Instructions

Pixelorama uses Godot 3.4, so you will need to have it in order to run the project. Older versions may not work. As of right now, most of the code is written using GDScript, so the mono version of Godot is not required, but Pixelorama should also work with it.

Current features as of version v0.9:

  • 16 different tools to help you draw, which you can map to both of your left and right mouse buttons.
  • Are you an animator? Pixelorama has its own animation timeline just for you! You can work at an individual cel level, where each cel refers to a unique layer and frame. Supports onion skinning, cel linking, motion drawing and frame grouping with tags.
  • Different tool options for each of the mouse buttons.
  • Custom brushes, including random brushes.
  • Create or import custom palettes.
  • Pattern filling! Use the bucket tool to fill out an area with a pattern of your choosing.
  • Import images and edit them inside Pixelorama. If you import multiple files, they will be added as individual animation frames. Importing spritesheets is also supported.
  • Export your gorgeous art as PNG or GIF files. Exporting your projects as spritesheets is also possible.
  • Pixel perfect mode for perfect lines, for the pencil, eraser & lighten/darken tools.
  • Autosave support, with data recovery in case of a software crash.
  • Horizontal & vertical mirrored drawing.
  • Tile Mode for pattern creation.
  • Rulers and guides.
  • Rectangular & isometric grid types.
  • Scale, crop, rotate, flip, color invert, HSV-adjust, desaturate and generate outlines and gradients in your images!
  • Multi-language localization support! See our Crowdin page for more details.

Special thanks to

Owner
Orama Interactive
We are an independent team of game developers and our mission is to create fun games and software, to entertain people and solve problems.
Orama Interactive
Comments
  • Pixelorama snap

    Pixelorama snap

    Hi!

    I saw that someone ( probably @Schweini07 ) already registered the "pixelorama" name in the snap store. This is great! I have already a working snap version of pixelorama 0.6 and I would like to share it with you so you don't have to waste your time reinventing the wheel. HERE there is the compilable base ready to be snapped with snapcraft . To test the snap in a linux distro you only have to unzip the file , cd in it and launch snapcraft and sudo snap install pixelorama_0.6_amd64.snap --dangerous. As you can see the ziped file contain only a "files" directory (containing the same files in your [Linux 64-bit].zip download) and a snap directory containing the snapcraft.yaml file.

    I hope this will help you share your great app.

    Thank you for your great work. Regards, AC Snap Pixelorama

  • Add Rectangle and Ellipse tools

    Add Rectangle and Ellipse tools

    Closes #359

    This PR adds a tool that allows you to draw shapes, like rectangles and ellipses. It also allows you to draw shapes with a 1:1 aspect ratio (so you can draw circles and squares), by holding down the shift key.

    TODO:

    • ~~Cleaning up~~
    • ~~Add the ability to move the shape's center to the click origin by pressing CTRL~~
    • ~~Add blue theme buttons~~
    • ~~Fix preview not working when drawing with the right mouse button~~
    • ~~Rework brush size~~
    • ~~Add config functions~~
    • ~~Fix some pixels not being filled when drawing a tall 4 pixels wide ellipse~~
    • ~~There's a bug where sometimes drawing a shape will spam the output with errors, but I haven't found a way to consistently reproduce it.~~ I think this was fixed

    I'll add images and gifs of the tool in action later today.

    Edit 1: Added the ability to move the shape's center to the click origin, but with ALT instead of CTRL. I can change it if CTRL is preferable. Maybe we should add these commands to the keybindings? I also added a checkbox that allows you to draw filled shapes. A better algorithm for drawing the filled ellipse might be needed.

    Edit 2: I'm going to make this PR ready for review now. Here's a video showing off the tool in action:

    https://user-images.githubusercontent.com/47753585/108103743-220bae80-7069-11eb-9d31-ef5c4784c628.mp4

  • Weird crash when using fill bucket

    Weird crash when using fill bucket

    I've noticed a very weird bug that leads to a crush when using the fill bucket tool. Steps to reproduce:

    1. Select the bucket tool
    2. Change the selected color
    3. Add it to the preset colors (the palette)
    4. Change the color again
    5. Click on the canvas to fill
    6. The pixels get filled as normal, but Pixelorama crashes.

    I haven't discovered why this happens, and it doesn't seem like a problem with my code, because the colors get filled, which means that it's not the flood fill algorithm's fault. This also means that the frame gets drawn, but the next one leads to a crush. I'm starting to think whether it's a problem with Godot and the Color Picker itself, but if any of you has any other ideas, let me know!

    fill bucket CRUSH

  • Flatpak: No brushes or patterns

    Flatpak: No brushes or patterns

    Hi,

    The "Patterns" menu shows up empty and the brushes only have three variants. Also, I needed to import all the pallets myself. Is this normal, Is there anyway of importing them manually? (Fedora 32 using Flatpak) patterns brushes

  • XDG basedir standard on X11 Godot platforms

    XDG basedir standard on X11 Godot platforms

    Make Palettes/Brushes get loaded/saved in appropriate locations as specified by the XDG basedir standard, for easier usage of standard linux/bsd packaging methods and for better per-user usability.

  • request: integrate it as an addon

    request: integrate it as an addon

    This would really make this worthwhile using over other tools, as it would allow us to create and edit sprites directly inside godot without leaving the ide

  • Improvement: Better selections and more selection options

    Improvement: Better selections and more selection options

    As of right now, the program lacks a variety of selection tools, such as selection by color, select similar area (smart selection), freehand selection, ellipse selection, lasso etc.

    But even for the rectangular selection, issues are visible. For example you cannot add another rectangle or remove an area within your already selected area. Other programs let you use rectangle selection, then press shift and add another rectangle to your selection. Or press control and remove a rectangle from your selection. Something similar should be implemented and be used for future selection tools too, maybe with different keys (instead of shift and control).

    Furthermore, it would be nice to have some tool options for the selection. For example a clear "copy" and "cut" or "move selection" and "move content" button that you can press instead of using the shortcuts. Another useful addition would be a "copy visible" button, which practically copies not only the current layer's selection but every other visible pixel from the rest of the layers, above or under the selected one.

    Lastly, a personal preference, I would like the outline of the selection to be animated, moving lines to indicate that something is going on within that area with the fancy outline.

    A selection sub-menu on the top bar could also be added with more general selection options. The copy, cut, copy visible etc could be placed there, as well as invert selection, expand selection, clear selection, select all etc

    Overloaded Edit: Adding a list of selection tools that would be nice to be added, because I like lists.

    • [x] By color selection tool
    • [x] Magic wand selection tool
    • [x] Elliptical selection tool
    • [x] Lasso selection tool
    • [x] Polygon selection tool
    • [ ] Paint brush selection tool
  • Reference Images

    Reference Images

    Affects #565.

    Usecase:

    A friend of mine was looking for a pixel editor that was, well, not the one we've all heard of, and considers high-resolution reference images to be critical to her rotoscoping workflow.

    Images:

    image

    Usage:

    • New reference image is a new image open type.
    • Reference images are not stored in the project file due to size reasons.
    • Reference images may be scaled and positioned in project space in a newly added panel (currently appearing as a tab of Tools, which is unfortunate)

    TODO:

    • Figure out how to make it work with the UI layout
    • Anything I forgot (it appears that Pixelorama code requires changing things in a lot of places, and it's possible I forgot something)

    Rationale of implementation decisions:

    Layers were not used as the state of the code makes this difficult.

    Neither BaseCel or BaseLayer are capable of providing custom render logic (which seems odd - even if GroupCel did nothing as part of what appears to be a general 'flattening' of cels, it would still be pertinent to have the cels perform rendering by themselves given the clear intent of the design)

    In addition, the assumption would be that reference layers probably do not want to be disposable cels (as a new blank frame would cause the reference image to disappear, which is not necessarily wanted)

    Guides on the other hand have complete control of their rendering, and therefore I chose the design of guides as the basis of the feature.

    Reference images are expected to be large and probably in a format such as PNG or JPEG. Therefore reference images are linked by absolute file path. This is up for potential change but doing so could be hazardous.

    It's unclear how exactly changes are expected to propagate - I presently assume project_changed is the global "anything important was modified" function, and this appears to work reliably enough.

  • Tile mode fixes (Heavy testing required)

    Tile mode fixes (Heavy testing required)

    The New Offset system for tiling also introduced a new series of bugs, (especially when two tiles overlapped) This pull will address the following issues and will make the offset system relatively more stable. Heavy testing is required for this pull: (All these changes are spaghetti-linked to one another and hence included in a single pull)

    1. If mouse is above area overlapped by two tiles then the tile drawn above has higher priority
    2. If mouse is above area overlapped by a central tile and another tile then the central/main tile is given priority
    3. All the other tiles are drawn below the main tile
    4. Fixed the issue of "dark tiles" (tiles appearing to be there even if no tile is there)
    5. The offset dialog now shows only relevant information according to mode selected
    6. Bucket tool still will only work on main tile (intentional)
    7. Allow loading masks for custom tile (the default is already set to rectangle so users who want to use simple tiling won't need the set-up)

    https://user-images.githubusercontent.com/77773850/180641196-eb270e9e-f281-491b-bcde-17f0da82e45f.mp4

  • KDE Plasma treats Pixelorama as one of Godot's windows when they're both open

    KDE Plasma treats Pixelorama as one of Godot's windows when they're both open

    Description

    When Godot is opened, and then Pixelorama is opened, KDE Plasma treats Pixelorama as one of Godot's windows. This only happens when Godot is opened first.

    Steps to Reproduce

    1. Open Godot
    2. Open Pixelorama

    Behavior

    In the taskbar, Godot will have a green plus on its icon, meaning that there are multiple windows open under Godot. image Clicking on the Godot icon gives me the option to either bring the Godot window or the Pixelorama window to the foreground.

    Expected Behavior

    Pixelorama is treated as it's own application.

    Additional Information

    • Godot version: 3.1.2.stable.flathub
    • Pixelorama version: 0.5
    • KDE Plasma version: 5.17.4
  • Use shaders instead of Gdscript for HSV adjustments

    Use shaders instead of Gdscript for HSV adjustments

    I noticed that the performance drops significantly when you have a large picture you are working on. I tried to make a 1000x1000 art work (which is not that big) and if I try filling it with color the program freezes for a few seconds.. I then try adjusting the HSV from the "Image" menu and the program crashes.

    I tried to dig up the issue and I found the following function:

    func adjust_hsv(img: Image, delta_h : float, delta_s : float, delta_v : float, pixels : Array) -> void:
    	img.lock()
    	for i in pixels:
    		var c : Color = img.get_pixelv(i)
    		# Hue
    		var hue = range_lerp(c.h,0,1,-180,180)
    		hue = hue + delta_h
    
    		while(hue >= 180):
    			hue -= 360
    		while(hue < -180):
    			hue += 360
    
    		# Saturation
    		var sat = c.s
    		if delta_s > 0:
    			sat = range_lerp(delta_s,0,100,c.s,1)
    		elif delta_s < 0:
    			sat = range_lerp(delta_s,-100,0,0,c.s)
    
    		# Value
    		var val = c.v
    		if delta_v > 0:
    			val = range_lerp(delta_v,0,100,c.v,1)
    		elif delta_v < 0:
    			val = range_lerp(delta_v,-100,0,0,c.v)
    
    		c.h = range_lerp(hue,-180,180,0,1)
    		c.s = sat
    		c.v = val
    		img.set_pixelv(i,c)
    
    	img.unlock()
    
    

    This for loop is apparently very taxing in terms of computational power, and it is also used for the "preview" window.

    If there is no more efficient workaround solution for this, I think it would be wise to make it be called out only when the user confirms his adjustments. it shouldn't be used to update the little "preview" window.

    For the preview, I suggest that a simple hsv adjustment shader is used. Shaders are faster and more efficient for "realtime" previews.

    Another additional thing that I found interesting is this https://github.com/Coldragon/godot-shader-to-image . Essentially a shader can be turned into an image, so it is possible to add extra functionality and effects more easily using shaders. I am still experimenting with this approach.

    The following are my Laptop specs: Nvidia Gtx 1060 intel Core i7 16 GB ram Windows 10

  • Mistake about the translation of zh_CN

    Mistake about the translation of zh_CN

    Pixelorama version:

    v0.10.3

    OS/device including version:

    Linux Mint 21.1

    Issue description:

    There is a mistake about the translation of zh_CN

    Steps to reproduce: Open your Pixelorama and look at the toolbar which is at the left of your window, the eighth one from the top which should be "放大镜" rather than "油漆桶" because there is already one below .

    zoom_mistake.png bucket.png

  • Can't open images in hidden directories (Ubuntu)

    Can't open images in hidden directories (Ubuntu)

    Pixelorama version:

    0.10

    OS/device including version:

    Ubuntu 22.04 LTS (also occurred on Ubuntu 20.04 LTS)

    Issue description:

    The file dialog prevents me from being able to open files that are in hidden directories. Typing the directory/file path in either of the text boxes does nothing when I hit Enter. When I show hidden files and double-click a hidden directory, it goes to the hidden directory (for example the path at the top says /home/user/.local) but none of the files or folders inside the hidden directory are displayed; the list is empty.

    Also, even when I run the app from the terminal, for example pixelorama /home/user/.local/inv.png, Pixelorama opens but gives me an error: Can't load file 'inv.png'. Error code 12 However, if I copy that exact inv.png and put it in a non-hidden directory, it works perfectly and imports the image.

    Steps to reproduce:

    In the file dialog:

    1. Open Pixleorama
    2. Open the File menu and click Open... (or just press Ctrl+O)
    3. You can either 1. Click on the eye icon to show hidden files and then double-click on a hidden directory (such as ~/.local) or 2. type the path to the hidden file in the File: text box and hit Enter
    4. Depending on which you do, either 1. the hidden directory will display as empty or 2. the file dialog will do nothing.

    In the terminal:

    1. Open a terminal
    2. Type pixelorama followed by a space and the path to the file you want to open, for example: pixelorama /home/user/.local/image.png, then hit Enter
    3. Pixelorama will open, but once you close the spash screen you see a dialog like this one: image

    This is rather annoying, especially considering that other image-editing apps with non-native file dialogs (like Krita and Gimp) can open hidden files.

  • Mac: Built-in palettes not found

    Mac: Built-in palettes not found

    Pixelorama version: 0.10.3, both .dmg and homebrew

    OS/device including version: Mac M1 Max

    Issue description: The builtin palettes are not found in the UI

    Steps to reproduce: Install Pixelorama. Look at the dropdown in the Palettes menu. There are no palettes.

    Reason

    If you create a new palette, it is saved in /Applications/Pixelorama.app/Contents/MacOS/pixelorama_data/Palettes. The included palettes are stored in /Applications/Pixelorama.app/Contents/Resources/pixelorama_data/Palettes. If you copy the included palettes from Resources to Contents/MacOS, they show up in the UI.

  • Mac M1: resizing window by dragging corner causes crash

    Mac M1: resizing window by dragging corner causes crash

    Pixelorama version: 0.10.3. Tried both .dmg and homebrew versions.

    OS/device including version: Apple M1 Max

    Issue description: Resized window by dragging a corner. App crashed.

    Steps to reproduce: Open Pixelorama. Try to drag a corner of the window. If you drag very quickly and release your mouse button immediately, it's fine. If you keep dragging, it crashes reliably.

    ** "Report to Apple" details **

    -------------------------------------
    Translated Report (Full Report Below)
    -------------------------------------
    
    Process:               Pixelorama [35172]
    Path:                  /Applications/Pixelorama.app/Contents/MacOS/Pixelorama
    Identifier:            com.orama-interactive.pixelorama
    Version:               0.10.3 (0.10.3)
    Code Type:             ARM-64 (Native)
    Parent Process:        launchd [1]
    User ID:               501
    
    Date/Time:             2022-12-06 13:39:56.5687 -0500
    OS Version:            macOS 13.0.1 (22A400)
    Report Version:        12
    Anonymous UUID:        CABB5D53-D7C7-30E9-CA4E-BC0BB33F4ADD
    
    Sleep/Wake UUID:       804FCF99-B1E3-4A8C-A9D3-88553DC61673
    
    Time Awake Since Boot: 210000 seconds
    Time Since Wake:       13974 seconds
    
    System Integrity Protection: enabled
    
    Crashed Thread:        7
    
    Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
    Exception Codes:       KERN_INVALID_ADDRESS at 0x0000640570cf4420
    Exception Codes:       0x0000000000000001, 0x0000640570cf4420
    
    Termination Reason:    Namespace SIGNAL, Code 11 Segmentation fault: 11
    Terminating Process:   exc handler [35172]
    
    VM Region Info: 0x640570cf4420 is not in any region.  Bytes after previous region: 4420877108257  
          REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
          MALLOC_NANO (reserved)   600018000000-600020000000 [128.0M] rw-/rwx SM=NUL  ...(unallocated)
    --->  
          UNUSED SPACE AT END
    
    Thread 0::  Dispatch queue: com.apple.main-thread
    0   AppKit                        	       0x1a3690130 +[NSCursor _windowResizeNorthWestSouthEastCursor] + 0
    1   AppKit                        	       0x1a3506d7c -[NSWindow(NSWindowResizing) _cursorForResizeDirection:] + 632
    2   AppKit                        	       0x1a368fa0c -[NSWindow(NSWindowResizing) _resizeWithEvent:] + 1696
    3   AppKit                        	       0x1a35afef4 -[NSTitledFrame attemptResizeWithEvent:] + 156
    4   AppKit                        	       0x1a35afce8 -[NSThemeFrame handleMouseDown:] + 200
    5   AppKit                        	       0x1a3623cc4 -[NSThemeFrame mouseDown:] + 32
    6   AppKit                        	       0x1a354fce0 -[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:] + 3420
    7   AppKit                        	       0x1a34d98f0 -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 1984
    8   AppKit                        	       0x1a34d8f5c -[NSWindow(NSEventRouting) sendEvent:] + 284
    9   AppKit                        	       0x1a34d8094 -[NSApplication(NSEvent) sendEvent:] + 1920
    10  Pixelorama                    	       0x1003a6b44 0x1003a4000 + 11076
    
    Thread 1:
    0   libsystem_pthread.dylib       	       0x1a0070e18 start_wqthread + 0
    
    Thread 2:
    0   libsystem_pthread.dylib       	       0x1a0070e18 start_wqthread + 0
    
    Thread 3:
    0   libsystem_pthread.dylib       	       0x1a0070e18 start_wqthread + 0
    
    Thread 4:
    0   libsystem_pthread.dylib       	       0x1a0070e18 start_wqthread + 0
    
    Thread 5:
    0   libsystem_kernel.dylib        	       0x1a003a5e4 __psynch_cvwait + 8
    1   libsystem_pthread.dylib       	       0x1a0076638 _pthread_cond_wait + 1232
    2   libc++.1.dylib                	       0x19ffc3ac4 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   Pixelorama                    	       0x101b1d684 _IP_ResolverPrivate::_thread_function(void*) + 156
    4   libsystem_pthread.dylib       	       0x1a0070e2c thread_start + 8
    
    Thread 6:
    0   libsystem_kernel.dylib        	       0x1a003a5e4 __psynch_cvwait + 8
    1   libsystem_pthread.dylib       	       0x1a0076638 _pthread_cond_wait + 1232
    2   libc++.1.dylib                	       0x19ffc3ac4 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   Pixelorama                    	       0x1016e0410 0x1003a4000 + 20169744
    4   libsystem_pthread.dylib       	       0x1a0070e2c thread_start + 8
    
    Thread 7 Crashed:
    0   libobjc.A.dylib               	       0x19fd09820 objc_msgSend + 32
    1   AppleMetalOpenGLRenderer      	       0x111a61788 GLDTextureRec::getTextureResource(unsigned int, bool) + 352
    2   AppleMetalOpenGLRenderer      	       0x111a6ad7c GLDContextRec::addRenderPassResources() + 64
    3   AppleMetalOpenGLRenderer      	       0x111a6b030 GLDContextRec::beginRenderPass() + 552
    4   AppleMetalOpenGLRenderer      	       0x111a8165c gldRenderVertexArray(GLDContextRec*, unsigned int, unsigned int, int, int, unsigned int, void const*, int, void const*) + 496
    5   GLEngine                      	       0x1ee689254 glDrawArrays_ACC_Exec + 400
    6   Pixelorama                    	       0x1009ff164 0x1003a4000 + 6664548
    7   libsystem_pthread.dylib       	       0x1a0070e2c thread_start + 8
    
    Thread 8:
    0   libsystem_pthread.dylib       	       0x1a0070e18 start_wqthread + 0
    
    Thread 9:: caulk.messenger.shared:17
    0   libsystem_kernel.dylib        	       0x1a0036d6c semaphore_wait_trap + 8
    1   caulk                         	       0x1a94eecfc caulk::mach::semaphore::wait_or_error() + 28
    2   caulk                         	       0x1a94d1634 caulk::concurrent::details::worker_thread::run() + 56
    3   caulk                         	       0x1a94d1278 void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*> > >(void*) + 96
    4   libsystem_pthread.dylib       	       0x1a007606c _pthread_start + 148
    5   libsystem_pthread.dylib       	       0x1a0070e2c thread_start + 8
    
    Thread 10:: com.apple.audio.IOThread.client
    0   libsystem_kernel.dylib        	       0x1a0036df0 mach_msg2_trap + 8
    1   libsystem_kernel.dylib        	       0x1a00488d8 mach_msg2_internal + 80
    2   libsystem_kernel.dylib        	       0x1a003f638 mach_msg_overwrite + 540
    3   libsystem_kernel.dylib        	       0x1a003716c mach_msg + 24
    4   CoreAudio                     	       0x1a246f1bc HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int) + 104
    5   CoreAudio                     	       0x1a2348688 HALC_ProxyIOContext::IOWorkLoop() + 3316
    6   CoreAudio                     	       0x1a234738c invocation function for block in HALC_ProxyIOContext::HALC_ProxyIOContext(unsigned int, unsigned int) + 100
    7   CoreAudio                     	       0x1a24c937c HALB_IOThread::Entry(void*) + 88
    8   libsystem_pthread.dylib       	       0x1a007606c _pthread_start + 148
    9   libsystem_pthread.dylib       	       0x1a0070e2c thread_start + 8
    
    Thread 11:: com.apple.NSEventThread
    0   libsystem_kernel.dylib        	       0x1a0036df0 mach_msg2_trap + 8
    1   libsystem_kernel.dylib        	       0x1a00488d8 mach_msg2_internal + 80
    2   libsystem_kernel.dylib        	       0x1a003f638 mach_msg_overwrite + 540
    3   libsystem_kernel.dylib        	       0x1a003716c mach_msg + 24
    4   CoreFoundation                	       0x1a0155bdc __CFRunLoopServiceMachPort + 160
    5   CoreFoundation                	       0x1a01544c8 __CFRunLoopRun + 1232
    6   CoreFoundation                	       0x1a01538a4 CFRunLoopRunSpecific + 612
    7   AppKit                        	       0x1a34d6248 _NSEventThread + 172
    8   libsystem_pthread.dylib       	       0x1a007606c _pthread_start + 148
    9   libsystem_pthread.dylib       	       0x1a0070e2c thread_start + 8
    
    Thread 12:
    0   libsystem_pthread.dylib       	       0x1a0070e18 start_wqthread + 0
    
    
    Thread 7 crashed with ARM Thread State (64-bit):
        x0: 0x0000600001604410   x1: 0x00000001f04f9888   x2: 0x0000000000000102   x3: 0x0000000000000000
        x4: 0x0000000000000004   x5: 0x0000000000003960   x6: 0x0000600002d5f960   x7: 0x0000000000000228
        x8: 0x0000000111aa4a18   x9: 0x0000000111aa49f0  x10: 0x6ae1600001604410  x11: 0x0000000000000002
       x12: 0x0000000000000001  x13: 0x00000000000004d1  x14: 0x0000640570cf4410  x15: 0x0000640570cf4410
       x16: 0x0000640570cf4410  x17: 0x0000000111aac308  x18: 0x0000000000000000  x19: 0x0000000000000000
       x20: 0x000060000185b480  x21: 0x000000013604c120  x22: 0x000000000000000d  x23: 0x000000013604c15c
       x24: 0x00000001380c2a68  x25: 0x0000000138022280  x26: 0x0000000136894600  x27: 0x0000000000000000
       x28: 0x0000000000000000   fp: 0x000000016feb6630   lr: 0x0000000111a61788
        sp: 0x000000016feb65f0   pc: 0x000000019fd09820 cpsr: 0x20001000
       far: 0x0000640570cf4420  esr: 0x92000005 (Data Abort) byte read Translation fault
    
    Binary Images:
           0x1a3373000 -        0x1a427afff com.apple.AppKit (6.9) <af9f6891-70ad-3c26-af08-b747344892d2> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
           0x1003a4000 -        0x102367fff com.orama-interactive.pixelorama (0.10.3) <77a15280-6e42-3897-a1cc-5934e7abbef4> /Applications/Pixelorama.app/Contents/MacOS/Pixelorama
           0x1a006f000 -        0x1a007bffb libsystem_pthread.dylib (*) <886caca0-5762-3640-8db2-3fa3b911c062> /usr/lib/system/libsystem_pthread.dylib
           0x1a0036000 -        0x1a006effb libsystem_kernel.dylib (*) <6d6644d3-3db3-34c4-b1e3-c675ec5360f0> /usr/lib/system/libsystem_kernel.dylib
           0x19ffb7000 -        0x1a001dff3 libc++.1.dylib (*) <ae8ea4b2-b8fd-33e3-a0af-0b7485ab97c0> /usr/lib/libc++.1.dylib
           0x19fd00000 -        0x19fd45d9f libobjc.A.dylib (*) <e20fe24e-bbda-3944-9cfc-8e43a463400b> /usr/lib/libobjc.A.dylib
           0x111a40000 -        0x111aabfff com.apple.AppleMetalOpenGLRenderer (1.0) <04c45855-3ade-3d14-941f-60c2e52b6d6f> /System/Library/Extensions/AppleMetalOpenGLRenderer.bundle/Contents/MacOS/AppleMetalOpenGLRenderer
           0x1ee5c2000 -        0x1ee72fff7 GLEngine (*) <38e39114-7bb1-351c-9ffe-a57f17c10fe9> /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLEngine.bundle/GLEngine
           0x1a94cf000 -        0x1a94f8fff com.apple.audio.caulk (1.0) <445d1341-52c5-3468-ba85-f01410317744> /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk
           0x1a216e000 -        0x1a284dfff com.apple.audio.CoreAudio (5.0) <ad0eb60a-ba0d-3e1d-9a5b-ddc59e71d77d> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
           0x1a00d4000 -        0x1a05abfff com.apple.CoreFoundation (6.9) <f4ff83fc-e62c-30b4-b3a9-876c8a1fd595> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
                   0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???
    
    External Modification Summary:
      Calls made by other processes targeting this process:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
      Calls made by this process:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
      Calls made by all processes on this machine:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
    
    VM Region Summary:
    ReadOnly portion of Libraries: Total=1.0G resident=0K(0%) swapped_out_or_unallocated=1.0G(100%)
    Writable regions: Total=1.7G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.7G(100%)
    
                                    VIRTUAL   REGION 
    REGION TYPE                        SIZE    COUNT (non-coalesced) 
    ===========                     =======  ======= 
    Accelerate framework               640K        5 
    Activity Tracing                   256K        1 
    CG backing stores                 5376K        8 
    CG image                          1248K       10 
    ColorSync                          560K       25 
    CoreAnimation                      128K        8 
    CoreGraphics                        48K        3 
    CoreUI image data                  448K        6 
    Foundation                          16K        1 
    Foundation (reserved)               16K        1         reserved VM address space (unallocated)
    Image IO                          1024K        1 
    Kernel Alloc Once                   32K        1 
    MALLOC                           360.5M       74 
    MALLOC guard page                  192K        9 
    MALLOC_MEDIUM (reserved)         928.0M        8         reserved VM address space (unallocated)
    MALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)
    OpenGL GLSL                        256K        3 
    STACK GUARD                       56.2M       13 
    Stack                             14.4M       13 
    VM_ALLOCATE                       11.8M      318 
    __AUTH                             696K      183 
    __AUTH_CONST                      12.7M      349 
    __CTF                               756        1 
    __DATA                            3192K      341 
    __DATA_CONST                      16.3M      357 
    __DATA_DIRTY                       802K      118 
    __FONT_DATA                        2352        1 
    __GLSLBUILTINS                    5174K        1 
    __LINKEDIT                       764.9M        9 
    __OBJC_CONST                      1561K      158 
    __OBJC_RO                         65.1M        1 
    __OBJC_RW                         1981K        1 
    __TEXT                           282.6M      373 
    dyld private memory                256K        1 
    mapped file                       81.0M       28 
    shared memory                     1424K       16 
    ===========                     =======  ======= 
    TOTAL                              2.9G     2447 
    TOTAL, minus reserved VM space     1.7G     2447 
    
    
    
    -----------
    Full Report
    -----------
    
    {"app_name":"Pixelorama","timestamp":"2022-12-06 13:39:56.00 -0500","app_version":"0.10.3","slice_uuid":"77a15280-6e42-3897-a1cc-5934e7abbef4","build_version":"0.10.3","platform":1,"bundleID":"com.orama-interactive.pixelorama","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"macOS 13.0.1 (22A400)","roots_installed":0,"name":"Pixelorama","incident_id":"AB2EBAD9-A3BA-4C8E-A9FE-C21FDCC04BBF"}
    {
      "uptime" : 210000,
      "procRole" : "Foreground",
      "version" : 2,
      "userID" : 501,
      "deployVersion" : 210,
      "modelCode" : "MacBookPro18,2",
      "coalitionID" : 85135,
      "osVersion" : {
        "train" : "macOS 13.0.1",
        "build" : "22A400",
        "releaseType" : "User"
      },
      "captureTime" : "2022-12-06 13:39:56.5687 -0500",
      "incident" : "AB2EBAD9-A3BA-4C8E-A9FE-C21FDCC04BBF",
      "pid" : 35172,
      "translated" : false,
      "cpuType" : "ARM-64",
      "roots_installed" : 0,
      "bug_type" : "309",
      "procLaunch" : "2022-12-06 13:39:44.8269 -0500",
      "procStartAbsTime" : 5256007262364,
      "procExitAbsTime" : 5256287782903,
      "procName" : "Pixelorama",
      "procPath" : "\/Applications\/Pixelorama.app\/Contents\/MacOS\/Pixelorama",
      "bundleInfo" : {"CFBundleShortVersionString":"0.10.3","CFBundleVersion":"0.10.3","CFBundleIdentifier":"com.orama-interactive.pixelorama"},
      "storeInfo" : {"deviceIdentifierForVendor":"5452D05D-DAFA-5EB6-AD20-83A01D98285A","thirdParty":true},
      "parentProc" : "launchd",
      "parentPid" : 1,
      "coalitionName" : "com.orama-interactive.pixelorama",
      "crashReporterKey" : "CABB5D53-D7C7-30E9-CA4E-BC0BB33F4ADD",
      "wakeTime" : 13974,
      "sleepWakeUUID" : "804FCF99-B1E3-4A8C-A9D3-88553DC61673",
      "sip" : "enabled",
      "vmRegionInfo" : "0x640570cf4420 is not in any region.  Bytes after previous region: 4420877108257  \n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      MALLOC_NANO (reserved)   600018000000-600020000000 [128.0M] rw-\/rwx SM=NUL  ...(unallocated)\n--->  \n      UNUSED SPACE AT END",
      "exception" : {"codes":"0x0000000000000001, 0x0000640570cf4420","rawCodes":[1,109974530245664],"type":"EXC_BAD_ACCESS","signal":"SIGSEGV","subtype":"KERN_INVALID_ADDRESS at 0x0000640570cf4420"},
      "termination" : {"flags":0,"code":11,"namespace":"SIGNAL","indicator":"Segmentation fault: 11","byProc":"exc handler","byPid":35172},
      "vmregioninfo" : "0x640570cf4420 is not in any region.  Bytes after previous region: 4420877108257  \n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      MALLOC_NANO (reserved)   600018000000-600020000000 [128.0M] rw-\/rwx SM=NUL  ...(unallocated)\n--->  \n      UNUSED SPACE AT END",
      "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
      "faultingThread" : 7,
      "threads" : [{"id":4112649,"queue":"com.apple.main-thread","frames":[{"imageOffset":3264816,"symbol":"+[NSCursor _windowResizeNorthWestSouthEastCursor]","symbolLocation":0,"imageIndex":0},{"imageOffset":1654140,"symbol":"-[NSWindow(NSWindowResizing) _cursorForResizeDirection:]","symbolLocation":632,"imageIndex":0},{"imageOffset":3262988,"symbol":"-[NSWindow(NSWindowResizing) _resizeWithEvent:]","symbolLocation":1696,"imageIndex":0},{"imageOffset":2346740,"symbol":"-[NSTitledFrame attemptResizeWithEvent:]","symbolLocation":156,"imageIndex":0},{"imageOffset":2346216,"symbol":"-[NSThemeFrame handleMouseDown:]","symbolLocation":200,"imageIndex":0},{"imageOffset":2821316,"symbol":"-[NSThemeFrame mouseDown:]","symbolLocation":32,"imageIndex":0},{"imageOffset":1952992,"symbol":"-[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:]","symbolLocation":3420,"imageIndex":0},{"imageOffset":1468656,"symbol":"-[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:]","symbolLocation":1984,"imageIndex":0},{"imageOffset":1466204,"symbol":"-[NSWindow(NSEventRouting) sendEvent:]","symbolLocation":284,"imageIndex":0},{"imageOffset":1462420,"symbol":"-[NSApplication(NSEvent) sendEvent:]","symbolLocation":1920,"imageIndex":0},{"imageOffset":11076,"imageIndex":1}]},{"id":4112673,"frames":[{"imageOffset":7704,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":2}]},{"id":4112674,"frames":[{"imageOffset":7704,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":2}]},{"id":4112679,"frames":[{"imageOffset":7704,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":2}]},{"id":4112680,"frames":[{"imageOffset":7704,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":2}]},{"id":4112695,"frames":[{"imageOffset":17892,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":3},{"imageOffset":30264,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":2},{"imageOffset":51908,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":4},{"imageOffset":24614532,"symbol":"_IP_ResolverPrivate::_thread_function(void*)","symbolLocation":156,"imageIndex":1},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":2}]},{"id":4112697,"frames":[{"imageOffset":17892,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":3},{"imageOffset":30264,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":2},{"imageOffset":51908,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":4},{"imageOffset":20169744,"imageIndex":1},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":2}]},{"triggered":true,"id":4112698,"threadState":{"x":[{"value":105553139352592},{"value":8326715528,"objc-selector":"sampleCount"},{"value":258},{"value":0},{"value":4},{"value":14688},{"value":105553163843936},{"value":552},{"value":4591340056,"symbolLocation":27216,"symbol":"glrPixelFormatToCompatibleSamplerTypeTable"},{"value":4591340016,"symbolLocation":27176,"symbol":"glrPixelFormatToCompatibleSamplerTypeTable"},{"value":7701542390919611408},{"value":2},{"value":1},{"value":1233},{"value":109974530245648},{"value":109974530245648},{"value":109974530245648},{"value":4591371016},{"value":0},{"value":0},{"value":105553141806208},{"value":5201248544},{"value":13},{"value":5201248604},{"value":5235288680},{"value":5234631296},{"value":5209933312},{"value":0},{"value":0}],"flavor":"ARM_THREAD_STATE64","lr":{"value":4591064968},"cpsr":{"value":536875008},"fp":{"value":6172665392},"sp":{"value":6172665328},"esr":{"value":2449473541,"description":"(Data Abort) byte read Translation fault"},"pc":{"value":6976215072,"matchesCrashFrame":1},"far":{"value":109974530245664}},"frames":[{"imageOffset":38944,"symbol":"objc_msgSend","symbolLocation":32,"imageIndex":5},{"imageOffset":137096,"symbol":"GLDTextureRec::getTextureResource(unsigned int, bool)","symbolLocation":352,"imageIndex":6},{"imageOffset":175484,"symbol":"GLDContextRec::addRenderPassResources()","symbolLocation":64,"imageIndex":6},{"imageOffset":176176,"symbol":"GLDContextRec::beginRenderPass()","symbolLocation":552,"imageIndex":6},{"imageOffset":267868,"symbol":"gldRenderVertexArray(GLDContextRec*, unsigned int, unsigned int, int, int, unsigned int, void const*, int, void const*)","symbolLocation":496,"imageIndex":6},{"imageOffset":815700,"symbol":"glDrawArrays_ACC_Exec","symbolLocation":400,"imageIndex":7},{"imageOffset":6664548,"imageIndex":1},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":2}]},{"id":4112699,"frames":[{"imageOffset":7704,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":2}]},{"id":4112700,"name":"caulk.messenger.shared:17","frames":[{"imageOffset":3436,"symbol":"semaphore_wait_trap","symbolLocation":8,"imageIndex":3},{"imageOffset":130300,"symbol":"caulk::mach::semaphore::wait_or_error()","symbolLocation":28,"imageIndex":8},{"imageOffset":9780,"symbol":"caulk::concurrent::details::worker_thread::run()","symbolLocation":56,"imageIndex":8},{"imageOffset":8824,"symbol":"void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*> > >(void*)","symbolLocation":96,"imageIndex":8},{"imageOffset":28780,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":2},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":2}]},{"id":4112729,"name":"com.apple.audio.IOThread.client","frames":[{"imageOffset":3568,"symbol":"mach_msg2_trap","symbolLocation":8,"imageIndex":3},{"imageOffset":75992,"symbol":"mach_msg2_internal","symbolLocation":80,"imageIndex":3},{"imageOffset":38456,"symbol":"mach_msg_overwrite","symbolLocation":540,"imageIndex":3},{"imageOffset":4460,"symbol":"mach_msg","symbolLocation":24,"imageIndex":3},{"imageOffset":3150268,"symbol":"HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int)","symbolLocation":104,"imageIndex":9},{"imageOffset":1943176,"symbol":"HALC_ProxyIOContext::IOWorkLoop()","symbolLocation":3316,"imageIndex":9},{"imageOffset":1938316,"symbol":"invocation function for block in HALC_ProxyIOContext::HALC_ProxyIOContext(unsigned int, unsigned int)","symbolLocation":100,"imageIndex":9},{"imageOffset":3519356,"symbol":"HALB_IOThread::Entry(void*)","symbolLocation":88,"imageIndex":9},{"imageOffset":28780,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":2},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":2}]},{"id":4112799,"name":"com.apple.NSEventThread","frames":[{"imageOffset":3568,"symbol":"mach_msg2_trap","symbolLocation":8,"imageIndex":3},{"imageOffset":75992,"symbol":"mach_msg2_internal","symbolLocation":80,"imageIndex":3},{"imageOffset":38456,"symbol":"mach_msg_overwrite","symbolLocation":540,"imageIndex":3},{"imageOffset":4460,"symbol":"mach_msg","symbolLocation":24,"imageIndex":3},{"imageOffset":531420,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":160,"imageIndex":10},{"imageOffset":525512,"symbol":"__CFRunLoopRun","symbolLocation":1232,"imageIndex":10},{"imageOffset":522404,"symbol":"CFRunLoopRunSpecific","symbolLocation":612,"imageIndex":10},{"imageOffset":1454664,"symbol":"_NSEventThread","symbolLocation":172,"imageIndex":0},{"imageOffset":28780,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":2},{"imageOffset":7724,"symbol":"thread_start","symbolLocation":8,"imageIndex":2}]},{"id":4112818,"frames":[{"imageOffset":7704,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":2}]}],
      "usedImages" : [
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 7033270272,
        "CFBundleShortVersionString" : "6.9",
        "CFBundleIdentifier" : "com.apple.AppKit",
        "size" : 15761408,
        "uuid" : "af9f6891-70ad-3c26-af08-b747344892d2",
        "path" : "\/System\/Library\/Frameworks\/AppKit.framework\/Versions\/C\/AppKit",
        "name" : "AppKit",
        "CFBundleVersion" : "2299"
      },
      {
        "source" : "P",
        "arch" : "arm64",
        "base" : 4298784768,
        "CFBundleShortVersionString" : "0.10.3",
        "CFBundleIdentifier" : "com.orama-interactive.pixelorama",
        "size" : 33308672,
        "uuid" : "77a15280-6e42-3897-a1cc-5934e7abbef4",
        "path" : "\/Applications\/Pixelorama.app\/Contents\/MacOS\/Pixelorama",
        "name" : "Pixelorama",
        "CFBundleVersion" : "0.10.3"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6979776512,
        "size" : 53244,
        "uuid" : "886caca0-5762-3640-8db2-3fa3b911c062",
        "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
        "name" : "libsystem_pthread.dylib"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6979543040,
        "size" : 233468,
        "uuid" : "6d6644d3-3db3-34c4-b1e3-c675ec5360f0",
        "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
        "name" : "libsystem_kernel.dylib"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6979022848,
        "size" : 421876,
        "uuid" : "ae8ea4b2-b8fd-33e3-a0af-0b7485ab97c0",
        "path" : "\/usr\/lib\/libc++.1.dylib",
        "name" : "libc++.1.dylib"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6976176128,
        "size" : 286112,
        "uuid" : "e20fe24e-bbda-3944-9cfc-8e43a463400b",
        "path" : "\/usr\/lib\/libobjc.A.dylib",
        "name" : "libobjc.A.dylib"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 4590927872,
        "CFBundleShortVersionString" : "1.0",
        "CFBundleIdentifier" : "com.apple.AppleMetalOpenGLRenderer",
        "size" : 442368,
        "uuid" : "04c45855-3ade-3d14-941f-60c2e52b6d6f",
        "path" : "\/System\/Library\/Extensions\/AppleMetalOpenGLRenderer.bundle\/Contents\/MacOS\/AppleMetalOpenGLRenderer",
        "name" : "AppleMetalOpenGLRenderer",
        "CFBundleVersion" : "1"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 8293982208,
        "size" : 1499128,
        "uuid" : "38e39114-7bb1-351c-9ffe-a57f17c10fe9",
        "path" : "\/System\/Library\/Frameworks\/OpenGL.framework\/Versions\/A\/Resources\/GLEngine.bundle\/GLEngine",
        "name" : "GLEngine"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 7135358976,
        "CFBundleShortVersionString" : "1.0",
        "CFBundleIdentifier" : "com.apple.audio.caulk",
        "size" : 172032,
        "uuid" : "445d1341-52c5-3468-ba85-f01410317744",
        "path" : "\/System\/Library\/PrivateFrameworks\/caulk.framework\/Versions\/A\/caulk",
        "name" : "caulk"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 7014375424,
        "CFBundleShortVersionString" : "5.0",
        "CFBundleIdentifier" : "com.apple.audio.CoreAudio",
        "size" : 7208960,
        "uuid" : "ad0eb60a-ba0d-3e1d-9a5b-ddc59e71d77d",
        "path" : "\/System\/Library\/Frameworks\/CoreAudio.framework\/Versions\/A\/CoreAudio",
        "name" : "CoreAudio",
        "CFBundleVersion" : "5.0"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6980190208,
        "CFBundleShortVersionString" : "6.9",
        "CFBundleIdentifier" : "com.apple.CoreFoundation",
        "size" : 5079040,
        "uuid" : "f4ff83fc-e62c-30b4-b3a9-876c8a1fd595",
        "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation",
        "name" : "CoreFoundation",
        "CFBundleVersion" : "1953.1"
      },
      {
        "size" : 0,
        "source" : "A",
        "base" : 0,
        "uuid" : "00000000-0000-0000-0000-000000000000"
      }
    ],
      "sharedCache" : {
      "base" : 6975815680,
      "size" : 3403612160,
      "uuid" : "2d053604-1cb6-3821-a8df-360eb2eb519b"
    },
      "vmSummary" : "ReadOnly portion of Libraries: Total=1.0G resident=0K(0%) swapped_out_or_unallocated=1.0G(100%)\nWritable regions: Total=1.7G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.7G(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nAccelerate framework               640K        5 \nActivity Tracing                   256K        1 \nCG backing stores                 5376K        8 \nCG image                          1248K       10 \nColorSync                          560K       25 \nCoreAnimation                      128K        8 \nCoreGraphics                        48K        3 \nCoreUI image data                  448K        6 \nFoundation                          16K        1 \nFoundation (reserved)               16K        1         reserved VM address space (unallocated)\nImage IO                          1024K        1 \nKernel Alloc Once                   32K        1 \nMALLOC                           360.5M       74 \nMALLOC guard page                  192K        9 \nMALLOC_MEDIUM (reserved)         928.0M        8         reserved VM address space (unallocated)\nMALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)\nOpenGL GLSL                        256K        3 \nSTACK GUARD                       56.2M       13 \nStack                             14.4M       13 \nVM_ALLOCATE                       11.8M      318 \n__AUTH                             696K      183 \n__AUTH_CONST                      12.7M      349 \n__CTF                               756        1 \n__DATA                            3192K      341 \n__DATA_CONST                      16.3M      357 \n__DATA_DIRTY                       802K      118 \n__FONT_DATA                        2352        1 \n__GLSLBUILTINS                    5174K        1 \n__LINKEDIT                       764.9M        9 \n__OBJC_CONST                      1561K      158 \n__OBJC_RO                         65.1M        1 \n__OBJC_RW                         1981K        1 \n__TEXT                           282.6M      373 \ndyld private memory                256K        1 \nmapped file                       81.0M       28 \nshared memory                     1424K       16 \n===========                     =======  ======= \nTOTAL                              2.9G     2447 \nTOTAL, minus reserved VM space     1.7G     2447 \n",
      "legacyInfo" : {
      "threadTriggered" : {
    
      }
    },
      "trialInfo" : {
      "rollouts" : [
        {
          "rolloutId" : "60f8ddccefea4203d95cbeef",
          "factorPackIds" : {
    
          },
          "deploymentId" : 240000021
        },
        {
          "rolloutId" : "5ffde50ce2aacd000d47a95f",
          "factorPackIds" : {
    
          },
          "deploymentId" : 240000223
        }
      ],
      "experiments" : [
    
      ]
    }
    }
    
    Model: MacBookPro18,2, BootROM 8419.41.10, proc 10:8:2 processors, 64 GB, SMC 
    Graphics: Apple M1 Max, Apple M1 Max, Built-In
    Display: DELL U3415W, 3440 x 1440 (UWQHD - Ultra-Wide Quad HD), Main, MirrorOff, Online
    Display: Color LCD, 3456 x 2234 Retina, MirrorOff, Online
    Memory Module: LPDDR5, Hynix
    AirPort: spairport_wireless_card_type_wifi (0x14E4, 0x4387), wl0: Sep  3 2022 02:35:52 version 20.10.965.9.8.7.129 FWID 01-b0e84a9b
    Bluetooth: Version (null), 0 services, 0 devices, 0 incoming serial ports
    Network Service: Wi-Fi, AirPort, en0
    Network Service: Tailscale Tunnel, VPN (io.tailscale.ipn.macos), utun3
    USB Device: USB31Bus
    USB Device: Opal C1
    USB Device: USB31Bus
    USB Device: USB3.0 Hub
    USB Device: USB 10/100/1000 LAN
    USB Device: USB2.0 Hub
    USB Device: Anker USB-C Hub Device
    USB Device: USB31Bus
    USB Device: Yubikey 4 U2F+CCID
    Thunderbolt Bus: Laptop, Apple Inc.
    Thunderbolt Bus: Laptop, Apple Inc.
    Thunderbolt Bus: Laptop, Apple Inc.
    
  • Recently Used Colors Auto-Added to Palette

    Recently Used Colors Auto-Added to Palette

    Thanks for this incredibly awesome tool! It would be really convenient (for me at least) if there was an option to enable automatically adding the colors you draw on the canvas with to a palette without having to create a new palette from current sprite/selection or having to click the plus button each time to add a color. I don't believe this currently exists but if it does feel free to close this issue.

  • Changing the size of the circle selection shape doesn't look right

    Changing the size of the circle selection shape doesn't look right

    Pixelorama version: Browser version on Itch.io

    OS/device including version: Browser version on Itch.io, using Google Chrome

    Issue description: When using the circle selection, and modifying it's scale through the tool menu, it doesn't scale properly the shape, instead it looks like it only expands the selection according to the first row/column. It also works for custom shape selection.

    Steps to reproduce: Use the circle shape selection, change the size with the tool menu on the right

    Capture d’écran (382)

A simple chess engine for experiment, made in Golang

chess-engine A simple chess engine for experiment, made in Golang Build the engine Run the command make or make build Run the engine Run the command f

Dec 26, 2021
An open source re-implementation of Diablo 2
An open source re-implementation of Diablo 2

OpenDiablo2 Join us on Discord! Development Live stream Support us on Patreon We are also working on a toolset: https://github.com/OpenDiablo2/HellSpa

Jan 8, 2023
Open source of the build infrastructure used by Stadia Games & Entertainment

SG&E Monorepo This repository contains the open sourcing of the infrastructure developed by Stadia Games & Entertainment (SG&E) to run its operations.

Dec 18, 2022
An open-source re-implementation of Pokémon Red
An open-source re-implementation of Pokémon Red

This project is open source re-implementation of Pokémon Red.

Dec 6, 2022
This project is designed to be an open source implementation for streaming desktop games using WebRTC
This project is designed to be an open source implementation for streaming desktop games using WebRTC

The aim of this project is develop a WebRTC screenshare designed for streaming video games and accepting remote inputs. There will be ansible instruct

Oct 6, 2022
Tetra3D is a 3D software renderer written in Go and Ebiten and made for games.
Tetra3D is a 3D software renderer written in Go and Ebiten and made for games.

Tetra3D Tetra3D Docs Support If you want to support development, feel free to check out my itch.io / Steam / Patreon. I also have a Discord server her

Dec 20, 2022
Minecraft server made in go, faster and better!

ElytraGo Minecraft server made in go, faster and better! Project is in early stage, but I'm trying continuously update it with new lines of code :)) L

Dec 9, 2022
'mouseable' is keyboard-based mouse emulator for Windows.

Motivation Mouseable is intended to replace a mouse or trackpad. This program was inspired by Ultimate Hacking Keyboard Demo, Windows built-in functio

Dec 12, 2022
Snake game made in Go! 🐍
Snake game made in Go! 🐍

Snake This is a Terminal based snake game made by tristangoossens. Please star this repository to help my first big project grow! Documentation can be

Nov 16, 2022
A simple breakout game made in Ebiten
A simple breakout game made in Ebiten

Ebiten Breakout Play online on itch.io A simple breakout game made in Ebiten. This is my first game made with Ebiten - a nice simple engine which allo

Nov 23, 2022
Simple 2D-grid game made with Ebiten
Simple 2D-grid game made with Ebiten

Simple 2D-grid game made with Ebiten

Mar 15, 2022
GuessTheNum - Guessing game made using GO
GuessTheNum - Guessing game made using GO

Guess The Number Guess the number is a guessing game made with the Go programmin

Aug 21, 2022
Librebird - A text based bird game made in Go

librebird a text based bird game made in Go, please contribute to the adventures

Feb 19, 2022
Tile is a 2D grid engine, built with data and cache friendly ways, includes pathfinding and observers.
Tile is a 2D grid engine, built with data and cache friendly ways, includes pathfinding and observers.

Tile: Data-Oriented 2D Grid Engine This repository contains a 2D tile map engine which is built with data and cache friendly ways. My main goal here i

Dec 26, 2022
Go 3D Game Engine
Go 3D Game Engine

G3N - Go 3D Game Engine G3N (pronounced "gen") is an OpenGL 3D Game Engine written in Go. It can be used to write cross-platform Go applications that

Jan 9, 2023
Scalable Distributed Game Server Engine with Hot Swapping in Golang
Scalable Distributed Game Server Engine with Hot Swapping in Golang

GoWorld Scalable Distributed Game Server Engine with Hot Reload in Golang Features Architecture Introduction Get GoWorld Manage GoWorld Servers Demos

Dec 25, 2022
A pure Go game engine
A pure Go game engine

Oak A pure Go game engine Table of Contents Installation Motivation Features Support Quick Start Implementation and Examples Finished Games Installati

Jan 8, 2023
Terminal-based game engine for Go, built on top of Termbox
Terminal-based game engine for Go, built on top of Termbox

Termloop Termloop is a pure Go game engine for the terminal, built on top of the excellent Termbox. It provides a simple render loop for building game

Dec 29, 2022
A chess engine written in golang
A chess engine written in golang

Weasel Art graciously provided by Alex Table of Contents: About Installing and Compiling from Source Contributing License About Weasel is an 0x88 and

Dec 30, 2022