(in-) engine menu

(in-) engine menu

Discuss game development here, from a distinct game project to an accessible third-party mutator, down to the interaction and design of individual units if you like.

Moderator: Moderators

abma
Spring Developer
Posts: 3798
Joined: 01 Jun 2009, 00:08

(in-) engine menu

Post by abma »

With the newly added function Spring.Reload() it is possible to create a proper "in-engine" menu. Did someone already start such a project or is there already some useful content for that?

afaik gajop did some work towars an ingame lobby, but idk if there is already some code which allows to setup a game.

Whats (imo) needed:

1. empty / VERY small map, ideally lookling like current background menu image ;)
2. "empty" game which loads some chili-based
3. small engine change which loads the menu (atm just the menu- map & game) as default when no parameter is set

to hopefully bundle efforts i have setup an empty repository for map & game:

https://github.com/spring/menu-game.sdd
https://github.com/spring/menu-map.sdd

primary goal imo should be:
4. allow to setup a single player game with selecting game/map & ai
5. edit settings
6. replace the current menu

mid term goal could be:
7. select missions / campaign
8. "switch" game menu
9. lobby
10. download game/maps/missions
- etc.etc.

engine side, some stuff could be optimized:
- improve load time of menu
- allow to keep a lobby server connection / keep some lua state between reloading maps/games

thoughts? will/would this work? or ideally: is there already such a project?

i've never created a map or game, so i need some help here.
User avatar
Jools
XTA Developer
Posts: 2816
Joined: 23 Feb 2009, 16:29

Re: (in-) engine menu

Post by Jools »

abma wrote: 2. "empty" game which loads some chili-based
...
6. replace the current menu

thoughts? will/would this work? or ideally: is there already such a project?
That would essentially force all games to use chili, and that's not so nice.
abma
Spring Developer
Posts: 3798
Joined: 01 Jun 2009, 00:08

Re: (in-) engine menu

Post by abma »

That would essentially force all games to use chili, and that's not so nice.
thats just wrong... basicly its a dedicated game which can load other games. no/very few dependencies are between menu and the game which is loaded. you clearly didn't understand the proposal.
User avatar
smoth
Posts: 22309
Joined: 13 Jan 2005, 00:46

Re: (in-) engine menu

Post by smoth »

Abma, what is the image you need made?

So you want to essentially create a small loading zone for games? that is pretty cool. How would you handle downloading maps for missions etc? just assume they will have what they need? IIRC one of the shortcomings of lualobby was it cannot do rapid stuff yet.
abma
Spring Developer
Posts: 3798
Joined: 01 Jun 2009, 00:08

Re: (in-) engine menu

Post by abma »

Abma, what is the image you need made?
no need for an image, a small map is needed which is shown as background of the menu. basicly the same as kernel panics menu. but it should be "neutral", so something "realistic" would be good. maybe this map could be already http://api.springfiles.com/?springname= ... rounds+v02 used?

i just want to ask if something already exists, so no time is wasted.
smoth wrote:So you want to essentially create a small loading zone for games? that is pretty cool. How would you handle downloading maps for missions etc? just assume they will have what they need? IIRC one of the shortcomings of lualobby was it cannot do rapid stuff yet.
yep, exactly. downloading is already wip and basicly works: https://springrts.com/mantis/view.php?id=4617
User avatar
smoth
Posts: 22309
Joined: 13 Jan 2005, 00:46

Re: (in-) engine menu

Post by smoth »

abma wrote: no need for an image, a small map is needed which is shown as background of the menu. basicly the same as kernel panics menu. but it should be "neutral", so something "realistic" would be good. maybe this map could be already http://api.springfiles.com/?springname= ... rounds+v02 used?

i just want to ask if something already exists, so no time is wasted.
No problem, let me know if you get any help. Worse case I can make it a map of the spring logo. I could probably get the image from AF in a larger resolution and do something creative with the logo on something like a 6x6 or something.
abma wrote:yep, exactly. downloading is already wip and basicly works: https://springrts.com/mantis/view.php?id=4617
OMG! Really?!?! that is awesome! is gajop aware?
abma
Spring Developer
Posts: 3798
Joined: 01 Jun 2009, 00:08

Re: (in-) engine menu

Post by abma »

smoth wrote:No problem, let me know if you get any help. Worse case I can make it a map of the spring logo. I could probably get the image from AF in a larger resolution and do something creative with the logo on something like a 6x6 or something.
only important thing is, that the map is small, so it loads fast :)


smoth wrote:OMG! Really?!?! that is awesome! is gajop aware?
yeah, gajop did most of it.
User avatar
smoth
Posts: 22309
Joined: 13 Jan 2005, 00:46

Re: (in-) engine menu

Post by smoth »

