Can my public project be easily stolen?

For a free plan user, are the public projects i create available for anyone to… just take?, does PlayCanvas display my project to random people who can just fork it? or is it safe as long as i don’t share a link?

Can i avoid being listed by just not using a project image for example?

A public project is similar to a public repository on Githhub:

You can fork it and copy as long as you have a link to it. Private projects are only for subscription, or you can use engine-only (no Editor) similar to threejs and others.

1 Like

Thanks, i get it!

If i may ask too, if a private project is made during a subscription, and the subscription expires, does the private project remain?

This page will have more details about private projects and subscriptions. Billing | PlayCanvas Developer Site

TLDR, the project will become locked but still private. You don’t need a subscription after you have your final build and are free to modify/distribute the build as you see fit.

I never actually understood what “engine only” means in this context.

Using the PlayCanvas as a code library only without using the online editor or services

And how exactly would that work, as in creating the entire game in a text file?

Kinda, you import it as a library and can use it that way. I was messing around with it the other day. You use html and js, here is an example:
HTML:


<!DOCTYPE html>
<html>
<head>
  <title>PlayCanvas Without Editor</title>
  <style>
    body { margin: 0; overflow: hidden; }
    canvas { width: 100%; height: 100%; display: block; }
  </style>
</head>
<body>
  <canvas id="application-canvas"></canvas>
  <script src="https://code.playcanvas.com/playcanvas-stable.min.js"></script>
  <script src="main.js"></script>
</body>
</html>

Js


const canvas = document.getElementById('application-canvas');

// Create app
const app = new pc.Application(canvas, {
  mouse: new pc.Mouse(canvas),
  touch: new pc.TouchDevice(canvas)
});

app.start();
app.setCanvasFillMode(pc.FILLMODE_FILL_WINDOW);
app.setCanvasResolution(pc.RESOLUTION_AUTO);
window.addEventListener('resize', () => app.resizeCanvas());

// Create camera
const camera = new pc.Entity("Camera");
camera.addComponent("camera", {
  clearColor: new pc.Color(0.1, 0.1, 0.1)
});
camera.setPosition(0, 0, 3);
app.root.addChild(camera);

// Create cube
const cube = new pc.Entity("Cube");
cube.addComponent("model", {
  type: "box"
});
app.root.addChild(cube);

// Add lighting
const light = new pc.Entity("Light");
light.addComponent("light");
light.setEulerAngles(45, 0, 0);
app.root.addChild(light);

// Animate
app.on("update", (dt) => {
  cube.rotate(10 * dt, 20 * dt, 30 * dt);
});

Can be done in various ways. Pure code where all the components and logic and content is done in code and external assets eg PlayCanvas Examples

You can write your own scene loader and editor and export/import the data.

Write your own editor that uses the same scene format as what the editor exports.

Etc

So I can write an entire game in an html file?

See the options on how to use PlayCanvas here: Getting Started | PlayCanvas Developer Site

Editor is just one of the 4 options.

Yeah, I plan on trying it at some point.

You can, I wouldn’t recommend it as it gets a bit unwieldy beyond small projects. I would at least split it out into html and JS files

1 Like

Is it possible to take an extant editor project and continue development outside of the editor?

Yes. You can download the build as a zip (known as self hosting) and if you don’t minimise the source code, it’s pretty trivial to make changes

I also noticed that the export has an extreme excess of files, as in:

These are all the assets, but they are all folders:

Within each of these folders there is another folder just labeled 1:

image

Then within that folder is the asset:

image

What is the purpose of this? Why cant the actual asset just be where the folders are, this seems like 3x the amount of files that would be required. This actually caused problems for me when I tried to upload the game to itch, and I had to email the support to get a higher file cap.

I am going to split this into a new topic.

1 Like

The folder name is the asset id. It was done this way because it’s possible to have assets the same name but still be unique by id.

Remember this was not meant to be modified after publishing so the actual folder structure doesn’t matter

It is the same number of files regardless of the folder structure