Aiâ�第2部分-Dall E Sprites的游戏引擎
#javascript #网络开发人员 #ai #gamedev

嘿,开发人员! ð®
希望你们都过得愉快!我有一些关于helicity.ai

的很酷的更新

内置的dall e支持

我已经集成了dall-e支持!是的,是的,因此,从现在开始,您可以将精灵URL定义为“查找:某些描述” ,而Helicity.ai将为您生成一个独特的精灵使用dall-e即时。创建独特的自定义图像而无需离开IDE。

我怎么做

  1. 因此,这一切都发生在 gameObject.js 模块中。每当您制作gameObject的新实例时,此代码都会运行
  2. 当您将“查找:”字符串放在图像源中时,它将其作为请求,并调用Express
  3. 中制作的firebase函数
  4. firebase函数在 “查找:” 和异步返回image-url之后将字符串抬高时,将其发送回游戏对象。
  5. 使用 * render() *(在游戏循环中自动)绘制游戏对象图像,否则,它只是一个黑匣子
  6. 保存时数确保如果使用相同的查找描述创建了2个游戏对象,则未对dall e进行多个。例如,炸弹中的管道。

gameObject.js

var savedImages = {};

export class GameObject {
  constructor(x, y, width, height, type, imageSrc) {
    this.x = x;
    this.y = y;
    this.width = width;
    this.height = height;
    this.type = type; // can be Used for collision detection
    this.image = new Image();
    this.image.loaded = false;

    //check if imagesrc contains the string lookup:
    if (imageSrc.includes("lookup:")) {
      //check if the image is already saved
      if (savedImages[imageSrc]) {
        this.image = savedImages[imageSrc];
        this.image.loaded = true;
      } else {
        //make a post request. this is in html to use XMLHttpRequest
        var xhr = new XMLHttpRequest();
        xhr.open(
          "POST",
          "https://us-central1-myaigameengine.cloudfunctions.net/api/Image",
          true
        );
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.send(
          JSON.stringify({
            userPrompt: imageSrc.split("lookup:")[1],
          })
        );
        xhr.onreadystatechange = () => {
          if (xhr.readyState == 4 && xhr.status == 200) {
            //console.log(xhr.responseText);

            //get the imageURL from the response
            var imageURL = JSON.parse(xhr.responseText).image_url;
            this.image = new Image();
            this.image.src = imageURL;
            this.image.onload = () => {
              this.image.loaded = true;
              //save the image
              savedImages[imageSrc] = this.image;
            };
            this.image.onerror = () => {
              console.error(`Error loading image ${this.imageSrc}`);
            };
          }
        };
      }
    } else {
      this.imageSrc = imageSrc;
      this.image = new Image();
      this.image.src = imageSrc;
      this.image.onerror = () => {
        console.error(`Error loading image ${this.imageSrc}`);
      };
      this.image.onload = () => {
        this.image.loaded = true;
      };
    }

    Game.addGameObject(this);
  }

  update(deltaTime) {
    // Overridden by child classes
  }

  render() {
    //draw a black rectangle if there isnt an image else draw it
    if (this.image.loaded) {
      Renderer.drawImage(this.image, this.x, this.y, this.width, this.height);
    } else {

      Renderer.context.fillStyle = "black";
      Renderer.context.fillRect(this.x, this.y, this.width, this.height);
    }
  }
}

Firebase函数的明确图像端点

app.post("/Image", async (req, res) => {
  //var uuid = req.body.uuid;
  var userPrompt = req.body.userPrompt;
  //console.log("uuid is " + uuid);
  console.log("user prompt is ");
  openai
    .createImage({
      prompt: userPrompt,
      n: 1,
      size: "256x256",
    })
    .then((result) => {
      image_url = result.data.data[0].url;
      console.log(image_url);
      res.send({
        success: true,
        image_url: image_url,
      });
    });
});

就是这样!

考虑一下 - 需要一个“带上帽子的紫色龙?”的精灵。 ð7©Just Type Lookup:带上顶礼帽和瞧的紫色龙,您的个性化精灵已经准备好在游戏中使用!这很简单! ð²ð

多人游戏支持即将到来!

如果您想谈论并参与开发,请在不和谐中打我!

https://discord.com/invite/H4HkgFmqVp

请继续关注更多更新!快乐编码ð®ð