GLSMAC - Open-source OpenGL/SDL2 remaster of SMAC

So, the break is over :cool:
Next steps for coming month(s):
1) finish multiplayer lobby (add all UI, change factions, difficulty levels etc, synchronize everything between players)
2) multiplayer game initialization (once game is launched - everything gets synchronized to clients)
3) simple gameplay - every player will get some mind worms (because they are sprites and sprites are already implemented) and there will be sequential turns (and maybe simultaneous too) where they can move it and everything gets synchronized properly
4) ability to leave and join running game at any moment (players will get some unique ids that will match them to in-game 'faction')
5) saving/loading games by host (both from lobby and from within running game)
That will complete v0.3 milestone. For now I'll work mostly on weekends, so this may take a month or so.

6) Finally, I will (try to) implement CVRs (at this point everything will be ready for giving players some CVR units so testing will be easy). That may be a long one but who knows.

Also, after (if) I succeed with CVRs I'll create Patreon and start accepting donations, aswell as some crypto wallets. The reason I'm not doing it now because CVRs is big milestone with unclear chance of success so better to handle it first to be 100% confident that project will be completed to at least v1.0. Donaters will be added to special 'credits' page somewhere and maybe other perks.
 
Hi there! It's great to hear you're back in the saddle. I'm sure I speak for an army of fans eagerly awaiting the next steps with support and gratitude!

I'd have another question/suggestion, concerning the factions. We saw in the old game lore that certain factions - Data Angels, Cybernetic Consciousness, Free Drones, Cult of Planet, both Progenitors - don't come into existance immediately upon the Unity disaster event, but instead represent a fracturing of already existing factions through rebellion, schism, arrival from space etc. Now, while the Progenitors indeed arrive some 5 turns later, all the other listed factions start at Planetfall, which doesn't really fit the lore. Would it be possible to have delayed starts for these factions?

For example:

  • The Data Angels would appear the first time Morgan Industries gets into a war with another faction or factions. The Morganites and all factions involved in the conflict - unless one of those are the Believers, or the Cult of Planet - would get an interlude and lose 1 pop, and the Angels would get a base with the pop level that's the total of what the others lost in the event.
  • The Cybernetic Consciousness would separate almost immediately from the University, like one or two turns later, following an interlude from the Book of Planet for the University faction and a loss of 1 pop at the main base (if viable).
  • The Cult of Planet would appear the first time indigenous life forms attack a base or, alternatively, the first time a faction other then Gaians obtains Centauri Ecology. Gaians, Spartans and Morganites would get the interlude, a proclamation of this new faith, and lose 1 pop from their youngest viable base (to symbolise a fringe frontier element). The Cult would get a pop 3 base. The other factions have ideologies and social structures that should enable them to avoid getting these fanatics, or to quell them, so it wouldn't make sense for them to get the event. Besides, it's good for gameplay to have a pop 3 base, and not a pop 10 base or something for a fringe upstart.
  • The Free Drones would appear the first time there's a riot in one of Yang's bases, would gain a pop 3 base (mass movement), and the Human Hive faction would lose 1 pop in 3 of its biggest bases. All factions would get an interlude, as a wide appeal and call for the drones to rise up and carry out the socialist revolution. The Drones should start with a Vendetta against the Human Hive, possibly far away from them, with contact lost.

As for the Progenitors, I'd suggest that their arrival be moved a bit later for huge-map players, because it doesn't make sense storywise to have them appear while the humans are still our seeking each other. Perhaps have them appear 10 turns later for huge map and 5 turns later for normal map?

Now, I realise that the suggestions above are only for the player who hasn't chosen those factions, while choosing any of them would require a different mechanism because there is no game until the player enters.
In that case, maybe something like this could be done:

  • The Data Angels would start 4 turns later for normal map, 6 moves later for huge map players, during an ongoing factional war.
  • The Cybernetic Concsiousness would start 1 turn later regardless.
  • The Cult of Planet would start 2 turns later for normal map, 4 moves later for huge map.
  • The Free Drones would start 3 turns later in any case. The logic behind this is that Yang's regime had 1 year of stability immediately after Planetfall, 1 more year of brutal repression that got people scared, and then, on the third year, people got over the shock and rose in rebellion. In this start, there should be drone riots at the Human Hive bases. The Drones should start with a Vendetta against the Human Hive, possibly far away from them, with contact lost.
