Salvation Prophecy: A Space Epic

A place to show off your latest screenshots and for people to comment on them. Only start a new thread here if you have some nice images to show off!
User avatar
Jabberwocky
OGRE Moderator
OGRE Moderator
Posts: 2819
Joined: Mon Mar 05, 2007 11:17 pm
Location: Canada
x 218
Contact:

Re: Salvation Prophecy: A Space Epic

Post by Jabberwocky »

Sure, no problem.
It's going to be a big list, though.

Code: Select all

AccomplishmentsSystem.cpp
AccomplishmentsSystem.h
Action.cpp
Action.h
ActionData.cpp
ActionData.h
ActionDirectory.cpp
ActionDirectory.h
ActionMap.cpp
ActionMap.h
ActionSystem.cpp
ActionSystem.h
ActionType.h
Activity.cpp
Activity.h
ActivityData.cpp
ActivityData.h
ActivityDirectory.cpp
ActivityDirectory.h
ActivitySystem.cpp
ActivitySystem.h
ActivityType.h
ActorUserData.cpp
ActorUserData.h
AIDistanceType.h
AirSupportBuildingCustomScript.cpp
AirSupportBuildingCustomScript.h
AlaydroSceneScript.cpp
AlaydroSceneScript.h
AlienFleet.cpp
AlienFleet.h
AlienMotherShipArmCustomScript.cpp
AlienMotherShipArmCustomScript.h
AlienMotherShipCustomScript.cpp
AlienMotherShipCustomScript.h
AlienPortalCustomScript.cpp
AlienPortalCustomScript.h
AlienSpacePortalCustomScript.cpp
AlienSpacePortalCustomScript.h
AltarOfSunAndVoidCustomScript.cpp
AltarOfSunAndVoidCustomScript.h
AnimationData.cpp
AnimationData.h
AnimationSystem.cpp
AnimationSystem.h
AnimFunctionType.h
AnimHook.cpp
AnimHook.h
Armor.cpp
Armor.h
ArmorEffect.cpp
ArmorEffect.h
ArtifactRuneCustomScript.cpp
ArtifactRuneCustomScript.h
AssaultGearType.h
Asteroid.cpp
Asteroid.h
AsteroidFactory.cpp
AsteroidFactory.h
AsteroidField.cpp
AsteroidField.h
BasicCam.cpp
BasicCam.h
BattleSimSystem.cpp
BattleSimSystem.h
BeaconCustomScript.cpp
BeaconCustomScript.h
Beam.cpp
Beam.h
BehaviorType.h
BerserkEffect.cpp
BerserkEffect.h
BountyProgress.cpp
BountyProgress.h
Building.cpp
Building.h
BuildingFactory.cpp
BuildingFactory.h
BuildingType.h
Bullet.cpp
Bullet.h
BulletSystem.cpp
BulletSystem.h
CameraOperator.h
CameraOperatorType.h
CameraSystem.cpp
CameraSystem.h
CamType.h
CelestialOblivionEffect.cpp
CelestialOblivionEffect.h
CharacterOption.cpp
CharacterOption.h
ChaseResultType.h
ChildEntityDesc.cpp
ChildEntityDesc.h
CloseTargetReactionType.h
CollisionGroup.h
CollisionHandler.cpp
CollisionHandler.h
Colony.cpp
Colony.h
ColonyID.h
ColonySystem.cpp
ColonySystem.h
ColourChannelType.h
CombatData.cpp
CombatData.h
CombatSystem.cpp
CombatSystem.h
CommandDesc.cpp
CommandDesc.h
CommandDirectory.cpp
CommandDirectory.h
CommandSystem.cpp
CommandSystem.h
CommandType.h
ComponentFactory.cpp
ComponentFactory.h
CompositorLogics.cpp
CompositorLogics.h
ConsoleSystem.cpp
ConsoleSystem.h
constants.cpp
constants.h
ConstructedTurretCustomScript.cpp
ConstructedTurretCustomScript.h
ContinuumEffect.cpp
ContinuumEffect.h
ControlMapEntry.cpp
ControlMapEntry.h
ControlScheme.cpp
ControlScheme.h
ControlSchemeType.h
ControlType.h
Conversation.cpp
Conversation.h
ConversationData.cpp
ConversationData.h
ConversationDialog.cpp
ConversationDialog.h
ConversationDialogDirectory.cpp
ConversationDialogDirectory.h
ConversationID.h
ConversationScript.cpp
ConversationScript.h
ConversationScriptDirectory.cpp
ConversationScriptDirectory.h
ConversationSystem.cpp
ConversationSystem.h
CustomScript.cpp
CustomScript.h
CustomScriptDirectory.cpp
CustomScriptDirectory.h
CustomScriptType.h
DamageRecord.cpp
DamageRecord.h
DamageSystem.cpp
DamageSystem.h
DamageType.h
Debris.cpp
Debris.h
Decor.cpp
Decor.h
DecorID.h
DecorLightFlareDesc.cpp
DecorLightFlareDesc.h
DemoSystem.cpp
DemoSystem.h
DestroyedUnitType.h
DetectSystem.cpp
DetectSystem.h
Device.cpp
Device.h
DeviceFactory.cpp
DeviceFactory.h
DiagnosticsSystem.cpp
DiagnosticsSystem.h
DialogOptionType.h
DifficultyType.h
DirectionType.h
Dock.cpp
Dock.h
DockSpot.cpp
DockSpot.h
DockSystem.cpp
DockSystem.h
Door.cpp
Door.h
DreamSequenceDesc.cpp
DreamSequenceDesc.h
DropShip.cpp
DropShip.h
DropShipCustomScript.cpp
DropShipCustomScript.h
DropShipFactory.cpp
DropShipFactory.h
DropShipSystem.cpp
DropShipSystem.h
DropSpot.cpp
DropSpot.h
DynamicHoloScreenType.h
Effect.cpp
Effect.h
EffectData.cpp
EffectData.h
EffectSystem.cpp
EffectSystem.h
EffectType.h
EMP.cpp
EMP.h
EnergyBank.cpp
EnergyBank.h
EnergyDrainEffect.cpp
EnergyDrainEffect.h
Engine.cpp
Engine.h
EnumMap.h
Equipment.cpp
Equipment.h
EquipmentData.cpp
EquipmentData.h
EquipmentSystem.cpp
EquipmentSystem.h
EquipmentType.h
EventDesc.cpp
EventDesc.h
EventSystem.cpp
EventSystem.h
EventTriggerType.h
EventType.h
ExperimentalShipTech.cpp
ExperimentalShipTech.h
ExperimentalShipTechType.h
ExplosionDesc.cpp
ExplosionDesc.h
ExplosionSystem.cpp
ExplosionSystem.h
Faction.cpp
Faction.h
FactionGoalList.cpp
FactionGoalList.h
FactionRelationType.h
FactionResources.cpp
FactionResources.h
FactionSystem.cpp
FactionSystem.h
FactionType.h
FadeScreenInfo.cpp
FadeScreenInfo.h
FlameEffect.cpp
FlameEffect.h
Fleet.cpp
Fleet.h
FleetID.h
FleetSystem.cpp
FleetSystem.h
FleetType.h
Flier.cpp
Flier.h
FlierFactory.cpp
FlierFactory.h
FlightSystem.cpp
FlightSystem.h
FloatyLight.cpp
FloatyLight.h
FocusEffect.cpp
FocusEffect.h
GalacticNewsUnitInfo.cpp
GalacticNewsUnitInfo.h
GalaxyView3D.cpp
GalaxyView3D.h
GalaxyViewCameraType.h
GalaxyViewController.cpp
GalaxyViewController.h
GalaxyViewObjectType.h
GameSystem.cpp
GameSystem.h
GhostEffect.cpp
GhostEffect.h
Goal.cpp
Goal.h
GoalDesc.cpp
GoalDesc.h
GoalDirectory.cpp
GoalDirectory.h
GoalScopeType.h
GoalType.h
GolgrumSceneScript.cpp
GolgrumSceneScript.h
GraphicsSystem.cpp
GraphicsSystem.h
Gun.cpp
Gun.h
Hangar.cpp
Hangar.h
HealthData.cpp
HealthData.h
HealthEffect.cpp
HealthEffect.h
HeightmapTerrainPageSourceExt.h
HoloChallenge.cpp
HoloChallenge.h
HoloChallengeMelee.cpp
HoloChallengeMelee.h
HoloChallengeRace.cpp
HoloChallengeRace.h
HoloChallengeShoot.cpp
HoloChallengeShoot.h
HoloChallengeType.h
HoloGridLines.cpp
HoloGridLines.h
HoloScreen.cpp
HoloScreen.h
HoloScreenDirectory.cpp
HoloScreenDirectory.h
HoloScreenTransitionType.h
HoloStageType.h
Hull.cpp
Hull.h
IndoorPathMap.cpp
IndoorPathMap.h
IndoorPathSystem.cpp
IndoorPathSystem.h
InputController.h
InputControllerType.h
InputDeviceType.h
InputSystem.cpp
InputSystem.h
IntroSystem.cpp
IntroSystem.h
InvasionProgress.cpp
InvasionProgress.h
Item.cpp
Item.h
ItemFactory.cpp
ItemFactory.h
ItemSlotType.h
ItemType.h
JumpSystem.cpp
JumpSystem.h
Kit.cpp
Kit.h
KnowledgeData.cpp
KnowledgeData.h
KnowledgeDataType.h
KnowledgeDesc.cpp
KnowledgeDesc.h
KnowledgeSubjectType.h
KnowledgeSystem.cpp
KnowledgeSystem.h
KnowledgeTrait.h
Landscape.cpp
Landscape.h
LastStandEffect.cpp
LastStandEffect.h
LightDesc.cpp
LightDesc.h
LightningSceneScript.cpp
LightningSceneScript.h
ListboxNumberItem.cpp
ListboxNumberItem.h
LoadSaveSystem.cpp
LoadSaveSystem.h
LogSystem.cpp
LogSystem.h
LOSResultType.h
main.cpp
MathUtil.cpp
MathUtil.h
MedicalEye.cpp
MedicalEye.h
MessageOption.cpp
MessageOption.h
MID.h
MirrorPuzzle.cpp
MirrorPuzzle.h
MissileBay.cpp
MissileBay.h
Mission.cpp
Mission.h
MissionBadge.cpp
MissionBadge.h
MissionBadgeDirectory.cpp
MissionBadgeDirectory.h
MissionBadgeMetalType.h
MissionBadgeType.h
MissionBrief.cpp
MissionBrief.h
MissionBriefDirectory.cpp
MissionBriefDirectory.h
MissionData.cpp
MissionData.h
MissionID.h
MissionInfo.cpp
MissionInfo.h
MissionItem.cpp
MissionItem.h
MissionProgress.cpp
MissionProgress.h
MissionStageType.h
MissionSystem.cpp
MissionSystem.h
MissionType.h
Mobile.cpp
Mobile.h
MobileData.cpp
MobileData.h
MobileDataType.h
MobileType.h
MonolithMirrorCustomScript.cpp
MonolithMirrorCustomScript.h
MonolithRoomCustomScript.cpp
MonolithRoomCustomScript.h
MountedGunArray.cpp
MountedGunArray.h
NavigationType.h
NewsItem.cpp
NewsItem.h
NewsSystem.cpp
NewsSystem.h
NewsType.h
OccupationType.h
OgreGpuCommandBufferFlush.cpp
OgreGpuCommandBufferFlush.h
OptionSystem.cpp
OptionSystem.h
PagedGeometryDesc.cpp
PagedGeometryDesc.h
ParticleSoundEmitter.cpp
ParticleSoundEmitter.h
ParticleSoundEmitterFactory.h
PathData.cpp
PathData.h
PathMap.cpp
PathMap.h
PathResultType.h
PathSystem.cpp
PathSystem.h
pch.cpp
pch.h
Person.cpp
Person.h
PersonalityType.h
PersonCam.cpp
PersonCam.h
PersonController.cpp
PersonController.h
PersonFactory.cpp
PersonFactory.h
PersonMovementData.cpp
PersonMovementData.h
PhysicsFactory.cpp
PhysicsFactory.h
PhysicsSystem.cpp
PhysicsSystem.h
PhysXRaycastCallbackHandler.cpp
PhysXRaycastCallbackHandler.h
PilotData.cpp
PilotData.h
PilotTraitType.h
PirateDesc.cpp
PirateDesc.h
PirateSystem.cpp
PirateSystem.h
Planet.cpp
Planet.h
PlanetResourceType.h
PlanetSizeType.h
PlanetType.h
PossessionData.cpp
PossessionData.h
Projector.cpp
Projector.h
RaceType.h
RankData.cpp
RankData.h
RankEntry.cpp
RankEntry.h
RankSystem.cpp
RankSystem.h
Reactor.cpp
Reactor.h
ReplicateEffect.cpp
ReplicateEffect.h
ReputationType.h
ReserveData.cpp
ReserveData.h
RoomID.h
RoomPiece.cpp
RoomPiece.h
RoomSet.cpp
RoomSet.h
RoomSystem.cpp
RoomSystem.h
Rune.cpp
Rune.h
RuneOfTheSunEffect.cpp
RuneOfTheSunEffect.h
RuneOfTheVoidEffect.cpp
RuneOfTheVoidEffect.h
Scene.cpp
Scene.h
SceneImage.cpp
SceneImage.h
SceneScript.cpp
SceneScript.h
SceneScriptDirectory.cpp
SceneScriptDirectory.h
SceneScriptType.h
SceneSystem.cpp
SceneSystem.h
SceneType.h
ScrollTextEntry.cpp
ScrollTextEntry.h
SeekAndDestroyProgress.cpp
SeekAndDestroyProgress.h
ShadowQualityType.h
Shield.cpp
Shield.h
ShieldGen.cpp
ShieldGen.h
Ship.cpp
Ship.h
ShipCam.cpp
ShipCam.h
ShipComponent.cpp
ShipComponent.h
ShipComponentType.h
ShipConfig.cpp
ShipConfig.h
ShipController.cpp
ShipController.h
ShipFactory.cpp
ShipFactory.h
ShopData.cpp
ShopData.h
ShopItemDesc.cpp
ShopItemDesc.h
ShopSystem.cpp
ShopSystem.h
Skill.cpp
Skill.h
SkillData.cpp
SkillData.h
SkillDirectory.cpp
SkillDirectory.h
SkillItem.cpp
SkillItem.h
SkillSystem.cpp
SkillSystem.h
SoundID.h
SoundLibrary.cpp
SoundLibrary.h
SoundSystem.cpp
SoundSystem.h
SoundType.h
SpaceBattleProgress.cpp
SpaceBattleProgress.h
SpaceTurret.cpp
SpaceTurret.h
SpaceTurretAutoControl.cpp
SpaceTurretAutoControl.h
SpaceTurretFactory.cpp
SpaceTurretFactory.h
SpawnPoint.cpp
SpawnPoint.h
SpeedEffect.cpp
SpeedEffect.h
SPZipArchive.cpp
SPZipArchive.h
Station.cpp
Station.h
StationFactory.cpp
StationFactory.h
StationPathDestinationType.h
StationRoomType.h
StatueCustomScript.cpp
StatueCustomScript.h
StatueCustomScript2.cpp
StatueCustomScript2.h
SteerType.h
Stellar.cpp
Stellar.h
StellarCombatBounds.cpp
StellarCombatBounds.h
Stim.cpp
Stim.h
StoryCamSequenceType.h
StoryFlag.h
StorySystem.cpp
StorySystem.h
StrategySystem.cpp
StrategySystem.h
SummoningEffect.cpp
SummoningEffect.h
SurfaceTraitType.h
SurfaceType.h
SurveyPlanetProgress.cpp
SurveyPlanetProgress.h
SwampLizardCustomScript.cpp
SwampLizardCustomScript.h
SwampLizardEssenceCustomScript.cpp
SwampLizardEssenceCustomScript.h
TacticBattleShipPilot.cpp
TacticBattleShipPilot.h
TacticChargeTarget.cpp
TacticChargeTarget.h
TacticConditionType.h
TacticConstructTurret.cpp
TacticConstructTurret.h
TacticData.cpp
TacticData.h
TacticDirectory.cpp
TacticDirectory.h
TacticFighterPilot.cpp
TacticFighterPilot.h
TacticFlee.cpp
TacticFlee.h
TacticMechLaunchRocket.cpp
TacticMechLaunchRocket.h
TacticMeleeMonster.cpp
TacticMeleeMonster.h
TacticPursueAndAttack.cpp
TacticPursueAndAttack.h
TacticSequence.cpp
TacticSequence.h
TacticSequenceType.h
TacticShootRocket.cpp
TacticShootRocket.h
TacticStandAndFire.cpp
TacticStandAndFire.h
TacticStandAndMelee.cpp
TacticStandAndMelee.h
TacticStrafeAndFire.cpp
TacticStrafeAndFire.h
TacticSystem.cpp
TacticSystem.h
TacticTakeCoverAndAttack.cpp
TacticTakeCoverAndAttack.h
TacticThrowBomb.cpp
TacticThrowBomb.h
TacticUseShieldGun.cpp
TacticUseShieldGun.h
TacticUseStim.cpp
TacticUseStim.h
TargetQuery.cpp
TargetQuery.h
Task.cpp
Task.h
TaskAlienFighterInvadeStation.cpp
TaskAlienFighterInvadeStation.h
TaskAssessOdds.cpp
TaskAssessOdds.h
TaskBattleShipGuardStation.cpp
TaskBattleShipGuardStation.h
TaskChaseTarget.cpp
TaskChaseTarget.h
TaskCheckForVeryCloseTarget.cpp
TaskCheckForVeryCloseTarget.h
TaskChooseStationDestination.cpp
TaskChooseStationDestination.h
TaskChooseTarget.cpp
TaskChooseTarget.h
TaskChooseWeapon.cpp
TaskChooseWeapon.h
TaskConstructTurret.cpp
TaskConstructTurret.h
TaskDefendStation.cpp
TaskDefendStation.h
TaskDirectory.cpp
TaskDirectory.h
TaskDropShipDepart.cpp
TaskDropShipDepart.h
TaskDropShipDisembark.cpp
TaskDropShipDisembark.h
TaskDropShipEnterDock.cpp
TaskDropShipEnterDock.h
TaskDropShipExitDock.cpp
TaskDropShipExitDock.h
TaskDropShipLand.cpp
TaskDropShipLand.h
TaskDropShipLoadTroops.cpp
TaskDropShipLoadTroops.h
TaskDropShipPathToPlanet.cpp
TaskDropShipPathToPlanet.h
TaskDropShipPathToStation.cpp
TaskDropShipPathToStation.h
TaskDropShipPickUp.cpp
TaskDropShipPickUp.h
TaskDropShipSelectDropSpot.cpp
TaskDropShipSelectDropSpot.h
TaskEnterShip.cpp
TaskEnterShip.h
TaskEnterStation.cpp
TaskEnterStation.h
TaskExitJump.cpp
TaskExitJump.h
TaskExitShip.cpp
TaskExitShip.h
TaskExitStation.cpp
TaskExitStation.h
TaskFaceWork.cpp
TaskFaceWork.h
TaskFindClearConstructionSpot.cpp
TaskFindClearConstructionSpot.h
TaskFire.cpp
TaskFire.h
TaskFireChargedWeapon.cpp
TaskFireChargedWeapon.h
TaskFlightInstructor.cpp
TaskFlightInstructor.h
TaskFollowLeader.cpp
TaskFollowLeader.h
TaskHomeBaseDestroyed.cpp
TaskHomeBaseDestroyed.h
TaskIdleShip.cpp
TaskIdleShip.h
TaskInitiateJump.cpp
TaskInitiateJump.h
TaskLobeFlayerGhostFollow.cpp
TaskLobeFlayerGhostFollow.h
TaskLobeFlayerGhostStare.cpp
TaskLobeFlayerGhostStare.h
TaskMeleeAttack.cpp
TaskMeleeAttack.h
TaskPathToHomeStation.cpp
TaskPathToHomeStation.h
TaskPathToTarget.cpp
TaskPathToTarget.h
TaskPauseAtStationDestination.cpp
TaskPauseAtStationDestination.h
TaskPilotAimAndFireAtTarget.cpp
TaskPilotAimAndFireAtTarget.h
TaskPilotAvoidCollisionWithTarget.cpp
TaskPilotAvoidCollisionWithTarget.h
TaskPilotAvoidDamage.cpp
TaskPilotAvoidDamage.h
TaskPilotAvoidObstacles.cpp
TaskPilotAvoidObstacles.h
TaskPilotChooseTarget.cpp
TaskPilotChooseTarget.h
TaskPilotDetectObstacles.cpp
TaskPilotDetectObstacles.h
TaskPilotSteerBattleShip.cpp
TaskPilotSteerBattleShip.h
TaskPilotSwoop.cpp
TaskPilotSwoop.h
TaskPilotUseShieldGen.cpp
TaskPilotUseShieldGen.h
TaskQueryEnemyPositions.cpp
TaskQueryEnemyPositions.h
TaskReloadWeapon.cpp
TaskReloadWeapon.h
TaskRetreat.cpp
TaskRetreat.h
TaskStatus.h
TaskStrafeInOpenDirection.cpp
TaskStrafeInOpenDirection.h
TaskTakeCoverAndAttack.cpp
TaskTakeCoverAndAttack.h
TaskThrowBomb.cpp
TaskThrowBomb.h
TaskTurnTowardsTarget.cpp
TaskTurnTowardsTarget.h
TaskType.h
TaskUnleashStoredEffect.cpp
TaskUnleashStoredEffect.h
TaskUseShieldGun.cpp
TaskUseShieldGun.h
TaskUseStim.cpp
TaskUseStim.h
TaskWaitForFleetToLaunch.cpp
TaskWaitForFleetToLaunch.h
TaskWalkToStationDestination.cpp
TaskWalkToStationDestination.h
TaskWander.cpp
TaskWander.h
TeleportationDrive.cpp
TeleportationDrive.h
TerrainDecal.cpp
TerrainDecal.h
TerrainMaterialGeneratorCustom.cpp
TerrainMaterialGeneratorCustom.h
TerrainQualityType.h
TextDirectory.cpp
TextDirectory.h
TextureArchive.cpp
TextureArchive.h
TextureQualityType.h
TimeLineEvent.cpp
TimeLineEvent.h
TimeSystem.cpp
TimeSystem.h
Transceiver.cpp
Transceiver.h
TreeLoader2DWithPhysics.cpp
TreeLoader2DWithPhysics.h
TreeLoader3DWithPhysics.cpp
TreeLoader3DWithPhysics.h
Trigger.cpp
Trigger.h
TriggerDesc.cpp
TriggerDesc.h
TriggerFunctionHandler.cpp
TriggerFunctionHandler.h
TriggerFunctionType.h
TriggerID.h
TroopConfig.cpp
TroopConfig.h
TroopInvasionForce.cpp
TroopInvasionForce.h
TroopInvasionForceID.h
Turret.cpp
Turret.h
TurretAutoControl.cpp
TurretAutoControl.h
TurretFactory.cpp
TurretFactory.h
TutorialFunctionType.h
TutorialSystem.cpp
TutorialSystem.h
UIBio.cpp
UIBio.h
UIBountyList.cpp
UIBountyList.h
UICentralMenu.cpp
UICentralMenu.h
UICharGen.cpp
UICharGen.h
UIChargeUp.cpp
UIChargeUp.h
UICommandColony.cpp
UICommandColony.h
UICommandHeader.cpp
UICommandHeader.h
UICommandPlanet.cpp
UICommandPlanet.h
UICommandResources.cpp
UICommandResources.h
UICommandStation.cpp
UICommandStation.h
UICommunicate.cpp
UICommunicate.h
UICommunicateResponse.cpp
UICommunicateResponse.h
UIControlController.cpp
UIControlController.h
UIControlEdit.cpp
UIControlEdit.h
UIControlSelect.cpp
UIControlSelect.h
UICredits.cpp
UICredits.h
UICrosshairs.cpp
UICrosshairs.h
UIDemo.cpp
UIDemo.h
UIDialog.cpp
UIDialog.h
UIDifficulty.cpp
UIDifficulty.h
UIDistortion.cpp
UIDistortion.h
UIEnergyMeter.cpp
UIEnergyMeter.h
UIEquipment.cpp
UIEquipment.h
UIFleet.cpp
UIFleet.h
UIGalacticNews.cpp
UIGalacticNews.h
UIGalaxyView.cpp
UIGalaxyView.h
UIGalaxyViewControls.cpp
UIGalaxyViewControls.h
UIGraphics.cpp
UIGraphics.h
UIHint.cpp
UIHint.h
UIHoloChallenge.cpp
UIHoloChallenge.h
UIIncomingMissile.cpp
UIIncomingMissile.h
UILanding.cpp
UILanding.h
UILensFlare.cpp
UILensFlare.h
UILoad.cpp
UILoad.h
UIMainMenu.cpp
UIMainMenu.h
UIMessage.cpp
UIMessage.h
UIMission.cpp
UIMission.h
UIMissionBrief.cpp
UIMissionBrief.h
UIMissionSummary.cpp
UIMissionSummary.h
UINameTag.cpp
UINameTag.h
UINewsHistory.cpp
UINewsHistory.h
UIRadar.cpp
UIRadar.h
UISave.cpp
UISave.h
UIScanDetails.cpp
UIScanDetails.h
UIScanner.cpp
UIScanner.h
UISceneIntro.cpp
UISceneIntro.h
UIScreen.cpp
UIScreen.h
UIScreenType.h
UIScrollText.cpp
UIScrollText.h
UISelection.cpp
UISelection.h
UIShieldMeter.cpp
UIShieldMeter.h
UIShip.cpp
UIShip.h
UIShipRepair.cpp
UIShipRepair.h
UIShipSlots.cpp
UIShipSlots.h
UIShop.cpp
UIShop.h
UISkillTree.cpp
UISkillTree.h
UISound.cpp
UISound.h
UISpeedMeter.cpp
UISpeedMeter.h
UIStimBelt.cpp
UIStimBelt.h
UIStoryText.cpp
UIStoryText.h
UISystem.cpp
UISystem.h
UITextMessage.cpp
UITextMessage.h
UITimeLine.cpp
UITimeLine.h
UIUsage.cpp
UIUsage.h
UIVideo.cpp
UIVideo.h
UIWeapon.cpp
UIWeapon.h
UniverseSystem.cpp
UniverseSystem.h
UnstableWormholeDesc.cpp
UnstableWormholeDesc.h
UnstableWormholeProgress.cpp
UnstableWormholeProgress.h
UsageData.cpp
UsageData.h
UsageDirectory.cpp
UsageDirectory.h
UsageSequence.cpp
UsageSequence.h
UsageSequenceType.h
UsageSystem.cpp
UsageSystem.h
version.cpp
version.h
VoiceTextSync.cpp
VoiceTextSync.h
vs_debug.h
vs_debug.txt
WatchCam.cpp
WatchCam.h
WatchCamController.cpp
WatchCamController.h
WatchCamSequence.cpp
WatchCamSequence.h
Weapon.cpp
Weapon.h
WeaponFireType.h
WeaponStats.cpp
WeaponStats.h
Wormhole.cpp
Wormhole.h
WormholeFactory.cpp
WormholeFactory.h
WormholeStabilityType.h
WormholeSystem.cpp
WormholeSystem.h
XML.cpp
XML.h
In 99% of the cases, a file called Whatever.h and Whatever.cpp will contain one class called class Whatever.
So InputSystem.h/cpp define the single class, InputSystem

