hostile-takeover/game
2016-08-31 23:55:30 -04:00
..
iphone Added processing for vchrBack 2016-08-31 23:54:48 -04:00
sdl Add bit about running with asan_symbolize 2016-08-31 23:55:30 -04:00
wi.xcodeproj strings.h -> wistrings.h 2016-08-24 21:40:38 -04:00
win initial commit 2014-07-06 17:47:28 -07:00
.cvsignore initial commit 2014-07-06 17:47:28 -07:00
.gitignore Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
alertcontrol.cpp initial commit 2014-07-06 17:47:28 -07:00
Andy.cpp initial commit 2014-07-06 17:47:28 -07:00
Animation.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
Artillery.cpp initial commit 2014-07-06 17:47:28 -07:00
bitmap.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
Builder.cpp Fix builder bug that allowed ordering disabled units 2016-08-31 23:54:48 -04:00
BuildMgr.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
cachemgr.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
calcdiagdist.js initial commit 2014-07-06 17:47:28 -07:00
chatcontroller.h initial commit 2014-07-06 17:47:28 -07:00
chatter.cpp Add /ann command for server announcements 2016-08-31 22:43:34 -04:00
chatter.h initial commit 2014-07-06 17:47:28 -07:00
chooseserverform.cpp Initial SDL-Linux port 2016-08-31 23:54:48 -04:00
chooseserverform.h Don't show servers to disallowed platforms 2016-08-24 11:58:19 -04:00
comm.cpp initial commit 2014-07-06 17:47:28 -07:00
completemanager.cpp Remove this return that was there due to alignment issues 2016-01-01 13:58:05 -08:00
completemanager.h initial commit 2014-07-06 17:47:28 -07:00
compression.cpp initial commit 2014-07-06 17:47:28 -07:00
creategameform.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
creategameform.h Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
createroomform.cpp initial commit 2014-07-06 17:47:28 -07:00
createroomform.h initial commit 2014-07-06 17:47:28 -07:00
CutScene.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
DebugHelpers.cpp Initial SDL-Android port 2016-08-31 22:43:27 -04:00
dist.plist initial commit 2014-07-06 17:47:28 -07:00
dlmissionpack.cpp Fix reported crash when downloading mission pack index 2016-01-25 12:40:12 -08:00
downloadbox.cpp initial commit 2014-07-06 17:47:28 -07:00
dragrect.cpp Initial SDL-Android port 2016-08-31 22:43:27 -04:00
dragrect.h initial commit 2014-07-06 17:47:28 -07:00
drawscan.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
drm.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
Ecom.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
event.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
filepdbreader.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
fingerhandler.cpp initial commit 2014-07-06 17:47:28 -07:00
flickscroller.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
fogmap.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
font.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
form.cpp Added processing for vchrBack 2016-08-31 23:54:48 -04:00
formmgr.cpp initial commit 2014-07-06 17:47:28 -07:00
game.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
gameform.cpp Include correctly cased include file filename 2016-08-31 23:55:30 -04:00
gameform.h Fix referencing freed memory during PlayersUpdate message 2016-01-01 14:23:25 -08:00
GameObjects.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
GameOptions.cpp Update preprocessor checks to support SDL 2016-08-24 21:34:48 -04:00
hashtablecode.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
Headquarters.cpp Update preprocessor checks to support SDL 2016-08-24 21:34:48 -04:00
Help.cpp Added processing for vchrBack 2016-08-31 23:54:48 -04:00
HRC.cpp initial commit 2014-07-06 17:47:28 -07:00
ht.h Track client platform version 2016-08-31 23:54:48 -04:00
htdata832.pdb Recompile assets with recent data changes 2016-08-31 22:43:36 -04:00
htsfx.pdb initial commit 2014-07-06 17:47:28 -07:00
httpindexloader.cpp Initial SDL-Android port 2016-08-31 22:43:27 -04:00
httpindexloader.h initial commit 2014-07-06 17:47:28 -07:00
httppackinfomanager.cpp Initial SDL-Linux port 2016-08-31 23:54:48 -04:00
httppackinfomanager.h initial commit 2014-07-06 17:47:28 -07:00
httppackmanager.cpp mktemp() -> mkstemp() 2016-08-31 22:43:34 -04:00
httppackmanager.h initial commit 2014-07-06 17:47:28 -07:00
httprequest.cpp initial commit 2014-07-06 17:47:28 -07:00
httprequest.h initial commit 2014-07-06 17:47:28 -07:00
httpservice.h initial commit 2014-07-06 17:47:28 -07:00
InputUI.cpp Added processing for vchrBack 2016-08-31 23:54:48 -04:00
Level.cpp Use scanf and printf compile time format string type checking; fix 64 bit bugs 2016-01-10 13:14:36 -08:00
license.h initial commit 2014-07-06 17:47:28 -07:00
loadsave.cpp fix 64-bit issues, clear signing settings 2016-01-01 13:02:05 -08:00
lobby.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
lobby.h initial commit 2014-07-06 17:47:28 -07:00
lobbyform.cpp Add server feature for clients to receive chats while in lobby 2016-08-31 22:43:35 -04:00
lobbyform.h Add server feature for clients to receive chats while in lobby 2016-08-31 22:43:35 -04:00
loginform.cpp Add /t server command for team chat 2016-08-31 22:43:34 -04:00
loginform.h initial commit 2014-07-06 17:47:28 -07:00
loginhandler.cpp Track client platform version 2016-08-31 23:54:48 -04:00
loginhandler.h initial commit 2014-07-06 17:47:28 -07:00
LRInfantry.cpp initial commit 2014-07-06 17:47:28 -07:00
makefile initial commit 2014-07-06 17:47:28 -07:00
makefile.dsp initial commit 2014-07-06 17:47:28 -07:00
Makefile.iphone initial commit 2014-07-06 17:47:28 -07:00
makefile.nacl initial commit 2014-07-06 17:47:28 -07:00
makefile.sdl initial commit 2014-07-06 17:47:28 -07:00
map.cpp initial commit 2014-07-06 17:47:28 -07:00
map.h initial commit 2014-07-06 17:47:28 -07:00
memmgr.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
mempdbreader.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
mempdbreader.h fix 64-bit issues, clear signing settings 2016-01-01 13:02:05 -08:00
Miner.cpp strings.h -> wistrings.h 2016-08-24 21:40:38 -04:00
misc.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
misccontrols.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
miscgraphics.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
missionlist.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
missionlist.h initial commit 2014-07-06 17:47:28 -07:00
mixer.cpp initial commit 2014-07-06 17:47:28 -07:00
mixer.h initial commit 2014-07-06 17:47:28 -07:00
mkwin.bat initial commit 2014-07-06 17:47:28 -07:00
MobileBuilder.cpp initial commit 2014-07-06 17:47:28 -07:00
MobileHQ.cpp initial commit 2014-07-06 17:47:28 -07:00
MobileUnit.cpp Use scanf and printf compile time format string type checking; fix 64 bit bugs 2016-01-10 13:14:36 -08:00
mp_test.cpp initial commit 2014-07-06 17:47:28 -07:00
Multiplayer.cpp initial commit 2014-07-06 17:47:28 -07:00
multiplayer.h initial commit 2014-07-06 17:47:28 -07:00
ops.h initial commit 2014-07-06 17:47:28 -07:00
Overmind.cpp initial commit 2014-07-06 17:47:28 -07:00
picktransportform.cpp initial commit 2014-07-06 17:47:28 -07:00
picktransportform.h initial commit 2014-07-06 17:47:28 -07:00
Player.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
pno_esd_release_68k.h initial commit 2014-07-06 17:47:28 -07:00
pno_esd_release_arm.h initial commit 2014-07-06 17:47:28 -07:00
pno_release_68k.h initial commit 2014-07-06 17:47:28 -07:00
pno_release_arm.h initial commit 2014-07-06 17:47:28 -07:00
pno_retail_release_68k.h initial commit 2014-07-06 17:47:28 -07:00
pno_retail_release_arm.h initial commit 2014-07-06 17:47:28 -07:00
Processor.cpp Fix processor bug 2016-08-31 23:54:48 -04:00
progresscallback.h initial commit 2014-07-06 17:47:28 -07:00
Radar.cpp initial commit 2014-07-06 17:47:28 -07:00
RawBitmap.cpp Declare rect in RawBitmap outside of conditional scope 2016-08-31 22:43:34 -04:00
Reactor.cpp initial commit 2014-07-06 17:47:28 -07:00
README.txt initial commit 2014-07-06 17:47:28 -07:00
refmap.h initial commit 2014-07-06 17:47:28 -07:00
Replicator.cpp Remove unit highlight during replication 2016-08-31 23:54:48 -04:00
res.h initial commit 2014-07-06 17:47:28 -07:00
Research.cpp strings.h -> wistrings.h 2016-08-24 21:40:38 -04:00
roomform.cpp Initial SDL-Android port 2016-08-31 22:43:27 -04:00
roomform.h initial commit 2014-07-06 17:47:28 -07:00
selectmission.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
serviceurls.cpp Set kszForumUrl in serviceurls.cpp 2016-08-24 21:38:20 -04:00
serviceurls.h Set kszForumUrl in serviceurls.cpp 2016-08-24 21:38:20 -04:00
Shell.cpp Track client platform version 2016-08-31 23:54:48 -04:00
simplerequest.cpp initial commit 2014-07-06 17:47:28 -07:00
simplerequest.h initial commit 2014-07-06 17:47:28 -07:00
SimUI.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
Simulation.cpp Support maps that are smaller than the device screen 2016-08-31 23:55:30 -04:00
sizeops.h initial commit 2014-07-06 17:47:28 -07:00
sizeops.makefile initial commit 2014-07-06 17:47:28 -07:00
SocTransport.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
SocTransport.h initial commit 2014-07-06 17:47:28 -07:00
sounddevice.h initial commit 2014-07-06 17:47:28 -07:00
soundeffects.h initial commit 2014-07-06 17:47:28 -07:00
soundmgr.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
SpInfantry.cpp initial commit 2014-07-06 17:47:28 -07:00
sprite.h initial commit 2014-07-06 17:47:28 -07:00
SRInfantry.cpp initial commit 2014-07-06 17:47:28 -07:00
stateframe.cpp initial commit 2014-07-06 17:47:28 -07:00
stateframe.h initial commit 2014-07-06 17:47:28 -07:00
StateMachine.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
statetracker.cpp initial commit 2014-07-06 17:47:28 -07:00
statetracker.h initial commit 2014-07-06 17:47:28 -07:00
stringtable.cpp initial commit 2014-07-06 17:47:28 -07:00
Struct.cpp strings.h -> wistrings.h 2016-08-24 21:40:38 -04:00
stylushandler.cpp initial commit 2014-07-06 17:47:28 -07:00
Tank.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
tbitmap.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
tbitmapsr.cpp initial commit 2014-07-06 17:47:28 -07:00
terrainmap.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
tests.cpp initial commit 2014-07-06 17:47:28 -07:00
thunks.cpp initial commit 2014-07-06 17:47:28 -07:00
tilemap.cpp Support maps that are smaller than the device screen 2016-08-31 23:55:30 -04:00
timer.cpp initial commit 2014-07-06 17:47:28 -07:00
timerwrap.h initial commit 2014-07-06 17:47:28 -07:00
Tower.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
TriggerActions.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
TriggerConditions.cpp initial commit 2014-07-06 17:47:28 -07:00
triggermgr.cpp Use scanf and printf compile time format string type checking; fix 64 bit bugs 2016-01-10 13:14:36 -08:00
Unit.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
UnitGroupMgr.cpp Use delete[] for arrays allocated with new[]. 2016-08-31 23:55:30 -04:00
updatemap.cpp Support maps that are smaller than the device screen 2016-08-31 23:55:30 -04:00
uploader.cpp initial commit 2014-07-06 17:47:28 -07:00
uploader.h initial commit 2014-07-06 17:47:28 -07:00
vec2d.h initial commit 2014-07-06 17:47:28 -07:00
VTS.cpp initial commit 2014-07-06 17:47:28 -07:00
Warehouse.cpp Fix 64 bit compile warnings 2016-01-03 23:19:26 -08:00
wistrings.h strings.h -> wistrings.h 2016-08-24 21:40:38 -04:00
worklist.txt initial commit 2014-07-06 17:47:28 -07:00
xtransport.cpp Track client platform version 2016-08-31 23:54:48 -04:00
xtransport.h Add server feature for clients to receive chats while in lobby 2016-08-31 22:43:35 -04:00

