I'm learning C #, and I already have enough knowledge (I think) to make a simple 2D game. But I do not want to use ANY engine. So where do I start?
I'm learning C #, and I already have enough knowledge (I think) to make a simple 2D game. But I do not want to use ANY engine. So where do I start?
Even if you do not want to use an engine you will need to use some library.
As a start you should answer two questions:
What platform will the game be made for? (Mobile, pc, ps4, etc)
Which language will you use?
Having these two questions answered you should look for some graphic library that will fit your needs.
After choosing your graphics library you can start to create your game core.
In core you will develop all the necessary foundation for this and future games to be developed. Here you will enter all the data management (saves / loads), communication (client / server if necessary), screen management, physical (if applicable), tools and integrations required with your libraries.
As you're wondering where to start I think it's in the core that you should focus on.
Graphic System
I would recommend starting with your graphic system, where you will control the way your game uses your graphic library, after this complete step you should be able to have a window and be able to draw images and geometric shapes with multiple colors. After this you can start working on the base structure of your core, remembering that in the core you will only apply things that can be used in multiple games.
Core
At the core of your game you'll have things like GameLoop, event management, basic data structures, and whatever tools you find necessary for developing a game. In this step I recommend you read this book: link
here are several patterns that can be placed in your core.
Physics
Physics is a tricky point as there is the option of using a ready engine that will probably work better than a physical authoring engine and will take much less time. If you want to develop your own engine I recommend reading about the development of physical engines as they can become very complex.
With these points implemented and working you can start working on your game in fact.
I believe we should only develop a game from scratch without using engines in two situations:
For learning, this way you will better understand how the engines work and will be better able to deal with problems that arise in the future.
No engine meets the requirements of your game, this case is more
Rare in Indies Developers but is Common in Major Industries of
games, where the best engines can not
games designed in a satisfactory way.
Taking these two cases I always recommend using an engine, be it Unreal, Unity, CryEngine, etc. They were made to make the developer's life easier and are very powerful.