The high level breakdown of my game is that there are:
  • Scenes: For example, a Landscape or a Space Station Interior
  • Mobiles: Base class for things that move around in the world, like Ship, Turret, Asteroid, Person, Building
  • Items: Base class for things like Armor, Weapons, Stims, and other things that can be picked up or equipped.
  • Factories: Classes responsible for creating Mobiles and Items
  • UIs: All the files that begin with "UI" handle a single user interface screen
  • AI: All the files that begin with "Tactic" or "Task" are AI stuff.
  • Systems: When I have a chunk of game play work to do, I generally put it into a System. Each System is a Singleton.
  • Data: Most of the data classes are part of a Mobile (Ship, Person, etc). A lot of Systems have a corresponding Data class, e.g. AnimationSystem (manipulates all animations in the game) and AnimationData (the animation data for a single Person).
System examples:
  • SoundSystem: Contains all the complex FMOD logic, and exposes a nice simple API for playing 2D or 3D sounds.
  • GraphicsSystem: All the Ogre3D initialization and update stuff.
  • CameraSystem: All the logic for attaching cameras to a character or a ship, and updating the camera position.
  • DetectSystem: Provides some simple functions like "what Mobiles are in this area" or "Can Mobile A see Mobile B?". Under the hood, there is complex PhysX stuff going on, but this System wraps much of that complexity.
  • InputSystem: contains all the OIS input library logic. Handles grabbing input from the player (keyboard, mouse, joystick), and then calling into other systems that will move the player or player ship, or manipulate the UI (moving the mouse, pressing buttons, etc).
  • UISystem: initializes and updates CEGUI, initializes and updates all the individual UIs in my game.
  • ColonySystem: Purely a game logic class, associated with building colonies on planets.
