I am working on writing a StarCraft engine reimplementation. It is cross-platform and supports high resolution.
A screen-shot is attached, as well as a copy of the program itself.
EDIT: I've released a significantly improved version attached to this post.
Attachments:
Post has been edited 1 time(s), last time on Jun 13 2010, 9:21 pm by asymptote. Reason: released a new version
None.
Interesting work thusfar.
How closely are you planning on keeping this
to Starcraft? Also, any intentions of it being open source?
If it gets far enough, it could be quite neat to do things with that are impossible (or rather, impractically difficult to do) in current Starcraft modding.
None.
I attached a copy of my current source code, excuse any messiness as this is very much a work in progress. I am using MSYS/MinGW on Windows to develop in in C++ using the open source graphics/sound libraries SDL and SDL_mixer.
I also attached a copy of an earlier project to make an RTS engine. You middle click to add units, shift+middle click to add enemies, and ctr+shift+middle click to add "medics." You can press F3 to toggle frame limiting. I'll eventually merge features from both projects, but currently I am focusing on the StarCraft engine itself.
I intend on cloning the engine of StarCraft while enhancing the pathfinding, multiplayer features, and the interface. Some features I am going to implement are:
* Intelligent "cluster" based path-finding
* OpenGL rendering to support full-scene zooming
* WarCraft III style unit selection (being able to change the currently focused type of units within the selection to access their abilities)
* Queues for researching & constructing buildings
* Possibly adding "autocasting" for repair, defense matrix, etc (possibly would change the gameplay too much)
* Map previewing from the map selection screen (no need to host the game first)
* Being able to vote to go back to the game creation lobby upon leaving a game as the host, enabling players to follow them for quick rehosting
and anything else I can think of :-)
Attachments:
None.
* OpenGL rendering to support full-scene zooming
I'm not entirely sure what you mean by this. Mind elaborating?
I am using MSYS/MinGW on Windows to develop in in C++ using the open source graphics/sound libraries SDL and SDL_mixer.
How convenient; I use these (though I'm exceedingly inexperienced with anything).
None.
* OpenGL rendering to support full-scene zooming
I'm not entirely sure what you mean by this. Mind elaborating?
What I mean is you would be able to scroll the mouse wheel and zoom in and out of the battlefield, even seeing the whole map at once. This means you could even get away with barely using the minimap to change your view.
There is an open-source game called Dark Orberon that has this implemented:
http://dark-oberon.sourceforge.net/
None.
SDE, BWAPI owner, hacker.
I'm positive you lack information on how Starcraft works on the inside. If you had that, there's no doubt you'd be able to create a "true" clone with your own enhancements and portability, however, I don't think anyone has figured out how Starcraft's pathing works, and I have yet to reach that point myself.
I'm currently working on my own clone, which strictly follows the original very closely, and conforms to the variable names seen in Starcraft 1 Beta (debug strings). I have the intro video and data management nearly perfected, and now working on the menu and UI (I'm going in order instead of jumping to the game).
I'm hoping to create my own clone that is multiplayer-compatible with the original, and focus on portability later.
PyMS and ProTRG developer
This thread is full of awesome. I can't wait to see the progression of your clones! And nice screenshot of your progress so far asymptote!
@Heinermann: So are you going to replicate SC glitches, or are you only going for multiplayer compatibility in melee?
None.
* Intelligent "cluster" based path-finding
* OpenGL rendering to support full-scene zooming
* WarCraft III style unit selection (being able to change the currently focused type of units within the selection to access their abilities)
* Queues for researching & constructing buildings
* Possibly adding "autocasting" for repair, defense matrix, etc (possibly would change the gameplay too much)
* Map previewing from the map selection screen (no need to host the game first)
* Being able to vote to go back to the game creation lobby upon leaving a game as the host, enabling players to follow them for quick rehosting
A revamp of the trigger system would be nice, such as adding native support for the mouse, screen, text, unit positions etc. Also adding multiplication and division as an option for the triggers would do wonders.
Maybe even allowing custom unit graphics in maps and other unit properties like speed, attack rate.
None.
I'm positive you lack information on how Starcraft works on the inside. If you had that, there's no doubt you'd be able to create a "true" clone with your own enhancements and portability, however, I don't think anyone has figured out how Starcraft's pathing works, and I have yet to reach that point myself.
To be clear my clone is
not going to be multiplayer compatible with the official StarCraft client. The goal is an improved StarCraft, which means better pathing and would completely break the behavior expected by other clients. Plus as you said, I'd need to know how StarCraft worked down to the last detail.
The idea is to have a multiplayer-only clone that is more ergonomic in general, and has native Linux support.
II'm currently working on my own clone, which strictly follows the original very closely, and conforms to the variable names seen in Starcraft 1 Beta (debug strings). I have the intro video and data management nearly perfected, and now working on the menu and UI (I'm going in order instead of jumping to the game).
I'm hoping to create my own clone that is multiplayer-compatible with the original, and focus on portability later.
I have the resource management done, as well as the FNT file decryption. I was originally working on an RTS engine with no graphics, and now I am working on just the graphics aspect of the StarCraft clone. You ought to check out my posted "xsc_old_project.zip."
May I see what you have so far? I'm curious as we're working in parallel with similar goals.
None.
Very intriguing. I hope to hear more from both projects.
Weapons support has been added, try attacking other races with right click. All units are invincible currently.
NOTE: Goliaths/Tanks will not work as subunit support has not been added yet, and Reavers/Carriers use other units to attack (Scarabs/Interceptors) so they don't technically attack with a weapon.
NOTE: self-destructing a unit with DELETE will cause a crash if that unit is currently being attacked. This is because the engine currently has no death notifications nor polling so it will still reference the deleted unit.
I have also been working on proper flingy acceleration/halting. Turn radius and unit "natural rotation" remain to be implemented.
I fixed some stability issues, and reduced the CPU usage significantly. There still remains an obscure bug where a crash sometimes occurs on activating the Scourge portrait. I haven't been able to get to the bottom of that, not even with valgrind...
Interesting Finds:
Top Speed and Acceleration: PyDAT is actually wrong about how these are calculated. It isn't *3/320, it's /256 just like the Halt Distance. I suspect Blizzard was avoiding floating point operations and instead used bit-shifting the position to get the pixel coordinates.
Flingy "Partially Mobile/Weapon" Control: PyDAT claims it is poorly understood, and that if it is selected the Acceleration/Top Speed are ignored, but in fact only the Halt Distance is ignored. This is so weapons will continue accelerating to their top speed and ram the target rather than slowing down to gently "land" at it. That is the only difference as I can tell between it and "Flingy Control."
As always bear with me :-) This is very much a work in progress, and having to reverse engineer means code gets messy fast and rewrites are necessary. Once I get everything working I'll make the engine more elegant.
Attachments:
None.
Very nice so far!
I tested your last attachment. There's one glitch that happens once you drag your mouse down (until the cursor changes to the down arrow) and hold-click the minimap. It will keep scrolling down even if you move the mouse up.
Also, I think the margin for the auto-scrolling is too thin. Since your SC is totally resolution-flexible, Perhaps it would be a nice idea to make the margin size be adjusted according to the window size.
When you work on unit selection, could you please make it much less limited than the original game? It's one of the biggest weak points of SC1.
None.
You should put in all the new features in SC2 such as multiple building selection, being able to queue units while supply blocked, unlimited unit selection, auto-mine, smartcast, etc.
None.
I order you to forgive yourself!
That command center is way better! Perfect for early rush
Quote from name:New-.Hydrolisk
Very intriguing. I hope to hear more from both projects.
Same here.
Some things to change, @OP:
- Unlimited unit selection. Zerglings armies are too hard to control in SC1. ;(
- Display of queued commands.
- Worker to Mineral rally pointing that orders them to begin mining instead of the player having to do that.
That's all I could think of that you hadn't already covered.
I don't think Blizzard ever anticipated this - it would be interesting to see what they would say if it were brought to their attention.
Final note - I would suggest simply cloning the current trigger system. If I were you, I wouldn't want any more on my plate than necessary.
None.
I order you to forgive yourself!
If this works, it means that all the current maps could be played on your clone. Seems like a cool project
I also think it would be interesting to see what blizzard would say about this since you are making a potentially better engine than the original
That's all I could think of that you hadn't already covered.
I don't think Blizzard ever anticipated this - it would be interesting to see what they would say if it were brought to their attention.
He would get a cease and desist letter.
None.
That's all I could think of that you hadn't already covered.
I don't think Blizzard ever anticipated this - it would be interesting to see what they would say if it were brought to their attention.
He would get a cease and desist letter.
Correct. Its happened to far less clone-like projects. Blizzard gets real touchy about people using their work in anything but their own provided tools in their own provided formats (IE map editors, scm/scx, MPQ).
I order you to forgive yourself!
Not sure if that has to do with anything, but I found
this on sourceforge, maybe it could help a bit.
Stargus