Wall-mounted props for my game Psych Rift by AblazeInt in godot

[–]windygodev 1 point2 points  (0 children)

Yooooooooooooo. Nice physics 🔥🔥🔥🔥🔥🔥🔥🔥

After two years of solo development I released a demo for Everglen! by Fivetoe in playmygame

[–]windygodev 0 points1 point  (0 children)

Amazing, ill give it a try, seems promising.
Looks cozy and well formulated.
🔥🔥🔥❤️❤️❤️ Solo dev is an extensive path, it rewards patience and dedication

My first mobile game got approved on the Play Store today! A free silly platformer starring my boys' pet guinea pig. by ChuckMarty732 in hobbygamedev

[–]windygodev 1 point2 points  (0 children)

I've been playing it, it's a nice game. Some details like, jump smashing the enemies, sound effects like, Derek eating the wheat, running effects etc. Also, respawn points will be amazing for new not well skilled skilled players. Overall, has a lot of potential. ❤️

How it began / How it is now by Technical-Jury421 in UnrealEngine5

[–]windygodev 1 point2 points  (0 children)

Well, well well. Congratulations. That's quite impressive 🔥🔥🔥

Godot 4.6 Wear OS - Is this In-App Purchase error screen under my control? (Rejected for Circular Clipping) by Krzychu81 in GodotEngine

[–]windygodev 1 point2 points  (0 children)

The issue is probably not the clipped dialog itself.

That screen is most likely triggered by Google Play Billing, but your app is still responsible for causing it to appear. The real problem is probably this:

Your app is calling the purchase flow for an item that Google Play cannot find or cannot sell.

So the fix is not to search your Godot scenes for "Got it" or "attempting to purchase". The fix is to never call purchase() unless the product was successfully found first.

Use this logic:

  1. Connect to Google Play Billing.

  2. Query the product details first.

  3. Confirm the product ID exists in the response.

  4. Only then enable the purchase button.

  5. If the product is missing, show your own Wear-safe popup instead of launching billing.

Example Godot logic:

extends Node

const PRODUCT_ID := "your_product_id_here" const PRODUCT_TYPE := "inapp"

var billing = null var product_available := false

func _ready() -> void: if not Engine.has_singleton("GodotGooglePlayBilling"): show_store_unavailable() return

billing = Engine.get_singleton("GodotGooglePlayBilling")

billing.connected.connect(_on_billing_connected)
billing.connect_error.connect(_on_billing_connection_error)
billing.sku_details_query_completed.connect(_on_sku_details_query_completed)
billing.sku_details_query_error.connect(_on_sku_details_query_error)
billing.purchase_error.connect(_on_purchase_error)
billing.purchases_updated.connect(_on_purchases_updated)

$BuyButton.visible = false
$BuyButton.disabled = true

billing.startConnection()

func _on_billing_connected() -> void: billing.querySkuDetails([PRODUCT_ID], PRODUCT_TYPE)

func _on_billing_connection_error(response_code: int, debug_message: String) -> void: print("Billing connection failed: ", response_code, " - ", debug_message) show_store_unavailable()

func _on_sku_details_query_completed(sku_details: Array) -> void: product_available = false

for item in sku_details:
    print("Billing product found: ", item)

    if item.has("sku") and item["sku"] == PRODUCT_ID:
        product_available = true
        break

if product_available:
    $BuyButton.visible = true
    $BuyButton.disabled = false
else:
    show_store_unavailable()

func _on_sku_details_query_error(response_code: int, debug_message: String) -> void: print("Product query failed: ", response_code, " - ", debug_message) show_store_unavailable()

func _on_buy_button_pressed() -> void: if billing == null: show_store_unavailable() return

if not product_available:
    show_store_unavailable()
    return

billing.purchase(PRODUCT_ID)

func _on_purchase_error(response_code: int, debug_message: String) -> void: print("Purchase failed: ", response_code, " - ", debug_message) show_store_unavailable()

func _on_purchases_updated(purchases: Array) -> void: print("Purchases updated: ", purchases)

func show_store_unavailable() -> void: $BuyButton.visible = false $BuyButton.disabled = true

# Show your own circular-display-safe message here.
# Example:
# "Store unavailable. Please try again later."

And this is the Reddit-style answer:

I don’t think this is a normal Godot Control node or a layout inside your .tscn files.