I think the System approach is a good way to arranging your code.

The highest level System in my game is called the GameSystem.cpp
(Probably a better name would have been "MasterSystem")
This is the System that initializes, runs, and shuts down all other Systems.
It looks something like this:

Code: Select all

#ifndef __GAME_SYSTEM_H__
#define __GAME_SYSTEM_H__

// ogre
#include "OgrePrerequisites.h"
using namespace Ogre;

// game
#include "MID.h"


// This is the "main high-levle system" which drives the primary architecture of the game,
// including system initialization, shutdown, and the game loop.
class GameSystem
{
   //
   // System Singleton
   //
public:
   GameSystem();
   ~GameSystem();

   // Create the singleton instance
   static void Create();
   static GameSystem* GetSingleton() { return s_pSingleton; }

private:
   // There can only be one instance of a singleton
   static GameSystem* s_pSingleton;


   //
   // Lifecycle
   //
public:
   // To run the game, you simply need to Create this GameSystem, and call Run()
   void Run();
   // The Tick function is called every frame.
   void Tick();


   //
   // Shutdown
   //
public:
   // Requesting a shutdown will cause the game to quit at the end of the current Tick.
   void RequestShutdown();
   bool IsShuttingDown() const;

private:
   void Shutdown();

private:
   bool m_bShutdownRequested;


