How to go from making a game to making an app?

If I wanted to take what I've learned here and make a windows application instead of a game can I use the same approach of having a draw and update loop? Is there a better way of going about it?

Edited by Ian Hern on
Yes, you can. Imgui library that Casey mentions often on a stream, gives you API for creating UI for any kind of application. And it works in a way exactly what you said - drawn and update loop.

Check out homepage here: https://github.com/ocornut/imgui
And see screenshots from various applications here: https://github.com/ocornut/imgui/issues/123
I guess you can follow some of the rules he has like Write usage code first and such.

I'm not sure about allocating memory first though, it would work for somethings but for like continuous data app like an IRC where you get tons of messages. I guess you can allocate a big chunk like let's say 1GB and when you run out, delete the old messages? It might be a bit tricky.
C0D3
I guess you can follow some of the rules he has like Write usage code first and such.

I'm not sure about allocating memory first though, it would work for somethings but for like continuous data app like an IRC where you get tons of messages. I guess you can allocate a big chunk like let's say 1GB and when you run out, delete the old messages? It might be a bit tricky.

Game or not, the user doesn't have an infinite amount of memory. And unless you're writing something that is a primary application (think web browser), you need to keep your memory footprint as small as you reasonably can. And for that, pre-allocating (or at least allocating in discrete chunks) is a pretty good idea.

(The way things like IRC clients handle this is: you keep a small buffer of backlog, and write the rest out to disk. Any IRC client that allocates a GB of memory is going to get canned immediately.)

poohshoes:
There's certainly nothing *stopping* you from writing a normal application this way. The difference is that you can't necessarily assume you have full control of the machine. With a game, (especially a fullscreen one), we can feel pretty confident that we don't need to leave plenty of memory and CPU time on the table for other processes. With an application, you usually do. This isn't *hard*, but it's a thing to keep in mind.