Game history and notes
----------------------

Originally this game was started in 2001 and targeted Palm based and
PocketPC based handheld devices. The main development environment was
Windows. The game was developed and run on Windows, which allowed for
fast iteration, and ports were simultaneously written and maintained
for Palm and PocketPC.

Code in the "game" directory is cross-platform. Platform
specific code is in subdirectories. The platform code for the original
Palm and Windows CE based Pocket PC devices is currently not part of this
release. It was removed because these platforms are long gone, and
putting time and effort into maintaining them would not be a good use
of time. If there is interest in these platforms, we can release this code
(email Scott and Darrin). The first Palm and PocketPC releases were made in
2003.

Later in 2007 the iPhone hit the scene and the iOS version was started.
The iOS platform specific code evolved while coding on a Mac using OS X.
The Windows platform code wasn't being maintained during this period, so it
is a bit out of sync with the game side. Since the iOS device dev environment
and simulator is reasonably good, there was also no effort put into an OS X
specific platform layer (for running on Macs). The first iOS release was made
in 2008.

Fast forward to 2012/13. An SDL layer (Simple Direct Media Layer, see
libsdl.org) was started, but not (yet) completed. The idea with the SDL
version is to use it as the platform layer for potentially all platforms.
Rather than having N platform specific layers, have SDL address the bulk
platform requirements, and then have smaller platform specific code as
necessary. As of 6/2014 this hasn't been finished but this is the direction
to go in for the future. In other words, when an Android version is created,
the SDL layer should be completed first rather than creating an Android layer.
Once this is done, the iOS version can be moved to the SDL version as well (and,
Windows and Mac versions can be created easily).