   //
   // System Initialization
   //
public:
   // Create and initialize all the system singetons
   void CreateSystems();
   void InitializeSystems();
   void TickSystems( float i_fSecFrame );
   void DestroySystems();
   bool AreAllSystemsInitialized() const;

private:
   // Once InitializeSystems has finished its work initializing all the system
   // singletons, this will be set to true.
   bool m_bAllSystemsInitialized;
};


// Syntactic convenience function, for example so you can call GameSys()->Tick() 
// instead of having to write GameSystem::GetSingleton()->Tick()
inline GameSystem* GameSys()
{
   return GameSystem::GetSingleton();
}

#endif // __GAME_SYSTEM_H__
Then, if you were to look at the main function of my game, it would be very simple, after you cut out all the windowsy crap:

Code: Select all

   int main(int argc, char *argv[])
   {
         GameSystem::Create();
         GameSys()->Run();
         delete GameSys();
   }
Here's the majority of GameSystem.cpp, so you can see how I create, destroy, and update all my systems.

Code: Select all

// pch
#include "pch.h"

// my header
#include "GameSystem.h"

// ogre
#include "OgreConfigFile.h"
using namespace Ogre;

// game
#include "AccomplishmentsSystem.h"
#include "ActionSystem.h"
#include "ActionDirectory.h"
#include "ActivitySystem.h"
#include "ActivityDirectory.h"
#include "AnimationSystem.h"
#include "AsteroidFactory.h"
#include "BattleSimSystem.h"
#include "BuildingFactory.h"
#include "BulletSystem.h"
#include "CameraSystem.h"
#include "ColonySystem.h"
#include "CombatSystem.h"
#include "CommandDirectory.h"
#include "CommandSystem.h"
#include "ComponentFactory.h"
#include "ConversationDialogDirectory.h"
#include "ConversationScriptDirectory.h"
#include "ConversationSystem.h"
#include "ConsoleSystem.h"
#include "DamageSystem.h"
#include "DemoSystem.h"
#include "DetectSystem.h"
#include "DeviceFactory.h"
#include "DockSystem.h"
#include "DropShipFactory.h"
#include "DropShipSystem.h"
#include "DiagnosticsSystem.h"
#include "EffectSystem.h"
#include "EventSystem.h"
#include "EquipmentSystem.h"
#include "ExplosionSystem.h"
#include "FactionSystem.h"
#include "FleetSystem.h"
#include "FlierFactory.h"
#include "FlightSystem.h"
#include "GoalDirectory.h"
#include "GraphicsSystem.h"
#include "HoloScreenDirectory.h"
#include "InputController.h"
#include "JumpSystem.h"
#include "InputSystem.h"
#include "IndoorPathSystem.h"
#include "IntroSystem.h"
#include "ItemFactory.h"
#include "KnowledgeSystem.h"
#include "LoadSaveSystem.h"
#include "LogSystem.h"
#include "MissionBadgeDirectory.h"
#include "MissionBriefDirectory.h"
#include "MissionSystem.h"
#include "NewsSystem.h"
#include "OptionSystem.h"
#include "PathSystem.h"
#include "PersonFactory.h"
#include "PirateSystem.h"
#include "PhysicsFactory.h"
#include "PhysicsSystem.h"
#include "RankSystem.h"
#include "RoomSystem.h"
#include "Scene.h"
#include "SceneSystem.h"
#include "ShipFactory.h"
#include "ShopSystem.h"
#include "SkillDirectory.h"
#include "SkillSystem.h"
#include "SoundSystem.h"
#include "SpaceTurretFactory.h"
#include "StationFactory.h"
#include "StorySystem.h"
#include "StrategySystem.h"
#include "TacticDirectory.h"
#include "TacticSystem.h"
#include "TaskDirectory.h"
#include "TextDirectory.h"
#include "TimeSystem.h"
#include "TurretFactory.h"
#include "TutorialSystem.h"
#include "UniverseSystem.h"
#include "UIMainMenu.h"
#include "UISystem.h"
#include "UsageSystem.h"
#include "UsageDirectory.h"
#include "VehicleFactory.h"
#include "WormholeFactory.h"
#include "WormholeSystem.h"


