Hello. Would like to help this great RTS.

Hi guys. It seems you fellas have the only existing, free, WWII RTS. And it also focuses on realism - my favorite!

I love aviation and have a passion for it and WWII, tactics, any of that type of thing.

I am a C++ programmer and simulator developer, and couldn’t pass up an opportunity to work on this RTS. I love WWII strategy simulators.

I also use Python for some things, and I have little experience in Lua, but I can adapt to new languages fairly quickly.

I can also do some Modelling and UV mapping to help out as well. I see a lot of potential in this RTS game, and I really want to see it get the publicity it deserves. I think it could compete with the commercial ones with enough work.

You can see my current game project here: fighterstw.co.nr
And my programming website here: skyreignsoftware.net16.net

to see what I have done/can do.

Now, I need to know:
Where can I find the scripts/files or create some to spawn units on the map? I really want to develop further the singleplayer aspect of this game. That is, as I see it, the core of any WWII RTS. Of any game, for that matter. It is a more realistic setting for combat.

Thank you! I look forward to working with you guys. (btw, I have the latest subversion of Spring 1944)

There are some tools for making single-player missions, but as I haven’t used them (and I’m not sure they even work with latest spring version), I’ll just explain how I’d do it using scripts.

To spawn something on the map, you can (for ex.) use luaRules. A gadget can create units in game frame 1 so they will appear on the map at game start. This by itself can provide for some kind of simple mission (with static enemy that only shoots if something comes to it). If you want something a bit more interesting, there should be some sort of enemy AI controlling those units (or at least a set of event-driven scripts that react to things like player units entering some location, some units being destroyed, etc.). All of that can as well be done with luaRules - you can use the same GameFrame() callin (and some others, like Killed() to track destroyed units, etc.) to check for conditions. Gadgets (code from LuaRules) has nearly full control over the battlefield - they can read information, issue orders, etc., so everything a player can do with his units is possible for them as well, and even more.

Examples of spawning units, checking GameFrame and such can be found in LuaRules folder inside of svn (since they are used a lot in game already). There is even a whole lua AI in there (CRAIG), but it’s not designed for missions and I don’t know how it will use pre-spawned units (it may just decide to go attack with them immediately).

I suggest you go to #s44 channel on lobby server and ask there as well. There will surely be more questions, and we can better answer them in realtime mode. Look for people with [S44] tag there.

Thanks buddy. I’ll look into that. So the units CAN be triggered by events, and will enter combat when they get close enough, even without being bot controlled? That would actually be ideal. Do I need to use a bot for these missions? If I could just control them or tell them where to go based off of script events or their own reactions when in proximity to the player, that would work fine. I’d rather not have a bot, actually. That way missions could go more as planned, not simply attacking the player base with all you’ve got.

Also, how do I make my mission script load at startup? Say I wanted to play one mission over the other, is there any way I can load the scripts before starting a game?

Welcome!
Feel free to have a look at airplanes. Their behaivour could be improved.
If planes would gain height after they passed their target it would improve their performance for example.
Another is to have selection buttons for planes poping up everytime the planes arrive.
I am trying to implement that but I don’t know how to write code. :slight_smile:

Units will do basic things (patrol, attack-move, shoot at enemies in range) without any AI controlling them. You can issue orders from luaRules, they will obey (and they will shoot at enemies automatically unless you specifically set them to Hold Fire). They may decide to chase enemies as well, depends on settings in unit file (some are set to not chase specific categories of enemy units).

You can see how an AI-less player behaves by doing this: start spring.exe directly, choose map and S1944 as mod, then start Empty script. You’ll get a map without units at all. You can then do /cheat and use /give commands to spawn various units for players. And you can control those units with /player command, give them an order, then switch to another player and command another group of units to engage them, etc.

And there is always the NullAI which comes with spring engine. That one just does nothing, allowing you full control from lua side without interference.

As for the mission loading at startup, it’s possible by using luarules folder in map archive. Then, when this map is loaded, code from there will run. There should be some way to cause another map to load after finishing the current one, but I don’t know how that’s done (might need to see how Kernel Panic does this, that’s the most probable game to have the feature, excluding commercial PURE).

Or /cheat /spectator /godmode, then you can control and see all units of all teams at same time :slight_smile:

/globallos is sometimes useful too when testing, then also all units can see everywhere.

Spring.Restart probably.

(Takes a new start script, restarts Spring.)

  1. I have written the the single player aspect of Kernel Panic. (Except the AI which was started by KDR_11k.)

  2. I have ported it to Gundam last week.

  3. By doing so, I realised how raw, buggy and incomplete it is. Though I’m not even sure anyone else than me could make mission with it. Luckily, you said you’re a programmer, so I hope you can deal with the quirkness of workflow required to make missions with my tool.

  4. I’m NOT asking for help to debug and improve my Lua code, I’ll do it myself. Some time. Maybe.

  5. But I would be happy if some people could use it to create missions.

  6. I could fairly easily port to it to S44.

  7. But last time I decided to help S44 on the single player front, it was politely ignored.

  8. So I’m unsure about 6.

  9. If you’re motivated enough, you could check those two links:

Kernel Panic single player is the most useable, but has older code, and KP-specific code. If you’re a linux freak that can’t run Windows installer, then KP mods+maps @ jobjol.nl/1684 Kernel Panic single player menu is triggered by pressing Esc ingame or by running Spring.exe directly, without a lobby.

Gundam single player is incomplete (only one mission (in which units don’t even do things)), less variety in skirmishes (several buttons in skirmish screen do nothing)), but has the most recent and easy to port code. The Gundam installer I made has all my single player stuff located in a small GUNDAM1.21SP3.sd7 (name subject to change!) mutator, while the huge GUNDAM1.21.sdz is the untouched Gundam mod archive without SP. What I mean, is that the Single Player part that would need to be ported to S44 is well isolated in its own sd7, so you won’t have to wade through all the mod data and code to slice it out.

  1. I could write page and pages of explanation about how my tool works, but then you’ll vanish and I’ll feel stupid again for putting too much effort answering some newbie that won’t even stay around long enough to notice my answer. But you’re in luck for I have already typed an “How To Make Missions.txt” for Gundam:
    [size=1]How to make missions:

  2. Uninstall Spring, delete the Spring folder, and kill your dog.

  3. Install Spring using my installer.

  4. Run a multiplayer lobby (TASClient or SpringLobby).

  5. Host a game of “Gundam RTS Single Player 1.21 SP?”. Not “Gundam RTS 1.21”. It must be “Gundam RTS Single Player 1.21 SP?” (where ? is a number subject to change.)

  6. Head over to the mod option tab

  7. In “Commander Unit” pick “sandbox”

  8. Add some ‘Zeon: landmap’ or ‘Federation: landmap’ bots. No other kind of bot!! Only those two Lua bots!

  9. Set up team colors, alliances, sides, map, mod and map options, and all that kind of stuff.

  10. Run game.

  11. Wait enough for the starting units to have spawned, but not enough for the chickens to have multiplied.