Small but realistic may be hard. I could try and use SSMF with a primitive texture but it still would be an interesting challenge. Would anything be happening on the map or does it need to just be a mountain or something?
Super Mario
Posts: 823
Joined: 21 Oct 2008, 02:54

Re: (in-) engine menu

Post by Super Mario »

What about a save feature for single player component? That something needs working on.(Which is great idea for bounty feature.)
abma
Spring Developer
Posts: 3798
Joined: 01 Jun 2009, 00:08

Re: (in-) engine menu

Post by abma »

Super Mario wrote:What about a save feature for single player component? That something needs working on.(Which is great idea for bounty feature.)
thats "etc. etc.", but implementing load/save is out of the scope of this thread as long as the engine doesn't support it. atm we have nothing menu-like written in lua, so we should start with the "small" things.

its just a drop-in replacement for the current menu. it can be easier customized and when we have the basics, advanced features can be added a lot easier.
Super Mario
Posts: 823
Joined: 21 Oct 2008, 02:54

Re: (in-) engine menu

Post by Super Mario »

abma wrote:
Super Mario wrote:What about a save feature for single player component? That something needs working on.(Which is great idea for bounty feature.)
thats "etc. etc.", but implementing load/save is out of the scope of this thread as long as the engine doesn't support it. atm we have nothing menu-like written in lua, so we should start with the "small" things.

its just a drop-in replacement for the current menu. it can be easier customized and when we have the basics, advanced features can be added a lot easier.
Why, not hook the already existing gui when you start the spring executable to lua then?
User avatar
Funkencool
Posts: 542
Joined: 02 Dec 2011, 22:31

Re: (in-) engine menu

Post by Funkencool »

I started something but got caught up with real life, so I haven't made any recent advancements. This was also before the advent of spring.loadmap(). At the time it was just set up for BAR but my plan was to make it agnostic.

https://www.youtube.com/watch?v=AQBTD6oUBIk

I mostly just hobbled a basic single player structure on top of gajops lobby code. I still have a lot of ideas and recent events (broken leg) have given some time I might spend on it. With that and the recent engine advances I might try turn it into something yet.

The last thing I really did with it was add it to github https://github.com/LebDooder/StartMenu though. So if anyone want's to see whether the code is worth anything, by all means ..
If I remember right most relevant code is here https://github.com/LebDooder/StartMenu/ ... dgets/Menu

Edit: Now that I look at the code again, I could easily strip away the frills and add game selection. I will have another look into finishing the basics when I get back to my desktop in a couple days
Last edited by Funkencool on 15 Feb 2015, 07:57, edited 2 times in total.
User avatar
smoth
Posts: 22309
Joined: 13 Jan 2005, 00:46

Re: (in-) engine menu

Post by smoth »

VERY NICE man, that must have been a lot of work!
User avatar
Funkencool
Posts: 542
Joined: 02 Dec 2011, 22:31

Re: (in-) engine menu

Post by Funkencool »

Thanks smoth :-)
it's no where near as complete as in my brain but I am surprised how far I got as quickly as I did. A few brick walls did steal a lot of my attention though ( getting minimaps etc. in game ) and quite possibly burnt me out on it. With that said, I'm begining to feel the itch again
hokomoko
Spring Developer
Posts: 593
Joined: 02 Jun 2014, 00:46

Re: (in-) engine menu

Post by hokomoko »

A small suggestion:

Have a default script file that will run said menu if engine is being started with no command line parameters. That will allow games to easily replace the menu with customised versions.
gajop
Moderator
Posts: 3051
Joined: 05 Aug 2009, 20:42

Re: (in-) engine menu

Post by gajop »

Funkencool did the most work in that area so far (basing some of it on chililobby). Since then, chililobby has had a few changes and I think I would need to help Funkencool with updating to it, but there's still a lot of time before chililobby can get a new stable version, and I ask people not to use dev versions.

I'm personally not sure we need an engine-default in-game lobby, but the existing one could be dropped when Lua alternatives become available.
abma wrote: Whats (imo) needed:

1. empty / VERY small map, ideally lookling like current background menu image ;)
3. small engine change which loads the menu (atm just the menu- map & game) as default when no parameter is set
I'd rather there be an engine change which allows in-game lobbies to be loaded without maps.
Is this what LuaIntro is supposed to be?
abma wrote: 5. edit settings
I'm not really sure that a user version of an in-game lobby should expose all spring settings. I would certainly not do it if I was making this for players, or make it hidden below a few "Advanced", "Detailed options" menus.
It still might be important to have it since we often recommend users to change an arbitrary setting when troubleshooting, but designing such a system so they don't break their configs requires some thinking.
abma wrote: 7. select missions / campaign
Needs a mission/campaign format implemented. I just shiver of the thought of restarting that discussion as I remember how unproductive that was last time it was attempted.
abma wrote: 8. "switch" game menu
Needs clarification.
abma wrote: 9. lobby
If you want a full in-game lobby, then it might be best to just use chililobby for this from the start. This would be my preference too - I see no reason to limit ourselves to just singleplayer skirmish initially (joining a multiplayer game is even easier than starting a singleplayer one).
abma wrote: 10. download game/maps/missions
Am on it, but not that much free time. :cry:

abma wrote: engine side, some stuff could be optimized:
- improve load time of menu
(Re-)creating the cache is something that can take too long and that might drive away new users.
I think it would be great if spring could have a command line parameter that would update the cache (and do just that), so games can do that in the installation phase.
Once Spring starts, the menu is loaded instantly.
abma wrote: thoughts? will/would this work? or ideally: is there already such a project?
To summarize: I just want the ability to load the in-game lobby, without any map. I don't want any hardcoded engine default, although I would like to see a future like this:
1) Games with an in-game lobby use chililobby(+liblobby) and extend it/brand it as they see fit (ideally just by changing settings/API, but maybe even by forking it and modifying code).
2) A default chililobby still usable by gamers without any branding (much like SL and SWL).
3) An easy way to start Spring with one of these lobbies. (I have no idea how to do that without making one lobby the default, and rest configurable by params or springconfig.cfg).

I really want to work with funk on chililobby as he seems to be an early adopter. I didn't know there was already a repo available, so I went and implemented the background image support in chililobby -> it's configurable, and the default is pretty neutral. I do need a good Spring-related, but game-neutral background image I can use if anyone has suggestions.
I'll do my best to solve some hard problems so ideally lobby developers only have to think about configs, skins and extra widgets they'd like to add, so if there's any other feature you'd like, feel free to ask for it.

PS: Ofc I wouldn't mind if people don't use chililobby, but that just seems irrational atm as there's no alternative.
User avatar
Jools
XTA Developer
Posts: 2816
Joined: 23 Feb 2009, 16:29

Re: (in-) engine menu

Post by Jools »

abma wrote: you clearly didn't understand the proposalI'm sorry the first post was unclear.
User avatar
Funkencool
Posts: 542
Joined: 02 Dec 2011, 22:31

Re: (in-) engine menu

Post by Funkencool »

5. edit settings
This would be doable with my code for the BAR menu very easily. Although that code still has some issues to deal with; it should be much easier in an out of game environment (where a restart to see settings take effect is no big thing).
gajop wrote:
abma wrote: 7. select missions / campaign
Needs a mission/campaign format implemented. I just shiver of the thought of restarting that discussion as I remember how unproductive that was last time it was attempted.
Is there a large difference in how missions are started between any of the current mission makers?
I'm partial on making BAR's missions easily accessible (as I'm sure bluestone is too). So using those as an example, I and/or he might come up with something.

My biggest question right now is;
Is there currently a way to access all the info usually supplied by unitsync?
gajop
Moderator
Posts: 3051
Joined: 05 Aug 2009, 20:42

Re: (in-) engine menu

Post by gajop »

Funkencool wrote: Is there a large difference in how missions are started between any of the current mission makers?
There are currently only two major mission systems, ZK ME and scened.
Both work similarly, with the exception that ZKME's also uses the ZK infra to resolve dependencies on runtime afaik. Both are mutator based.
Funkencool wrote: Is there currently a way to access all the info usually supplied by unitsync?
You can get the same stuff you could get from a game, which is basically just it's name and author.
You still wouldn't get any team-limit information and similar that you'd need in order to setup these properly.
Discussing what's needed/lacking and why having a mission format is really out of scope of this thread, and has already been done before.
User avatar
Funkencool
Posts: 542
Joined: 02 Dec 2011, 22:31

Re: (in-) engine menu

Post by Funkencool »

gajop wrote: Both are mutator based.
That's good to know. I'm guessing mutator's basically just act as mods of mods in regards to the engine; or in other words games that depend on other games?
If so maybe I could just come up with some basic code to start mutators while largely ignoring the rest of the mission format until that's settled on at a later time. Regardless, I'll look into it more outside of this discussion.
gajop wrote:
Funkencool wrote: Is there currently a way to access all the info usually supplied by unitsync?
You can get the same stuff you could get from a game, which is basically just it's name and author.
Then, I feel this should definitely be on the "todos" on the engine side ( I want my minimaps :P )
gajop wrote: You still wouldn't get any team-limit information and similar that you'd need in order to setup these properly.
Sorry but team-limit information? Is that in regards to the map config or something else?

gajop wrote: Discussing what's needed/lacking and why having a mission format is really out of scope of this thread, and has already been done before.
Maybe once I begin delving into my menu code again I'll start those disussions in a seperate thread;
But for now I'm just trying to get caught up on recent advances I might have missed. I don't really want to get any deeper than the answers you've already given me :-)
Post Reply

Return to “Game Development”