// static member variables
GameSystem* GameSystem::s_pSingleton = 0;


// member functions
GameSystem::GameSystem()
   : m_bShutdownRequested        ( false )
   , m_bAllSystemsInitialized    ( false )
{
}


GameSystem::~GameSystem()
{
   ASSERT( s_pSingleton );
   s_pSingleton = 0;
}


void GameSystem::Create()
{
   // There can be only one.
   ASSERT( !s_pSingleton );
   s_pSingleton = new GameSystem;
}


void GameSystem::Run()
{
   try
   {
      // Create all of our system singletons
      CreateSystems();

      // Tick Tick Tick Tick...  like clockwork!
      while ( !IsShuttingDown() )
      {
         Tick();
      }

      Shutdown();
   }

   catch ( std::exception& e )
   {
      if ( LogSystem::IsInitialized() )
      {
         std::stringstream ssErr;
         ssErr << "GameSystem::Run exception:  " << e.what();
         LogSys()->AbortMessage( ssErr.str() );
      }
      else
      {
         // Note:  it is unlikely that any exceptions will be thrown before the LogSystem has been initialized,
         // because I don't use exceptions in my code, and we initialize the LogSystem before we start calling
         // into any library code such as Ogre3D or CEGUI, with the exceptions of creating the Ogre::LogManager itself.
         abort();
      }
   }
}


void GameSystem::Tick()
{
   // If we're not in focus, sleep for a while to give up some CPU cycles
   if ( AreAllSystemsInitialized() && !GraphicsSys()->GetRenderWindow()->isActive() )
   {
      // Note:  This is win32 specific
      // From somewhere on the web:  "The time period for the Win32 Sleep function is in milliseconds and can even be INFINITE, in which case the thread will never resume. The Linux sleep function is similar to Sleep, but the time periods are measured in seconds. To obtain the millisecond resolution, use the nanosleep function to provide the same service."
      Sleep( 250 ); 
   }

   // Tick the TimeSystem, to calculate our frame time.
   TimeSys()->Tick();
   float fSecFrame = TimeSys()->GetSecFrame();

   // Initialize systems
   if ( !AreAllSystemsInitialized() )
   {
      InitializeSystems();

      // Always tick our GraphicsSystem so we can display the initialization screen.
      GraphicsSys()->Tick( fSecFrame );
   }
   else
   {
      // We're done initializing.
      // Tick all the system singletons
      TickSystems( fSecFrame );
   }
}


void GameSystem::RequestShutdown()
{
   LogSys()->Message( "GameSystem::RequestShutdown", LML_NORMAL );

   // This will close the game cleanly after this tick finishes.
   m_bShutdownRequested = true;
}


bool GameSystem::IsShuttingDown() const
{
   return m_bShutdownRequested;
}


void GameSystem::Shutdown()
{
   LogSys()->Message( "GameSystem::Shutdown", LML_NORMAL );

   // If we have an active Scene, we need to call Deactivate() otherwise a bunch
   // of memory leaks show up in our memory leak detector (see vs_debug.txt)
   Scene* pActiveScene = SceneSys()->GetActiveScene();
   if ( pActiveScene )
   {
      pActiveScene->Deactivate();
   }

   DestroySystems();
}


