Project Graveyard – Devlog 011

Editable dedication plaques, new materials, new options.

Project Graveyard 3.2 build 2 is now available on TestFlight. Please check it out and let me know what you think!

New in this Version

The working draft the the release notes

Fixed:

- Sometimes the app content was clipped by the volume bounds on initial launch
- Obelisk was missing a bottom face

Changed:

- Customize Color: the selected color will be scrolled into view on open
- When picking up a gravestone, the billboard effect is only applied on indirect (distance) touch
- Replaced the rain system with a better one

New: 

- All items now include editable text that is shown on model
- New Options for Plinth, Obelisk, Bench, Arch, and Lamp:
    - Customize materials and colors as applicable
        - Four new wood materials
        - Four new metal materials
    - Edit text, just like with gravestones
- Settings:
    - Revised the controls for changing light mode
    - Added new light colors that are applied to any dynamic lights in the graveyard

New in this Build

The following objects now have feature parity with the gravestone: Plinth, Obelisk, Bench, Arch, and Lamp. These objects were added in 3.0, but had no customization features. Now we can

  • Include text that will appear attached to the surface of the object or a dedication plaque
  • Customize:
    • Wood objects can now select from 4 wood materials
    • Lamp Post can now select from 4 metal materials

I started working on a library to keep track of all the features an item can use. For example, when a user taps the Lamp Post, I need to populate the Customize View with only the materials that make sense for that object. I created a library where I can store this data and some helper functions to quickly access it from anywhere in the app. Lamp01 has 4 materials, no colors, a default material that uses ScratchedMetallicPaint. It even has a way to indicate which attachment layout to use.

// A single object from an array in ItemAppearanceLibrary
        "Lamp01": ItemAppearancePalette(
            materials: ["Metal053", "Metal062", "Metal047", "ScratchedMetallicPaint"],
            colors: [],
            defaultMaterial: "ScratchedMetallicPaint",
            defaultTintColor: "",
            attachmentName: "IronFace01"
        )

I can access these values where I need them.

let attachmentName = ItemAppearanceLibrary.attachmentName(forModelName: item.modelName)

let palette = ItemAppearanceLibrary.palette(forModelName: item.modelName, materialName: item.stoneMaterialName)

let materials = palette.materals
let colors = palette.colors

I need to do a bit of refactoring and clean up, but this library is working well for me.

Check the video for a tour of all the features that are coming.

Update: version 3.2 was released on October 13, 2025. Check out a short recap here.

Questions or feedback?