-2

I have an idea for a unity app which goes like this, Let's understand it better through an example :

Suppose that I wanted to create a racing game. I have the models of the car, road, lighting etc. in an assets folder. I would open the unity app and I would be able to basically drag and drop these components from a side panel which reads my assets folder into a scene and edit the scripts attached to these components.

As a user I should be able to change some functions of the components in any programming language that I want (Let's also assume that the editor in the app will support Intellisense/Intellicode) but, the basic features of the car, road, physics will be defined by us in a different program (Lets say unity itself) and that can be modified using an inspector window. So, the main purpose of the app is to just implement the game logic. As a user of this app, I am not worried about anything other than the game logic. It is in essence a very lite version of unity.

Maybe the example of a racing game is too complex for such an app but let us say maybe a robot that can be dragged and dropped from the side panel and we can edit basic features like height, width, joints etc. from an inspector like panel and also add some features to the robot like move arm from x to y in z seconds using python or any language of choice?

The immediate question that you may, as a reader will have is why not use unity itself as it provides all the features mentioned and more. But, that is where the problem lies and this app is catered to a very niche group of people who have never used a sophisticated software like unity before. Yes, it would still be easier to learn unity and implement a game/app like this but I want my niche group of people to only worry about domain specific knowledge and not worry about advanced programming patterns.

Is it possible to create such an app from unity which will allow these requirements? If not, as an expert, if you were given such a requirement, how would you go about it?

  • What you are describing sounds like a level builder, many games are built this way as it is easier for the creatives to work with a builder while the engine contains the logic. In code, almost anything is possible given time, skill and determination. – b166er Mar 10 '23 at 06:08
  • Thank you @b166er but could you be more specific in terms of the approach that I should take in order to meet the requirement? ( Could be tech stacks to use or just a starting point as I'm not really sure where to start ) – Ashwin Nambiar Mar 10 '23 at 08:39

2 Answers2

2

That sounds a lot like a program like Game Maker Studio.

Unity (like any other game engine) is not built to make such complex multipurpose programs (that doesn't mean you can't do it, but it will lack in performance and it will be really bloated), but for a big project like that I think you should design and build it from scratch, possibly in a fast language like C/C++, since a program like that has to be as fast as possible.

There's a reason why every game engine is written in C++, and not built on top of an already existing engine, they are made for an entirely different purpose.

If you need a starting point on YouTube is full of tutorials on how to create a game engine from scratch, this may be a starting point.

Just make sure to plan everything ahead and have a well thought, written down idea of everything you want to do :)

Cyclone6664
  • 311
  • 2
  • 7
1

I'm not really an expert as you say, but I think you're in for a long journey.

I would start by experimenting with the basics: moving objects by dragging them with the mouse, creating/deleting/selecting them, and have a little UI to edit their properties. If you want to implement it in Unity you have it easy, because all the graphics are handled by the engine.

Then I would probabily try to load the kinds of assets I would want the app to support, so I would read about file formats (bmp, jpg, and so on). I would also learn to save the levels that the app creates (and the information tied to the objects) into a file with a specific format, so that the "other program" that handles physics can read from it and operate on that data.

If you want to incorporate a text editor, just start with a panel that lets the user type some text and then build from there. Syntax highlighting? Write a parser, which will then inform the renderer about the color of the words. Autocompletion? Write a parser, and make the input handler react accordingly. Scope folding? Write a parser... you get the idea.

You want to let the user use any language on earth, be it compiled, interpreted or something in between? I don't know, find a way to let the user include any compiler/virtual machine/whatever into the project and make the app call that... but then you'll need to provide hooks so that your engine can call your scripts, as well as ways to transform the data so that it gets interpreted correctly.

So... there you go.

NicknEma
  • 414
  • 3
  • 13