11a) Press F11, enable the dump widget!!

  1. Use the ENTER key to bring the console.

  2. Type: /dump my_mission

  3. Quit

  4. Go to C:\Games\Spring\Missions\Gundam

  5. Open my_mission.txt

  6. Right under every AIDLL=…: landmap; add aioverride=Idle;

  7. Run Spring, using my Gundam Single Player shorcut, or running Spring.exe directly (or also through a lobby if you wish).

  8. Press Esc to bring the menu if it doesn’t show.

  9. Go to mission menu, click my_mission

  10. If Spring doesn’t reload, go complain to Auschb… Auswch… Go complain about Spring.Restart being broken.

  11. Assuming Spring reloaded fine: You can now start building the mission.

  12. Use ENTER to bring the console. Type /cheat then, to be first team, /team 0, to be second team, /team 1, etc…

  13. You might get a game over screen when changing team, just press esc to cancel my menu and move the game over window to the corner of the screen and ignore it.

  14. For each team: Use the magic flying tree to add features: trees, rocks, and above all, walls. If you misplace a feature, you can erase it by placing another feature with the footprint overlapping a little, or use the reclaim button.

  15. For each team: Use the magic minigaw and the magic miniwhitebase to add units. Rotate them to add more variety. You can also spawn units with commands such as /give 9 gouf. To remove units, sell them. Mobile units can be autodestucted with Ctrl D, but first move them far away so schnarpel doesn’t damage nearby units. If you plan on having a Regenerative AI, make sure it has all the factory, constructors, and commyard to rebuild everything you want it to be able to rebuild. Make sure there are mobile constructors scattered far apart so it can recover from having half the base destroyed.

  16. As long as /cheat is activated, the game state is autosaved every minute. This can help for when for instance you spent minutes carefully placing units and then accidentally move them, or things like that.

  17. Set any unit states you want such as repeat, hold pos, etc…

  18. Pause the game. Enqueue orders. You can use move, fight, patrol, build orders, etc… You cannot (yet) use orders where the target is a live unit (attack, guard, …)

  19. Switch back to the team the human player is supposed to be (most likely /team 0)

  20. Type: /dump m2 (where m2 is any name you want. Avoid spaces though.)

  21. Exit

  22. Open C:\Games\Spring\Missions\Gundam\m2.txt

  23. Change comm=sandbox; into comm=std;

  24. Change MyPlayerName= as well as name= in the [PLAYER0] section. Make sure they match!!

  25. You might want to edit some of the previously added aioverride=Idle; into aioverride=Regenerative AI; to make the mission harder.

  26. In each [AI?] section, change the Name= to something meaningful. Do not touch the ShortName= !!! The Name will show up in the adv player list, assuming Smoth include this widget in Gundam.

  27. For each [TEAM?], check the list of u??=

  28. My code is imperfect and might dump some commands incorrectly, or add uneeded commands. You will have to manually clean them. I noticed the reloading fails when the startscript gets very long (like 400 units, each with a queue), so if that happens, shorten the lines by removing all the useless orders. About any text editor has a “search and replace every instance of X by Y”. That helps when you need to replace every instance of an erroneous command by a space!

  29. You can also edit manually some line, changing rotation, changing unitname, adding some orders (such as TimeWait 30 (where 30 is time in seconds)), or Transfer 0 (where 0 is the team number to which to give the unit)), etc…

  30. I have not written a manual of the syntax of my u?= lines. Most of the keywords can be found in \LuaRules\Gadgets\libs\dump_units_lib.lua inside the mod, but that’s something only a modder would know how to reach. But know that often, the same thing can be written in different ways, for instance the keyword “position” can be omitted (first two numbers will be assumed to be position), the space between a keyword and its numerical value can be omitted, and keywords often can be abbreviated (So TW120 does the same as TimeWait 120 for instance). I hope just looking at generated game state dumps will be enough to gather their syntax.

  31. You can add, remove, copy paste’n’edit the u??= lines. The number of the u do not have to follow, you can skip or have hole in the u??= numbering. For instance you can have u7985= followed by u15= Only thing important is two u??= lines of the same team cannot have the same number.

  32. Once you’re done, give us the .txt of your mission, so Smoth can add it inside the mod for the next Gundam version, assuming your mission doesn’t take place on an odd map with a large filsize.[/size]

The message reads like a drink of vinegar mixed with lemon juice.

I was talking about a proper singleplayer for S44, not an application that does something that SpringLobby does, only with less options.

I didn’t say I would make a great singleplayer, but I would like to help. Though I am very busy already with my own simulator development project, on which I am the only person working.

Yeah, it seems I lost my friendliness. Sorry about that, nothing personal.

I see you failed at reading my post. I see you didn’t try KP single player to see what it’s about.

I see you’re quitting before even starting.

No wonder I’m sour!

The Kernel Panic launcher actually does offer more than SL, including missions, there just aren’t enough missions actually scripted thus far for that to be more often used than SL. There is at least one mission Nemo made for 1944, which I can’t recall at the moment, and on the main Spring forums there is the ongoing development of the Mission Editor - the use thereof being implicit in the name.

Mainly cause Nemo and I did not decide on how we’d make them known to SL yet.

I went the route of not having them known by lobbies. Single player shouldn’t require an online lobby. The (new) frontend I use is a widget included in the mod. Missions are stored in /Missions/modShortName/. (both inside the mod archive and out).

TASClient has its own way for mods to list missions and campaign, but I see koshi knows about it.

A distinct project from mine. My mission editor is merely playing in god mode. Then I have a gadget to store and restore the gamestate.