Este blog lo hice para dedicarme a añadir contenido en él que no cuadran en mis otros blogs y en mi Twitter. Este blog será diferente a mi otro blog JAGMGeorgyFantastico y mi twitter JAGMGeorgy, porque añadiré realmente cualquier cosa que me venga a la mente, que conozca y/o quiera compartir sin estar obligado a educar una sola cosa en cada publicación. A su vez, hay un tema en elforonuevo.com donde podrán ver casi las mismas publicaciones, ya que así podré también tener mi propio hilo en esos foros. Espero que les guste este blog. Les aviso si, que si quieren ver más de las publicaciones que hice en este blog, tienen que pulsar abajo el texto que dice "Entradas antiguas."

miércoles, 30 de octubre de 2024

Libro con historias de personajes de Nintendo que pedí a ChatGPT


Este libro de wattpad.com tiene cuentos que le pedí a ChatGPT, pueden leerlos con este link:


Si me falta algún personaje de Nintendo o quieren que un personaje de Nintendo tenga su cuento propio en este libro de wattpad hecho por ChatGPT pueden mencionármelos en las respuestas de esta publicación, y yo veré si ChatGPT los pueden hacer.

Script para videojuegos de Unity para hacer un password como el del videojuego oficial de Nintendo Entertainment System llamado Metroid


Esto también fue dado por ChatGPT.

Esta publicación es para que los que programan videojuegos con Unity sepan cómo hacer passwords como en el videojuego oficial de Nintendo Entertianment System llamado Metroid. Los passwords de este videojuego llamado Metroid tiene una característica diferente, ya que en lugar de que cada nivel tenga su propio password, en este videojuego, cada cosa que consigues y progresas forma un password único o diferente. Es importante esta publicación, porque así, se pueden hacer passwords para seguir el progreso del videojuego con exactamente todo lo que se realizó y se tuvo, que sino se hace de este modo, pueden ser demasiados passwords si se hacen a mano string por string.

Le pregunté esto a ChatGPT:

"¿Cómo hago en Unity para que mi videojuego pueda usar un password como el del videojuego oficial de Nintendo Entertainment System llamado Metroid, o sea, que cada progreso del jugador se convierta en una contraseña sin importar cuántos datos o cosas tenga el jugador? Quiero que sin importar los valores de las vidas, el progreso y los items del jugador estos se puedan volver a usar perfectamente de nuevo a través de su propio password, pero no quiero configurar a mano que cada punto de vida, nivel e item conseguidos sea un password distinto, porque son demasiados passwords que anotar en string."

Y esta fue la respuesta de ChatGPT:

"Para implementar un sistema de contraseñas en Unity como el de Metroid, puedes usar un algoritmo de serialización que tome los valores del progreso del jugador y los convierta en una cadena de texto (contraseña). Luego, esta contraseña podrá ser decodificada para restaurar el progreso. Aquí tienes los pasos básicos para hacerlo:

1. Serializa el Progreso en un Objeto

Define una clase que almacene todo el progreso del jugador. Por ejemplo:

csharp
[System.Serializable] public class PlayerProgress { public int lives; public int level; public List<string> items; // Puedes usar IDs de items, por ejemplo. }

2. Convierte el Progreso en un String (Contraseña)

Una forma práctica de convertir el progreso en una contraseña es serializar el objeto en un formato JSON y luego codificarlo en Base64. Aquí tienes un ejemplo de cómo hacerlo:

csharp
using System; using System.Collections.Generic; using UnityEngine; public class PasswordSystem : MonoBehaviour { // Serializa el progreso en una contraseña public static string GeneratePassword(PlayerProgress progress) { string json = JsonUtility.ToJson(progress); // Convierte a JSON byte[] bytes = System.Text.Encoding.UTF8.GetBytes(json); // Convierte a bytes return Convert.ToBase64String(bytes); // Codifica en Base64 } // Deserializa la contraseña en el progreso del jugador public static PlayerProgress DecodePassword(string password) { byte[] bytes = Convert.FromBase64String(password); // Decodifica de Base64 string json = System.Text.Encoding.UTF8.GetString(bytes); // Convierte de bytes a JSON return JsonUtility.FromJson<PlayerProgress>(json); // Convierte de JSON a objeto } }

3. Uso del Sistema de Contraseña

Cuando quieras generar una contraseña del progreso del jugador, simplemente llama a GeneratePassword y pasa el objeto PlayerProgress que contenga los datos actuales. Al cargar el juego, puedes restaurar el progreso usando DecodePassword para reconstruir el estado del jugador desde la contraseña.

Ejemplo de Uso

csharp
void SaveProgress() { PlayerProgress progress = new PlayerProgress { lives = 3, level = 2, items = new List<string> { "item1", "item2" } }; string password = PasswordSystem.GeneratePassword(progress); Debug.Log("Generated Password: " + password); } void LoadProgress(string password) { PlayerProgress progress = PasswordSystem.DecodePassword(password); Debug.Log("Loaded Progress: " + progress.lives + " lives, level " + progress.level); }

Este método genera una contraseña que representa el progreso completo, sin la necesidad de manejar combinaciones manuales."

Script para que los videojuegos de Unity tengan publicidad que se quite al pagar cierta cantidad de dinero


Esta vez les comparto un tutorial de ChatGPT para que los videojuegos que hagan en Unity muestren publicidad, pero que esta publicidad no se vea y sea quitada al pagar cierta cantidad de dinero. Muchos tutoriales de YouTube muestran como poner publicidad en los videojuegos de Unity, pero no muestran cómo quitarlos pagando algo de dinero. Obviamente este dinero que se pague para no tener publicidad en el videojuego también debería llegar también al dueño del videojuego. Yo al menos no he entendido aún este tutorial, pero lo comparto por si alguno lo entiende mejor.


Este es el tutorial que me dio ChatGPT:


"Para implementar publicidad de pantalla completa en tu videojuego de Unity y eliminarla permanentemente después de que el jugador realice un pago dentro del juego, puedes seguir estos pasos utilizando Google AdMob para la publicidad y Unity IAP (In-App Purchases) para los pagos. Te doy una guía general sobre cómo hacerlo:

1. Agregar AdMob para mostrar anuncios

  1. Instalar el SDK de Google AdMob en tu proyecto:

    • Ve al menú de Unity y selecciona Window > Package Manager.

    • Busca Google Mobile Ads Unity Plugin e instálalo.

    • Configura AdMob siguiendo la documentación oficial de Google.

  2. Mostrar anuncios intersticiales (pantalla completa):

    • Después de configurar AdMob, en tu código, añade la lógica para cargar y mostrar un anuncio intersticial. Aquí tienes un ejemplo básico de cómo hacerlo:

csharp
Copiar código
using GoogleMobileAds.Api;

using UnityEngine;


public class AdManager : MonoBehaviour

{

    private InterstitialAd interstitial;


    void Start()

    {

        // Inicializa el SDK de Google Mobile Ads

        MobileAds.Initialize(initStatus => { });


        // Solicita y carga el anuncio

        RequestInterstitial();

    }


    private void RequestInterstitial()

    {

        string adUnitId = "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX"; // Reemplaza con tu ID de AdMob

        interstitial = new InterstitialAd(adUnitId);

        AdRequest request = new AdRequest.Builder().Build();

        interstitial.LoadAd(request);

    }


    public void ShowInterstitial()

    {

        if (interstitial.IsLoaded())

        {

            interstitial.Show();

        }

    }

}


  1. Mostrar el anuncio cuando sea necesario (por ejemplo, después de cada nivel o a intervalos definidos):

    • Llama al método ShowInterstitial() en los puntos donde quieras que aparezca la publicidad.

2. Implementar compras dentro de la aplicación (IAP)

  1. Instalar Unity IAP:

    • En Unity, ve a Window > Package Manager.

    • Busca e instala el paquete In-App Purchasing.

  2. Configurar Unity IAP:

    • Ve a Window > Services y habilita In-App Purchasing para tu proyecto.

    • Configura los productos en la consola de Unity bajo la pestaña de IAP Catalog.

  3. Código para manejar las compras:

    • A continuación, un ejemplo de cómo implementar una compra que elimina los anuncios:

csharp
Copiar código
using UnityEngine;

using UnityEngine.Purchasing;


public class IAPManager : MonoBehaviour, IStoreListener

{

    private IStoreController storeController;

    private string removeAdsProductId = "remove_ads"; // Reemplaza con tu ID de producto


    void Start()

    {

        InitializePurchasing();

    }


    public void InitializePurchasing()

    {

        if (IsInitialized()) return;


        var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());

        builder.AddProduct(removeAdsProductId, ProductType.NonConsumable);


        UnityPurchasing.Initialize(this, builder);

    }


    private bool IsInitialized()

    {

        return storeController != null;

    }


    public void BuyRemoveAds()

    {

        if (IsInitialized())

        {

            storeController.InitiatePurchase(removeAdsProductId);

        }

    }


    public void OnPurchaseComplete(Product product)

    {

        if (product.definition.id == removeAdsProductId)

        {

            PlayerPrefs.SetInt("ads_removed", 1); // Guarda que el jugador compró para quitar los anuncios

        }

    }


    public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason)

    {

        Debug.LogError($"Compra fallida: {failureReason}");

    }

}


  1. Desactivar los anuncios tras la compra:

    • En el script de manejo de la publicidad, revisa si el jugador ha comprado la opción para eliminar anuncios:

csharp
Copiar código
public class AdManager : MonoBehaviour

{

    private InterstitialAd interstitial;


    void Start()

    {

        if (PlayerPrefs.GetInt("ads_removed", 0) == 1)

        {

            return; // No cargar los anuncios si se han eliminado

        }


        MobileAds.Initialize(initStatus => { });

        RequestInterstitial();

    }


    private void RequestInterstitial()

    {

        string adUnitId = "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX";

        interstitial = new InterstitialAd(adUnitId);

        AdRequest request = new AdRequest.Builder().Build();

        interstitial.LoadAd(request);

    }


    public void ShowInterstitial()

    {

        if (PlayerPrefs.GetInt("ads_removed", 0) == 0 && interstitial.IsLoaded())

        {

            interstitial.Show();

        }

    }

}


3. Guardar y restaurar el estado del pago

  • Utiliza PlayerPrefs para almacenar el estado de la compra, pero también asegúrate de implementar un sistema para restaurar las compras si el jugador cambia de dispositivo.

  • Puedes implementar una función de restauración de compras usando el siguiente código:

csharp

Copiar código

public void RestorePurchases()

{

    if (!IsInitialized()) return;


    if (Application.platform == RuntimePlatform.IPhonePlayer ||

        Application.platform == RuntimePlatform.OSXPlayer)

    {

        var builder = new AppleStoreBindings();

        builder.RestoreTransactions(result => Debug.Log("Restore transactions result: " + result));

    }

}


Resumen del flujo:

  1. Muestra los anuncios intersticiales hasta que el jugador realice una compra.

  2. Usa Unity IAP para permitir que el jugador compre la opción de eliminar anuncios.

  3. Una vez realizada la compra, guarda el estado (usando PlayerPrefs o un sistema en la nube).

  4. Verifica si la compra se ha realizado y evita mostrar anuncios en futuras sesiones.

Con estos pasos, tendrás un sistema de publicidad de pantalla completa que se desactiva permanentemente si el jugador paga."


Espero que les sirva este tutorial. Seguiré publicando nuevas cosas si se me ocurre algo nuevo que publicar ¡¡Hasta pronto!!

Canción Fan club de videojuego Rhythm Heaven igual en videojuego y en concierto

Hoy día quería compartirles algo interesante que solo publiqué antes en foros de internet, estos son dos videos acerca de una canción de vid...