Q:

How can I easily create/edit a level for a scrolling shooter game?

I've been asking this question over the years many a time, but I still haven't found an answer when i search for one. Now I have slightly more knowledge of how programming is done and want to start making some full games.
I want to start with a side scrolling shooter (space style like R-Type/Gradius). I have many ideas in my head for good levels, and i even have some basic 3d skills in Maya/Blender to make the assets, but I do not know how best to formulate the levels. Lets say the space shooter has 30 levels. Each level might have about 10-15 enemy types and a boss on some levels. How best to store the location of all the enemies? (Same scenario for all the background objects,obstacles, powerup locations etc.)
Is there a better way than manually building the whole level in a Unity Scene editor view? Another way I have tried is to set spawn positions for every single object as a Vector2 or similar in XML or JSON, but how i did it that seemed even harder to make the levels than just inside the editor (not even accounting for having to write the functionality to get the data from the textfile).

A:

The reason you might not find any good literature about this subject is because the best solution always depends on the game, its architecture, its scope and your team's preferred workflow.
Possible options are:

Hardcode your levels. Crude and hard to maintain, but a simple and effective solution for small games or proofs of concept.
Create it in Unity using the Unity scene editor
Create it in Unity, but use editor scripting to add some functionality to the Unity editor which helps you with building levels. This ranges from custom inspectors to editor-only behaviours to completely new editor UIs running in their own windows.
Create your level in Unity as a Timeline asset. Levels in scrolling SHMUPs are usually just a series of chronological events, so you might be able to represent a level as timeline. (Disclaimer: I never tried this, but it sounds like it could be a good idea in theory)
Make up a file format which might or might not be based on a markup language like JSON or XML and:

Edit it with a text editor
Create a visual level editor as a stand-alone executable  
Create a visual level editor as part of your game. 

Make use of procedural generation. Only define a few basic parameters for each level and create the actual content of the level with an algorithm.