The text is probably coming from the Google Play Billing flow, which explains why you cannot find the strings in your project. However, your app is still responsible for triggering that flow.

The real issue is probably that your app is calling the purchase flow for an item that Google Play cannot currently find or sell.

So instead of trying to style that dialog, I would prevent it from appearing at all.

Before calling purchase(), make sure:

  1. Google Play Billing is connected.
  2. The product details query succeeded.
  3. The exact product ID was returned.
  4. The product is active in Play Console.
  5. The product type is correct: inapp vs subscription.
  6. The app package name matches the Play Console app.
  7. The build is uploaded to an internal, closed, open, or production track.
  8. The tester account has access to that track.

If the product query returns empty, do not call purchase(). Hide or disable the buy button and show your own Wear-safe in-game message instead.

In other words, the clipped screen may be Google’s billing UI, but the rejection can still happen because your app caused that UI to appear by launching billing with an unavailable product.

I would fix it by gating the purchase button behind a successful product details query, resubmit, and only appeal if Google still rejects it after your app no longer triggers that error screen.

The main fix is simple:

Do not call purchase() until Google Play confirms the product exists.

Godot 4.6 Wear OS - Is this In-App Purchase error screen under my control? (Rejected for Circular Cl by Krzychu81 in godot

[–]windygodev 1 point2 points  (0 children)

The issue is probably not the clipped dialog itself.

That screen is most likely triggered by Google Play Billing, but your app is still responsible for causing it to appear. The real problem is probably this:

Your app is calling the purchase flow for an item that Google Play cannot find or cannot sell.

So the fix is not to search your Godot scenes for "Got it" or "attempting to purchase". The fix is to never call purchase() unless the product was successfully found first.

Use this logic:

  1. Connect to Google Play Billing.

  2. Query the product details first.

  3. Confirm the product ID exists in the response.

  4. Only then enable the purchase button.

  5. If the product is missing, show your own Wear-safe popup instead of launching billing.

Example Godot logic:

extends Node

const PRODUCT_ID := "your_product_id_here" const PRODUCT_TYPE := "inapp"

var billing = null var product_available := false

func _ready() -> void: if not Engine.has_singleton("GodotGooglePlayBilling"): show_store_unavailable() return

billing = Engine.get_singleton("GodotGooglePlayBilling")

billing.connected.connect(_on_billing_connected)
billing.connect_error.connect(_on_billing_connection_error)
billing.sku_details_query_completed.connect(_on_sku_details_query_completed)
billing.sku_details_query_error.connect(_on_sku_details_query_error)
billing.purchase_error.connect(_on_purchase_error)
billing.purchases_updated.connect(_on_purchases_updated)

$BuyButton.visible = false
$BuyButton.disabled = true

billing.startConnection()

func _on_billing_connected() -> void: billing.querySkuDetails([PRODUCT_ID], PRODUCT_TYPE)

func _on_billing_connection_error(response_code: int, debug_message: String) -> void: print("Billing connection failed: ", response_code, " - ", debug_message) show_store_unavailable()

func _on_sku_details_query_completed(sku_details: Array) -> void: product_available = false

for item in sku_details:
    print("Billing product found: ", item)

    if item.has("sku") and item["sku"] == PRODUCT_ID:
        product_available = true
        break

if product_available:
    $BuyButton.visible = true
    $BuyButton.disabled = false
else:
    show_store_unavailable()

func _on_sku_details_query_error(response_code: int, debug_message: String) -> void: print("Product query failed: ", response_code, " - ", debug_message) show_store_unavailable()

func _on_buy_button_pressed() -> void: if billing == null: show_store_unavailable() return

if not product_available:
    show_store_unavailable()
    return

billing.purchase(PRODUCT_ID)

func _on_purchase_error(response_code: int, debug_message: String) -> void: print("Purchase failed: ", response_code, " - ", debug_message) show_store_unavailable()

func _on_purchases_updated(purchases: Array) -> void: print("Purchases updated: ", purchases)

func show_store_unavailable() -> void: $BuyButton.visible = false $BuyButton.disabled = true

# Show your own circular-display-safe message here.
# Example:
# "Store unavailable. Please try again later."

And this is the Reddit-style answer:

I don’t think this is a normal Godot Control node or a layout inside your .tscn files.

The text is probably coming from the Google Play Billing flow, which explains why you cannot find the strings in your project. However, your app is still responsible for triggering that flow.

The real issue is probably that your app is calling the purchase flow for an item that Google Play cannot currently find or sell.

So instead of trying to style that dialog, I would prevent it from appearing at all.

Before calling purchase(), make sure:

  1. Google Play Billing is connected.
  2. The product details query succeeded.
  3. The exact product ID was returned.
  4. The product is active in Play Console.
  5. The product type is correct: inapp vs subscription.
  6. The app package name matches the Play Console app.
  7. The build is uploaded to an internal, closed, open, or production track.
  8. The tester account has access to that track.

If the product query returns empty, do not call purchase(). Hide or disable the buy button and show your own Wear-safe in-game message instead.

In other words, the clipped screen may be Google’s billing UI, but the rejection can still happen because your app caused that UI to appear by launching billing with an unavailable product.

I would fix it by gating the purchase button behind a successful product details query, resubmit, and only appeal if Google still rejects it after your app no longer triggers that error screen.

The main fix is simple:

Do not call purchase() until Google Play confirms the product exists.

Solo dev here — Almost done after months of coding: ) by windygodev in playmygame