void GameSystem::CreateSystems()
{
   // Create the LogSystem first, so we can handle any logging and ASSERTs during
   // the creation of other systems.
   // - actually we won't be able to log until after we finish creating Ogre, because we're using
   //   Ogre's LogManager.  Should think about fixing this somehow.  But at least our ASSERTs will work.
   LogSystem::Create();

   // Create Factories 
   AsteroidFactory::Create();
   BuildingFactory::Create();
   ComponentFactory::Create();
   DeviceFactory::Create();
   DropShipFactory::Create();
   FlierFactory::Create();
   ItemFactory::Create();
   PersonFactory::Create();
   ShipFactory::Create();
   SpaceTurretFactory::Create();
   StationFactory::Create();
   TurretFactory::Create();
   VehicleFactory::Create();
   WormholeFactory::Create();
   PhysicsFactory::Create();

   // Create Directories
   ActionDirectory::Create();
   ActivityDirectory::Create();
   CommandDirectory::Create();
   ConversationDialogDirectory::Create();
   ConversationScriptDirectory::Create();
   GoalDirectory::Create();
   HoloScreenDirectory::Create();
   MissionBriefDirectory::Create();
   MissionBadgeDirectory::Create();
   SkillDirectory::Create();
   TacticDirectory::Create();
   TaskDirectory::Create();
   TextDirectory::Create();
   UsageDirectory::Create();

   // Createm Systems
   AccomplishmentsSystem::Create();
   ActionSystem::Create();
   ActivitySystem::Create();
   AnimationSystem::Create();
   BattleSimSystem::Create();
   BulletSystem::Create();
   CameraSystem::Create();
   ColonySystem::Create();
   CombatSystem::Create();
   CommandSystem::Create();
   ConversationSystem::Create();
   ConsoleSystem::Create();
   DamageSystem::Create();
   DemoSystem::Create();
   DetectSystem::Create();
   DiagnosticsSystem::Create();
   DockSystem::Create();
   DropShipSystem::Create();
   EffectSystem::Create();
   EquipmentSystem::Create();
   EventSystem::Create();
   ExplosionSystem::Create();
   FactionSystem::Create();
   FleetSystem::Create();
   FlightSystem::Create();
   GraphicsSystem::Create();
   JumpSystem::Create();
   IndoorPathSystem::Create();
   InputSystem::Create();
   IntroSystem::Create();
   KnowledgeSystem::Create();
   LoadSaveSystem::Create();
   MissionSystem::Create();
   OptionSystem::Create();
   NewsSystem::Create();
   PathSystem::Create();
   PhysicsSystem::Create();
   PirateSystem::Create();
   RankSystem::Create();
   RoomSystem::Create();
   SceneSystem::Create();
   ShopSystem::Create();
   SkillSystem::Create();
   SoundSystem::Create();
   StorySystem::Create();
   StrategySystem::Create();
   TacticSystem::Create();
   TimeSystem::Create();
   TutorialSystem::Create();
   UISystem::Create();
   UniverseSystem::Create();
   UsageSystem::Create();
   WormholeSystem::Create();
}


void GameSystem::InitializeSystems()
{
   if ( AreAllSystemsInitialized() )
   {
      ASSERT( false );
      return;
   }

   // --- BEGIN EDIT ---

   // This code is a little complex, so I'm not going to display it all here ---
   // 
   // But the main point is that we call Init() on every system, like this:
   OptionSys()->Init();
   LogSys()->Init();
   CameraSys()->Init();
   // ... etc...

   // --- END EDIT ---
}


void GameSystem::TickSystems( float i_fSecFrame )
{
   // --- BEGIN EDIT ---

   // This code is a little complex, so I'm not going to display it all here ---
   // 
   // But the main point is that we call Tick() on every system, like this:
   InputSys()->Tick( i_fSecFrame );
   SoundSys()->Tick( i_fSecFrame );
   GraphicsSys()->Tick( i_fSecFrame );
   // ... etc...

   // --- END EDIT ---
}


void GameSystem::DestroySystems()
{
   // Destroy factories
   delete AsteroidFac();
   delete BuildingFac();
   delete ComponentFac();
   delete DeviceFac();
   delete DropShipFac();
   delete FlierFac();
   delete ItemFac();
   delete PersonFac();
   delete ShipFac();
   delete SpaceTurretFac();
   delete StationFac();
   delete TurretFac();
   delete VehicleFac();
   delete WormholeFac();

   // Destroy Directories
   delete ActionDir();
   delete ActivityDir();
   delete CommandDir();
   delete ConversationDialogDir();
   delete ConversationScriptDir();
   delete GoalDir();
   delete HoloScreenDir();
   delete MissionBriefDir();
   delete MissionBadgeDir();
   delete PirateSys();
   delete SkillDir();
   delete TacticDir();
   delete TaskDir();
   delete TextDir();
   delete UsageDir();

   // Destroy system singletons
   delete AccomplishmentsSys();
   delete ActionSys();
   delete ActivitySys();
   delete AnimationSys();
   delete BattleSimSys();
   delete ColonySys();
   delete CombatSys();
   delete CommandSys();
   delete ConversationSys();
   delete ConsoleSys();
   delete DamageSys();
   delete DemoSys();
   delete DetectSys();
   delete DiagnosticsSys();
   delete DockSys();
   delete DropShipSys();
   delete EffectSys();
   delete EquipmentSys();
   delete EventSys();
   delete ExplosionSys();
   delete FactionSys();
   delete FleetSys();
   delete FlightSys();
   delete JumpSys();
   delete IntroSys();
   delete KnowledgeSys();
   delete LoadSaveSys();
   delete MissionSys();
   delete NewsSys();
   delete RankSys();
   delete RoomSys();
   delete ShopSys();
   delete SkillSys();
   delete StorySys();
   delete StrategySys();
   delete TacticSys();
   delete TutorialSys();
   delete UsageSys();
   delete WormholeSys();
   delete UniverseSys();
   // The TimeSystem must be deleted after the UniverseSys, because Mobile destruction ends up calling TimeSys()->GetApplicationTime()
   delete TimeSys();
   // The PhysicsFactory must be deleted after the UniverseSys, because the Scene destructor
   // calls into PhysicsFactory::DestroyPhysicsScene
   delete PhysicsFac();
   // The CameraSys must be deleted after the UniverseSys, because 
   // the Mobile destructor talks to it.
   delete CameraSys();
   // The InputSys must be deleted after the UniverseSys, because 
   // the Mobile destructor talks to it.
   delete InputSys();
   // The PathSys must be deleted after the UniverseSys, because shutting down the active
   // Scene tries to unregister any obstacles with the PathSystem.
   delete PathSys();
   delete IndoorPathSys();
   // The SoundSys must be deleted after the UniverseSys, because shutting down a Scene
   // tries to stop its soundtrack.
   delete SoundSys();
   // The BulletSys must be deleted after the UniverseSys, since OnBulletDeleted
   // gets called.
   delete BulletSys();
   // The PhysicsSys must be deleted after the UniverseSys
   delete PhysicsSys();
   // Destroy the SceneSystem after UniverseSystem
   // TODO:  This was because of the old containment system.  Is this timing
   // still needed?
   delete SceneSys();
   // Destroy the UISystem after UniverseSystem, because the Mobile
   // destructor calls into UISys.
   delete UISys();
   // The optionSys must be deleted after the UISys, because some UIs check options such as OptionSystem::IsSkipVideo
   delete OptionSys();
   // Destroy the GraphicsSys last, since lots of stuff depends on Ogre.
   delete GraphicsSys();
   // Destroy the LogSystem _really_ last, since we should be logging until we finish shutting down.
   // And shutting down OgreRoot (from within the GraphicsSystem destructor) requires that we still have a valid Ogre::LogManager,
   // which is created and destroyed by the LogSystem.
   delete LogSys();
}


bool GameSystem::AreAllSystemsInitialized() const 
{
   return m_bAllSystemsInitialized; 
}
Some systems need to do work every frame, inside of the Tick() call.
For example, GraphicsSystem::Tick would call the Ogre::Root::renderOneFrame function

Other systems just provide some nice clean functions for the rest of the game to use.
E.g. The SoundSystem just has some nice easy "play me a sound" functions that any other System can call, as needed. Like this:

Code: Select all

   void PlaySoundEffect( const String& i_strFile, SoundChannel i_eChannel, float i_fPriority = 1.f, float i_fVolume = 0.5f, float i_fPan = 0.f );
So any other system could call something like

Code: Select all

SoundSys()->PlaySoundEffect( "zap.ogg", Gameplay_SoundChannel );
Say if you wanted to play a zap sound when you fire your lasers.
Image
User avatar
Jabberwocky
OGRE Moderator
OGRE Moderator
Posts: 2819
Joined: Mon Mar 05, 2007 11:17 pm
Location: Canada
x 218
Contact:

Re: Salvation Prophecy: A Space Epic

Post by Jabberwocky »