New artwork
-----------

Currently the game uses 2D artwork that was created for 8 bit Palm devices in
both "low res" and "high res" formats.  A decision was made to ship the
iOS version with the original artwork, rather than waiting for and
incorporating all new artwork. Because the iPhone res was so much higher than
the old Palms, the high res Palm artwork was used and autoscaled up by 1.33x.
Around 2008-09, we commissioned much higher res 32 bit artwork to be created,
with 2-4x the animation frames. This was never incorporated into the game,
but it can be. We are releasing this new artwork with the game. The artwork
is again 2D and rendered at a fixed size. A few issues with this new artwork:

- Current high res devices have again made this new artwork small by
  comparison. The proper path forward has to be evaluated (3D perhaps?).
- The render code is almost all handwritten, expects 8 bit artwork, and
  is on the game side. Ideally, the platform specific side would handle
  drawing and the game side wouldn't have format dependencies.
- The unit animations are currently tied into multiplayer simulation state.
  Read below.

The game's multiplayer model works by synchronized game state. In other words,
it assumes that if all clients get the same commands at the same time, they
will progress to the exact same state at time X. This makes maintaining game
state easy - just communicate the commands, not the game state. An issue that
currently exists is that the game simulation, and the unit animations are
joined at the hip, so to speak. If you have two clients, one
that has a Liberator with 16 frames of animation, the other with 24 frames
of animation, these clients won't be in sync with each other. Either this
design needs to change so animation isn't synchronized with game state this
way, or all clients need to animate the exact same way.

Platform specific code directories
----------------------------------

palm (removed)
ce (removed)
iphone (working. should of been named "ios")
sdl (not too far from working. Expected to be future king).
win (not working. Left for reference.)

There are more details about the sdl port to discuss in a more direct way
through email. Please contact Scott and Darrin.

Why are we releasing this
-------------------------

We have enjoyed creating and supporting the game community of users over the
years. We want to see the game continue to grow and flourish beyond what we
are capable of at this time. We believe releasing it with an open license
will make it an opportunity for others to build on and extend going forward.
For example we hope to see an Android port come out of this, and we're looking
forward to see what other innovations happen.

We ask that developers contribute changes back for others to use and benefit
from. This game has lot of potential to grow and get better. RTS games continue
to evolve with innovating features and game play, and mobile devices these days
are very capable. At a minimum, there is a huge amount of opportunity to grow
this game in these directions to take advantage of the current state of the
art.

Scott Ludwig (scottlu@gmail.com)
Darrin Massena (darrin@massena.com)