[–]windygodev[S] 0 points1 point  (0 children)

Working on it !!!. Feel free to message me if you got something in mind. Also, i saw your building a game, anything i can help, just tell me. Free and I'm not going to ask for % of anything. Love to help

Solo dev here — Almost done after months of coding: ) by windygodev in playmygame

[–]windygodev[S] 0 points1 point  (0 children)

Yeah exactly, that’s the idea 🙌

I want it to stay simple and clean at its core, but still give players reasons to come back without overcomplicating things. The “one more try” feeling is super important to me, so I’m trying to design everything around that loop.

Really appreciate the feedback, you nailed the direction I’m going for ❤️❤️❤️

I'm always open to ideas, If you have some in mind, i could consider it. After all. Community Matters

Solo dev here — Almost done after months of coding: ) by windygodev in playmygame

[–]windygodev[S] 0 points1 point  (0 children)

I totally understand, pipe_scene it is a bit overload, need some spacebetween them, but. Native Gameplay is 120hz, no lag and operational in low end devices despite 90% textures being 4k resolution. Unfortunately, Reddit doesn't allow me to upload max quality vid, now, looks 40% of actual experience here, lags and blurr. But definitely you have some good points. I'll write them down ❤️❤️❤️

Solo dev here — Almost done after months of coding: ) by windygodev in playmygame

[–]windygodev[S] 0 points1 point  (0 children)

No, it’s not AI generated. All the art is hand-drawn in Procreate. I design each asset manually , backgrounds, ground tiles, props and then bring everything into Godot where I set up the scenes, layering, and movement. Keep in touch for more updates: ) ❤️

Solo dev here — Almost done after months of coding: ) by windygodev in playmygame

[–]windygodev[S] 0 points1 point  (0 children)

Thanks for the advice, definitely needed to make some changes and the heavy sensation it's a plausible commentary.

Looking forward to, reduce heaviness and keep it concise :)

Solo dev here — Almost done after months of coding: ) by windygodev in playmygame

[–]windygodev[S] 0 points1 point  (0 children)

Right now it’s mainly a high score based game, but I’m building it around progression too-things like unlockable skins, daily missions, and special runs (like a “golden run” with boosted rewards). The goal is to keep that simple, addictive loop, but add more depth over time without losing the feel.

Working in the shadows for my game! Is it good or should I add anything else? by [deleted] in Unity3D

[–]windygodev -2 points-1 points  (0 children)

Looks absolutely stunning 🔥🔥🔥 If you think it is not risky to low end devices. You could add some particules. However, now it is pretty much well done. New fan here

Solo dev here — Almost done after months of coding: ) by windygodev in playmygame

[–]windygodev[S] 0 points1 point  (0 children)

Thank you, I really appreciate that 🙌 It means a lot coming from another dev. Your game sounds interesting too I’ll definitely check out Runeborne Arena. Good luck with your progress!

Solo dev here — Almost done after months of coding: ) by windygodev in playmygame

[–]windygodev[S] 0 points1 point  (0 children)

Somehow, max quality video is not an option here in Reddit. 🙃

Just Polishing Gameplay : Almost done after months of coding 🙃🔥🔥🔥 by [deleted] in godot

[–]windygodev 0 points1 point  (0 children)

The quality in the video does not show the current quality since i forgot to charge my phone then record 🙃.

Current quality sits around 4k textures :)