Mind Calamity wrote:@"twisted" joke: Same reaction as spacegaier to be honest. :D
Sorry. :) You asked so politely that I thought an over-reaction would be funny.
Mind Calamity wrote:I wonder why you chose FMOD over any of the open-source/free alternatives, any specific reasons ?
At first, I used a free sound lib. I don't even remember what it was called now. But it started crashing on me, so I got frustrated and just switched over to a commercial solution.

Still, OpenAL or irrKlang seem like good alternatives.
Also, you can use FMOD for free in non-commercial applications.
Mind Calamity wrote:Also, did you use Byatis or Cthugha ?
Cthugha.

Although I've been working on Salvation Prophecy for so long, that I've gone through 4 major revisions:
Dagon -> Eihort -> Shoggoth -> Cthugha

I didn't upgrade to 1.8 because the game is now mostly complete. So I wouldn't have had time to take advantage of any of the new 1.8 features. Plus, the closer you get to release, the less you want to mess with the stability of your game.
Mind Calamity wrote:BTW - Are you planning on releasing a demo too ? Because for now I have no way of buying games, so I have to get by with demos.
I will probably release a demo. I want to.
But I can't say for sure until I sign a distribution deal.
Image
User avatar
Mind Calamity
Ogre Magi
Posts: 1255
Joined: Sat Dec 25, 2010 2:55 pm
Location: Macedonia
x 81

Re: Salvation Prophecy: A Space Epic

Post by Mind Calamity »

Jabberwocky wrote:Sure, no problem.
It's going to be a big list, though.
I guess you weren't kidding when you said that :D

Thank you very much, it's very kind of you to share stuff like this with others (other people would probably just say "confidential" and leave it at that").

I did notice that you don't have any scripting libraries listed, did you hard-code the AI behavior and actions ?

I believe this:

Code: Select all

OgreGpuCommandBufferFlush.cpp
OgreGpuCommandBufferFlush.h
Is for stopping input lag (I think I saw a thread on that around the forums which mentioned flushing the GPU Something (Buffer?)).

Thank you for your explanation on the how the system classes work and why they exist (I was thinking of something like that, but I didn't know where I should have put the system classes - in the game engine, or the game's source code). And that Game System.cpp chunk is really going to help me.
Jabberwocky wrote:
Mind Calamity wrote:@"twisted" joke: Same reaction as spacegaier to be honest. :D
Sorry. :) You asked so politely that I thought an over-reaction would be funny.
No need to apologize, jokes are always good (twisted or otherwise :D), and I'd rather ask politely, than be rude and order you around like I'm your boss or something. :)

One more thing - I didn't notice from your video, is the game linear or open-world ? How do you manage missions/quests/assignments ?

I was thinking of doing it the spacegaier way (with a different application state class for each mission - it'd be like programming multiple games and launching them from the main application :D), other than that I really have no idea how to do it.

I sure hope you meet a good publishing deal with lots of money involved :mrgreen:, you invested literally years of your life in this game, not to mention that time wasn't spent just lazying around and surfing the net, so at the very least the game should sell enough to pay off the invested time. :)
BitBucket username changed to iboshkov (from MindCalamity)
Do you need help? What have you tried?
- xavier
---------------------
HkOgre - a Havok Integration for OGRE | Simple SSAO | My Blog | My YouTube | My DeviantArt
User avatar
spacegaier
OGRE Team Member
OGRE Team Member
Posts: 4304
Joined: Mon Feb 04, 2008 2:02 pm
Location: Germany
x 135
Contact:

Re: Salvation Prophecy: A Space Epic

Post by spacegaier »

Jabberwocky wrote:
Mind Calamity wrote:@"twisted" joke: Same reaction as spacegaier to be honest. :D
Sorry. :) You asked so politely that I thought an over-reaction would be funny.
It was, after my brain had two seconds processing it :D !!!
Ogre Admin [Admin, Dev, PR, Finance, Wiki, etc.] | BasicOgreFramework | AdvancedOgreFramework
Don't know what to do in your spare time? Help the Ogre wiki grow! Or squash a bug...
User avatar
chaosavy
Silver Sponsor
Silver Sponsor
Posts: 578
Joined: Mon Jun 15, 2009 8:29 pm
x 64
Contact:

Re: Salvation Prophecy: A Space Epic

Post by chaosavy »

The file name list should be a standard copy and paste response to people wanting feature X added.

I'm sorry, but unless we switch to another alphabet... there's simply no room...
Visit http://www.VoidDestroyer.com to check out my space sim project - Void Destroyer
User avatar
Mind Calamity
Ogre Magi
Posts: 1255
Joined: Sat Dec 25, 2010 2:55 pm
Location: Macedonia
x 81

Re: Salvation Prophecy: A Space Epic

Post by Mind Calamity »

@chaosavy:

It took me a bit to understand your post, if I understand correctly you're referring to the space-sim fans/players ?

[s]BTW - Jabberwocky, I noticed you don't have a Physics System or anything related to physics, do you handle all the physics-related stuff from all the other classes/systems, like for example combat-related physics is handled in the combat system, etc...[/s]

-- Notepad++ was acting up it seems, I manually checked now and it's all there. :oops: :D

Also, I saw:

Code: Select all

// game
#include "MID.h"
MID is ?
BitBucket username changed to iboshkov (from MindCalamity)
Do you need help? What have you tried?
- xavier
---------------------
HkOgre - a Havok Integration for OGRE | Simple SSAO | My Blog | My YouTube | My DeviantArt
User avatar
Jabberwocky
OGRE Moderator
OGRE Moderator
Posts: 2819
Joined: Mon Mar 05, 2007 11:17 pm
Location: Canada
x 218
Contact:

Re: Salvation Prophecy: A Space Epic

Post by Jabberwocky »

Lately, too much talking, not enough screenshots. ;)

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

If you get a chance, drop by the Salvation Prophecy forums and say hi. I'd love to have a little more traffic around there.
http://www.salvationprophecy.com/forum/index.php
Image
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: Salvation Prophecy: A Space Epic

Post by jacmoe »

Really, really, really, really awesome screenies. :)
I especially like the skies and the lighting.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
spacegaier
OGRE Team Member
OGRE Team Member
Posts: 4304
Joined: Mon Feb 04, 2008 2:02 pm
Location: Germany
x 135
Contact:

Re: Salvation Prophecy: A Space Epic

Post by spacegaier »

jacmoe wrote:Really, really, really, really awesome screenies. :)
I especially like the skies and the lighting.
+1 The space scenes are awesome!
Ogre Admin [Admin, Dev, PR, Finance, Wiki, etc.] | BasicOgreFramework | AdvancedOgreFramework
Don't know what to do in your spare time? Help the Ogre wiki grow! Or squash a bug...
User avatar
Mind Calamity
Ogre Magi
Posts: 1255
Joined: Sat Dec 25, 2010 2:55 pm
Location: Macedonia
x 81

Re: Salvation Prophecy: A Space Epic

Post by Mind Calamity »

I agree with spacegaier and jacmoe, but I have to say that in those screens, the orange spheres or whatever they are kinda look 2Dish, I don't see no shadows nor specularity on them, which usually means they are emitting light, but that doesn't seem to be the case.

The space scenes and the spacecrafts look amazing, great job. :)
BitBucket username changed to iboshkov (from MindCalamity)
Do you need help? What have you tried?
- xavier
---------------------
HkOgre - a Havok Integration for OGRE | Simple SSAO | My Blog | My YouTube | My DeviantArt
User avatar
Jabberwocky
OGRE Moderator
OGRE Moderator
Posts: 2819
Joined: Mon Mar 05, 2007 11:17 pm
Location: Canada
x 218
Contact:

Re: Salvation Prophecy: A Space Epic

Post by Jabberwocky »

Thanks guys!

About the spheres, they look a lot more "3D" in game, because the texture on them scrolls and moves in such a way that it's obvious it is a spherical object. But I agree, it should probably have a shadow.