The Data Angels, the Cybernetic Counsciousness and the Free Drones should start with all of their parent-factions technologies, since they all represent professionals that were involved in those faction's development and progress, by hand or by brain.
The Cult of Planet, however, should start from the beginning, without any additional techs, since it's founded by desperate and superstitious fringe elements.

I know this is a lot, and I know that we who have no idea about programming can seem like we're taking the whole thing for granted. This is not a demand by any stretch. Just a suggestion, in case it's feasable. I assumed it'd be better to suggest it early on, when few things are decided upon.

Thank you for reading and considering this proposal.
Good luck!
 
Lobby is complete - now host can configure all game settings, gather players, kchat, they can do their selections. Game "starts" when everyone presses ready. Turn timer and custom game options will come later.

I tried to preserve the feel while making it more convenient and flexible. Key differences:
- slots can be "Open" or "Closed" (there will be "Computer" option aswell after AI is implemented). Number of slots is fixed for now but later they'll be dynamic (so host can add or remove them)
- game starts only after everyone toggled "ready" button

Next steps: upon game launch map will be generated on host and sent to players, then game will start for everyone in synchronized state.

Sorry it took a while, barely had free time and polishing netcode and UI is tedious, it will get better now (I'll also take 2-4 weeks of 'vacation' in autumn/winter which will help too)
 

Attachments

  • lobby-image.png
    lobby-image.png
    167 KB · Views: 134
For example:

  • The Data Angels would appear the first time Morgan Industries gets into a war with another faction or factions. The Morganites and all factions involved in the conflict - unless one of those are the Believers, or the Cult of Planet - would get an interlude and lose 1 pop, and the Angels would get a base with the pop level that's the total of what the others lost in the event.
  • The Cybernetic Consciousness would separate almost immediately from the University, like one or two turns later, following an interlude from the Book of Planet for the University faction and a loss of 1 pop at the main base (if viable).
  • The Cult of Planet would appear the first time indigenous life forms attack a base or, alternatively, the first time a faction other then Gaians obtains Centauri Ecology. Gaians, Spartans and Morganites would get the interlude, a proclamation of this new faith, and lose 1 pop from their youngest viable base (to symbolise a fringe frontier element). The Cult would get a pop 3 base. The other factions have ideologies and social structures that should enable them to avoid getting these fanatics, or to quell them, so it wouldn't make sense for them to get the event. Besides, it's good for gameplay to have a pop 3 base, and not a pop 10 base or something for a fringe upstart.
  • The Free Drones would appear the first time there's a riot in one of Yang's bases, would gain a pop 3 base (mass movement), and the Human Hive faction would lose 1 pop in 3 of its biggest bases. All factions would get an interlude, as a wide appeal and call for the drones to rise up and carry out the socialist revolution. The Drones should start with a Vendetta against the Human Hive, possibly far away from them, with contact lost.
This won't work well in Multiplayer, this is more suitable for scenarios or campaigns.
For multiplayer: balance > lore
For singleplayer scenarios or campaigns: lore > balance
Of course custom rules like these can be implemented as mod and used in multiplayer too, but default should be balanced.

I don't remember if I mentioned campaigns here yet, but yes they'll come somewhere after 1.x and will focus on lore heavily (and will need great scripts for them).
Lemme copy from discord:
Create a detailed campaign for every faction. Campaign will be made from several scenarios, maybe interlude texts between them, maybe some infographics like global map (to show progression), some lore pages that will get filled as you progress further (for example you get pages for Planet's native lifeforms when you encounter them, about faction leaders when you meet them, etc). So 14 campaigns in total. There will be new menu 'Campaign' under 'Start Game' which will expand to 14 somehow (maybe via intermediate 'Old Factions'/'New Factions' menu). I think they should be single-player-only because combining multiple players will be a lot harder to implement and even harder to balance. Player can do campaigns in any order, upon completion of all of them he'll get 15th campaign unlocked and it will be very special. Maybe also 'secret' 16th campaign if he completes everything on Transcend. Also there will be support for Custom Campaigns too (player-made, stored as single file containing all scenarios and relations between them). Campaign progress will require simple local account creation (first may be created by default, then player can add new ones or reset existing ones to reset campaign progress). Only local account, no need to register anything remotely. Every campaign level will have certain limitations on technologies, units, buildings, maybe number of bases, etc. First ones will be simplest, allowing to research only handful of technologies (or none at all), and will act like tutorials. Then maybe some in-game progress like technologies will pass to next mission (similar to how skills/items of heroes pass to next scenarios in Heroes 3) so player will start with some things he already researched. So every next level player will have access to more things and will face greater challenges, in last mission of every campaign he should have everything unlocked.
 
This won't work well in Multiplayer, this is more suitable for scenarios or campaigns.
For multiplayer: balance > lore
For singleplayer scenarios or campaigns: lore > balance
Of course custom rules like these can be implemented as mod and used in multiplayer too, but default should be balanced.

I don't remember if I mentioned campaigns here yet, but yes they'll come somewhere after 1.x and will focus on lore heavily (and will need great scripts for them).
Lemme copy from discord:
Could you please post (or repost?) a link to the discord channel where this can be followed?
Thank you for your answer and all your work!
 
This won't work well in Multiplayer, this is more suitable for scenarios or campaigns.
For multiplayer: balance > lore
For singleplayer scenarios or campaigns: lore > balance
Of course custom rules like these can be implemented as mod and used in multiplayer too, but default should be balanced.

I don't remember if I mentioned campaigns here yet, but yes they'll come somewhere after 1.x and will focus on lore heavily (and will need great scripts for them).
Lemme copy from discord:
Also, does this campaign plan exclude the regular sandbox-style single player? I hope there will still be an option to play the game the old way, Planetfall-to-victory, and still experience most of the lore.
I've never been much into scenarios in the old game, tbh.
 
Could you please post (or repost?) a link to the discord channel where this can be followed?
You can find it on github ( https://github.com/afwbkbc/glsmac ), it's in the very beginning of README :) Channel is named #campaigns under 'GLSMAC 1.x FEATURES' category

Also, does this campaign plan exclude the regular sandbox-style single player?
Of course not, nothing will be excluded, goal is, as always, to replicate full game by version 1.0 and then add optional additive extras.

Small update: it's now possible to start multiplayer 'game' via lobby -
:crazyeye:
Took a while and there isn't much visual to show about netcode (also had to refactor engine structures a lot), but when in doubt you can always check git log to see that development is alive and well :)
 
Last edited:
v0.3 has been released :crazyeye:

[v0.3] - 2023-11-08​

Added​

  • Slots, players, connections, local accounts, GSIDs, binding GSIDs to slots when creating new game
  • Multiplayer lobby: faction selection, slots management, kicks and bans, map settings configuration, map loading, readycheck
  • Hosting and joining games via lobby
  • Joining running games
  • Map downloading from server to players
  • Networking support on Windows
  • In-game chat
  • New command-line parameters:
    --nosound
    --skipintro
    --windowed
    --window-size
    --quickstart-mapsize
    --prefix

Changed​

  • Separate thread for game/map processing
  • Separate thread for networking

Fixed​

  • Fullscreen toggling
  • Overlapping objects clickthroughs and duplicate mouseovers
  • Stuck mouseovers
  • Bug when packets not fitting into buffer caused network freeze
  • Network errors now cause disconnects instead of crashes
  • Clang warnings
  • Coding style
Now the fun part begins :)
 
Just had issue where moons in main menu overlapped 'Sid' word, then it turned out they screwed SMACX background so it happens in original SMACX too.
However, this doesn't happen with original logo.
Then I also gave it some thought - and it really makes sense to put logo with name of actual game (Alpha Centauri) than of expansion, right? For example we don't want to confuse new players to think the game is called 'Alien Crossfire'.
Original logo also looks good with moons.
Are there any reasons to use Alien Crossfire text in main menu? For now I think - why not use original 'Alpha Centauri' logo but with Alien Crossfire theme. Also, logo color itself may be changed by opengl into something other than blue. Colors of menus and UI can be modified too. What do you think?

I've pried the logos from the background for my little audio/video project, you may find them useful to handle separately to avoid overlaps, stretching etc. The alpha channel on the pics may need some adjustment but I found they work well.
 

Attachments

  • smac_title.png
    smac_title.png
    80.4 KB · Views: 65
  • smacx_title.png
    smacx_title.png
    120.4 KB · Views: 75
Last edited:
Hey, anothe question, re: Colony Pods. In the original game, they're treated almost like Settlers in Civ2 (minus terraforming) and when attacked, they act, as the Civ2 Settler acted, as a military unit, engaging in combat and almost inevitably getting destroyed. Would it be possible to make the new Colony Pods more like Settlers in Civ3 and later, when they're non-combat units that can be captured by enemy troops of the same species?
 
I've pried the logos from the background for my little audio/video project, you may find them useful to handle separately to avoid overlaps, stretching etc. The alpha channel on the pics may need some adjustment but I found they work well.
Hi, GLSMAC can't ship any custom images due to copyright reasons, can only work with what's inside original SMAC distribution. But thanks.

Hey, anothe question, re: Colony Pods. In the original game, they're treated almost like Settlers in Civ2 (minus terraforming) and when attacked, they act, as the Civ2 Settler acted, as a military unit, engaging in combat and almost inevitably getting destroyed. Would it be possible to make the new Colony Pods more like Settlers in Civ3 and later, when they're non-combat units that can be captured by enemy troops of the same species?
Sure, but via modding, default behavior will be the same as in original everywhere (except for obvious bugs).

Small update:
I implemented scripting engine (GSE or GLSMAC Scripting Engine), game logic will be implemented in it. It's similar to javascript but simplified. Check https://github.com/afwbkbc/glsmac/tree/main/gse if curious :)
Now getting close to functional units and factions, players will be able to move units (and maybe do combat too!) next week :crazyeye: Every step gets tested in multiplayer too, of course.
 

Attachments

  • 2024-02-18-133802_1920x1080_scrot.png
    2024-02-18-133802_1920x1080_scrot.png
    2.8 MB · Views: 41
Hi, GLSMAC can't ship any custom images due to copyright reasons, can only work with what's inside original SMAC distribution. But thanks.
That is ... strange, coz these are the original images with the background taken out (little more than difference openinga.pcx - credits2.pcx), appear independently in manuals etc., and calling them "custom" is ... funny to say the least ... unless, yeah, someone is a copyright lawyer. No worries, I'm used to the fact that these restrictions function to restrict independent creativity and generate revenue, and it's no surprise.

Fantastic project, thank you for doing it.
 
I wouldn't focus on the "custom" part of his sentence too much as it doesn't really matter whether it's tampered with or not. If his remake only works by loading images & other media from peoples original SMAC installs then he should be pretty safe. So many fan mods & remake projects out there have been stopped by overzealous publisher legal departments due to fan devs not taking that precaution. Granted with old SMAC the license holder probably wouldn't care but meh, no need to take the risk if you don't have to.
 
Last edited:
no need to take the risk
^ this, just not worth it.

Finished with unit badges, also added morale-dependent native lifeforms sprites, short demo -
(actual multiplayer with 7 GLSMAC instances running on same PC, connected via localhost)
And some pics.
 

Attachments

  • 2024-02-19-001444_1920x1080_scrot.png
    2024-02-19-001444_1920x1080_scrot.png
    3.5 MB · Views: 41
  • 2024-02-19-001500_1920x1080_scrot.png
    2024-02-19-001500_1920x1080_scrot.png
    3.3 MB · Views: 31
  • 2024-02-19-001611_1920x1080_scrot.png
    2024-02-19-001611_1920x1080_scrot.png
    3.2 MB · Views: 55
Very nice.. while I visit occasionally I haven't been able to keep up with all the discord discussions but how are things looking for you now with the SMAC modders old nemesis.. accessing the voxel units?

For nearly a couple of decades now the Command & Conquer community has had full access to the voxel units in C&C2 Tiberian Sun and Red Alert 2 allowing them to access via fan remakes as well as extracting, importing and creating custom units in the original games with various fan made editors so I always found it strange that the SMAC modding community never had the same breakthrough. Always wondered whether Firaxis did it differently in some nasty way that's harder to access or if it was just because the C&C+RA community was much bigger with more gurus to tackle the problem.
 
but how are things looking for you now with the SMAC modders old nemesis.. accessing the voxel units?
I will implement CVRs after sprite units, bases, turns and combat are fully functional, most likely I'll start in March.

Speaking of modding, later GLSMAC will also allow to import different, more common 3d model formats so modders will have easy time. Units (including rendering info) are configured with easy scripts.
 
Hi everyone! @nj666 I've been playing SMACX lately (w/Thinker's mod) and to be honest, it's not easy on the eyes on a 1440p monitor. Since I'm not a coder, is there a way to access / add to the game the stuff you already created? Vector map and fonts would already be a huge improvement for me. Thanks! (I play on windows 10, exclusively single-player).
 
Top Bottom