I also agree that it would look better to have a bit of emitted light coming from the spheres. The problem is that there are too many spheres for the light limit of my terrain shader to handle. Ogre's terrain is divided up into fairly large pages, and if you had say 4 spheres within range of that page, then that's 4 lights + the sunlight + any other lights that occur in the Scene. So for technical reasons I can't do that.
Image
dudeabot
Gnome
Posts: 334
Joined: Thu Jun 28, 2007 2:12 pm
Location: Brazil
x 5
Contact:

Re: Salvation Prophecy: A Space Epic

Post by dudeabot »

im not sure how this impacts on frame rate, but there is this nice glow shader: http://www.ogre3d.org/tikiwiki/Glow&structure=Cookbook

i have to agree the space screens look SuperB :D
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: Salvation Prophecy: A Space Epic

Post by jacmoe »

Quite impressive that you manage to make the scenes look not empty. :)
I bet that's really tricky when you do spacey scenes.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
danny60
Gnoblar
Posts: 3
Joined: Mon Oct 24, 2011 12:20 am

Re: Salvation Prophecy: A Space Epic

Post by danny60 »

Nice game! (or game in development)
Are you going for a freelancer style thing?
User avatar
Jabberwocky
OGRE Moderator
OGRE Moderator
Posts: 2819
Joined: Mon Mar 05, 2007 11:17 pm
Location: Canada
x 218
Contact:

Re: Salvation Prophecy: A Space Epic

Post by Jabberwocky »

dudeabot wrote:im not sure how this impacts on frame rate, but there is this nice glow shader: http://www.ogre3d.org/tikiwiki/Glow&structure=Cookbook
Hey dudeabot,
I experimented extensively with the wiki glow compositor. I never could get it to look good in my game though. The major problem was that the amount of glow on an object doesn't account for the distance of the object. So a tiny distant object would have an equal radius of glow as an object right in front of you. Also, the glow had an aliasing / "swimming pixels" problem.
After a long effort at trying to make it work, I decided it wasn't worth the performance hit.
jacmoe wrote:Quite impressive that you manage to make the scenes look not empty. :)
Hey jacmoe,
Yeah, space in video games is probably a lot more interesting than it is in real life. :P
If there were really that many asteroids and debris floating around, the international space station would be in trouble!
For Salvation Prophecy, I went with a fairly bright, saturated art style, particularly compared with the earthy desaturated tones of most modern video games, so that helped a lot with the space scenes.
danny60 wrote:Are you going for a freelancer style thing?
Kinda, kinda not.

The biggest difference between Salvation Prophecy and most other modern space sim games is that there is no trading in my game. Trading can be a lot of fun, but it has been done well so many times in other space sims, I decided to do something different. Salvation Prophecy focuses more on the military conflict that unfolds between the different factions, and also some exploration of alien planets, in search of artifacts that relate to the prophecy mentioned in the game title.

I did think freelancer was a very good game.
Image
noorus
Halfling
Posts: 75
Joined: Wed Apr 20, 2011 9:55 pm
Location: Helsinki, Finland
x 3

Re: Salvation Prophecy: A Space Epic

Post by noorus »

Looking really good Jabberwocky, congratulations are in order :)

Must feel great to finish such an ambitious project, I don't think many of us know that feeling :lol:
Creator of Nice Input Library, for your advanced input needs.
Image
User avatar
Jabberwocky
OGRE Moderator
OGRE Moderator
Posts: 2819
Joined: Mon Mar 05, 2007 11:17 pm
Location: Canada
x 218
Contact:

Re: Salvation Prophecy: A Space Epic

Post by Jabberwocky »

Thanks noorus!

I wouldn't quite say "finished" yet. Close, but not finished.

One thing I've learned while working on Salvation Prophecy is that there is a nearly bottomless chasm between "finished" and "almost finished". I've been clawing my way out of that chasm, hand-hold by hand-hold, for a year now. ;)

The "ninety-ninety" rule of software development:
"The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."
—Tom Cargill, Bell Labs
Image
User avatar
DavlexDesign
Orc
Posts: 400
Joined: Thu Apr 23, 2009 7:23 am
Location: Australia
x 19
Contact:

Re: Salvation Prophecy: A Space Epic

Post by DavlexDesign »

Jabberwocky wrote:The "ninety-ninety" rule of software development:
You are soooo right there mate.
User avatar
duststorm
Minaton
Posts: 921
Joined: Sat Jul 31, 2010 6:29 pm
Location: Belgium
x 80
Contact:

Re: Salvation Prophecy: A Space Epic

Post by duststorm »

Jabberwocky wrote:The problem is that there are too many spheres for the light limit of my terrain shader to handle.
Maybe it would be an option to bake the light onto your terrain texture?
Developer @ MakeHuman.org
User avatar
Jabberwocky
OGRE Moderator
OGRE Moderator
Posts: 2819
Joined: Mon Mar 05, 2007 11:17 pm
Location: Canada
x 218
Contact:

Re: Salvation Prophecy: A Space Epic

Post by Jabberwocky »

Yeah, actually before I switched to the new Ogre::Terrain, I used to bake my terrain lighting, and it worked very well, for non-moving lights of course. The advantage of my current terrain shaders are that all the lighting is dynamic, so it can handle moving or changing lights, say for example an explosion light, or a player-attached light.

It would be possible to combine the two techniques I guess. But since this is just one planet of about 15 in the game, I can't justify the time it would take to write that extra code to generate the lightmap and update the shader. It's a good idea though. Maybe next game. :)
Image
User avatar
SunSailor
Gnoll
Posts: 699
Joined: Sun Jan 02, 2005 5:45 pm
Location: Velbert, Germany
x 2
Contact:

Re: Salvation Prophecy: A Space Epic

Post by SunSailor »

More a
"The first 90 percent of the code accounts for the first 10 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."
—Tom Cargill, Bell Labs
[/quote]

but you're right. Had this with Jade:DS, too. Spent almost three years in a "mostly done!" state, hoping for a release within the next half year. Finally, it took until august this year. I cross fingers, that you reach the finish line much earlier :).
Online-Distribution with Jade-DS, Ogre-Wrapper included.
Follow me on Twitter for updates!
User avatar
zarlox
Halfling
Posts: 70
Joined: Tue Apr 19, 2011 12:32 am
Location: Canada
x 2

Re: Salvation Prophecy: A Space Epic

Post by zarlox »

@JabberWocky

:shock: Wow those last set of screenshopts you posted are really looking great. I liked the atmosphere of the planet. The sky and ground textures are great. Is the sky moving?
User avatar
Jabberwocky
OGRE Moderator
OGRE Moderator
Posts: 2819
Joined: Mon Mar 05, 2007 11:17 pm
Location: Canada
x 218
Contact:

Re: Salvation Prophecy: A Space Epic

Post by Jabberwocky »

Hey Zarlox,
Thanks man. Sorry for the slow reply - I was without a net connection for the last while.
I'm just using regular skyboxes, so it's a set of static images. But in space I use a shader that subtly pulses and wavers the nebulae, so it does move a bit. There's some snow falling on the blue planet, too.
Image
User avatar
nec
Gremlin
Posts: 175
Joined: Fri Sep 29, 2006 5:56 pm
Location: Rosny Sous Bois, France
x 11
Contact:

Re: Salvation Prophecy: A Space Epic

Post by nec »

Looks very nice, I will try to get some time to test it. :)
User avatar
Jabberwocky
OGRE Moderator
OGRE Moderator
Posts: 2819
Joined: Mon Mar 05, 2007 11:17 pm
Location: Canada
x 218
Contact:

Re: Salvation Prophecy: A Space Epic

Post by Jabberwocky »

I put together a new video, which splices together some story with gameplay.
It ain't super production (go Windows Movie Maker!), but an indie's gotta do what an indie's gotta do. ;)



Direct vimeo link, which has HD for the bandwidth unimpaired

I'm going to be shopping around for distribution right away, so hopefully that's enough to spark some interest with the company(s) I want to work with.
Image
Post Reply