Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - softcoder

Pages: 1 [2] 3 4 5
26
MegaGlest / Special key presses in lobby menu
« on: 15 October 2012, 08:36:33 »
When you are hosting a game there are a few 'quick' keys to use to speed up selections.

1. To change ALL non human slots to the desired Control type when changing one slot, hold the CTRL key and all others change to the same value as the one you are changing.

2. To jump to a specific Map, Tileset or Techtree before clicking the listbox arrow, hold SHIFT+<letter> to jump to the next item in the list starting with the letter pressed.

27
MegaGlest / tech / faction validation
« on: 15 October 2012, 00:41:22 »
I have updated the validation logic to handle linked factions in techtrees and correct a number of mis-reported items. For any modders that use this, please report on any problems that the validator gives as of svn rev #: 3695.

Code: [Select]
/megaglest --validate-techtrees=ultrapack
or to ignore duplicate files:

Code: [Select]
/megaglest --validate-techtrees=ultrapack=hideduplicates

28
MegaGlest / Few more lua functions - a new network scenario
« on: 13 October 2012, 05:09:31 »
I am working on a simple network scenario to be included in the upcoming release called 'capture enemy flag'. I have added the following new lua functions in svn to support what I am doing in that scenario:

triggeredCellEventUnitId()
showMarker(int flashCount, int factionIndex, string note, string textureFile,Vec2i pos)
humanFaction()

1. The first one can be called in a cell trigger event and tell you which unit triggered the event
2. The second flashes a position in the minimap
3. the third returns the faction index of the human player

*Update: I have added the new network scenario in svn (currently called capture enemy flag) which supports two players over network (and a neutral cpu player that will attack anyone that comes near him). The scenario shows trigger areas, network messages, cell markers, etc. Can you capture the enemy players flag and return home safely before they do?

29
MegaGlest / MegaGlest 3.7.0 beta1 ready for testing
« on: 7 October 2012, 09:00:35 »
Installation files are available on sourceforge at:

http://sourceforge.net/projects/megaglest/files/megaglest_3.7.0/

Linux 32 and 64 bit full and stand alone archives, Windows full and stand alone archives.

Edit (tomreyn, Su 07 Oct, 14:37 UTC):
Please note that the file names for the Linux installers had been mixed up until a few minutes ago.
We now have MegaGlest-Installer-3.7.0-beta1_x86_64_linux.run (64 bit) und MegaGlest-Installer-3.7.0-beta1_i686_linux.run (32 bit).
If you ran into error messages such as libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory or wrong ELF class then please download again.

Edit (tomreyn, Su 08 Oct, 20:58 UTC):
Please be aware that there are several mirror servers for sourceforge. After clicking on the file you wish to download you will see a page with fine print allowing you to go to a special page where you can then select a mirror server close to you which has the given file. For example, if you wanted to download MegaGlest-Installer-3.7.0-beta1_i386_win32.exe and are from Brazil, you may want to click on said link, ending up on
http://sourceforge.net/settings/mirror_choices?projectname=megaglest&filename=megaglest_3.7.0/MegaGlest-Installer-3.7.0-beta1_i386_win32.exe
As a Brazilian, your best choice is probably the mirror server in Brazil, so you would click that one, and restart the download. This time you should get forwarded directly to the brazilian server and thus end up at
http://ufpr.dl.sourceforge.net/project/megaglest/megaglest_3.7.0/MegaGlest-Installer-3.7.0-beta1_i386_win32.exe
This very server also supports directory indexes, so if you wanted to download any of the other 3.7.0 beta1 files from Brazil rather than eleswhere you could take a look at
http://ufpr.dl.sourceforge.net/project/megaglest/megaglest_3.7.0/

30
MegaGlest / 7z extraction verbose info
« on: 27 September 2012, 05:59:32 »
We now display the output (as it happens) when extracting data using 7z from mod menu and the game lobby. This should help users know at least that something is happening during this time and also help detect extraction problems.

31
MegaGlest / New lua functions for cell markers
« on: 25 September 2012, 07:05:55 »
- added lua functions to add / remove cell markers:
addCellMarker(0,'test from scenario!','',cellMarker)
param1=factionindex
param2=cell hint
param3=empty string
param4=cellPosition

removeCellMarker(0,{46,13})
param1=factionindex
param2=cellPosition

Through lua you may add 'system' markers that do not belong to any team. USe a faction index of -1 for those types of faction markers.

32
MegaGlest / Battle End video and music support
« on: 25 September 2012, 00:24:50 »
I've added support for game end (battle end) videos AND/OR music. To use it get the svn build from tonight and setup your mod:

Videos:
look for videos in the following order:
1. check faction xml file for the following attributes (depends on win/lose) on the faction tag:
faction-battle-end-win-video="<path to video>"
faction-battle-end-lose-video="<path to video>"
if not defined 2. check the faction folder for the files:
battle_end_win_video.*
battle_end_lose_video.*
if not found check the data/core/menu/videos/ paths for:
battle_end_win.*
battle_end_lose.*

Music:
 added support for custom music on battle end screen:
look for music in the following order:
1. check faction xml file for the following attributes (depends on win/lose) on the faction tag:
faction-battle-end-win-music="<path to music>"
faction-battle-end-lose-music="<path to music>"
if not defined 2. check the faction folder for the files:
battle_end_win_music.*
battle_end_lose_music.*
if not found check the data/core/menu/music/ paths for:
battle_end_win.*
battle_end_lose.*

Using the combination of these you may create short videos without sound and longer music if desired.

33
MegaGlest / Camera follows unit feature
« on: 24 September 2012, 18:10:18 »
I have added an expimental feature where you can have the camera follow a specific unit (as if you were the unit looking into the world). Select the unit and press f4 and move the unit. To turn it off unselect all units and press f4 again.

34
MegaGlest / TODO for next release
« on: 22 September 2012, 16:17:34 »
What needs to be done before we make a new release?

Changelog

v3.7.0
- bugfixes reported in the bugs forum since 3.6.0.3
- first person view allows you to follow a selected unit. Select one unit anf press f4 to enable (deselect anf f4 to disable).
- cell markers allow players to create markers anywhere on the map and associate a note with them. All team players see the markers.
- quick sonar signal to tell team players where the action is happening
- admin player can disconnect other network players in game
- saving / loading games.
- when placing a new unit, we display a 'ghosted' model while units walk to the build location to show the space it will occupy
- video playback support (using libvlc)
- network multi-player scenarios
- campaign scenarios
- play a sound when player mentions your name in chat mode
- more game data validation for commandline modders, see --help for more info
- many new lua commands for scenario modders
- enhanced AI management (logging and modding) and added more intellegence to decsions
- enhanced unicode support for non-ascii characters
- customizable unit, resource and upgrade language files
- tilesets support animated models
- scenario factions may now be 'neutral', meaning not on any players team.
- new command action mouse cursors
- resources are selectable showing info about the resource
- particle colors are now affected by the time of day
- new game hints are displayed while loading a new game
- linked faction support (and new techtree MagiTech for classic Glest play)

35
MegaGlest / IQM model format (abandon ship MD5)
« on: 29 July 2012, 06:59:28 »
While looking into getting MD5 working with MG I've decided to drop MD5 altogether in favour of IQM (http://lee.fov120.com/iqm/). IQM is public domain and designed by highly advanced open source developers who wanted a format that loads fast and offers good portability (like being able to use Blender). I searched for a long time to find an MD5 exporter in the latest release of Blender and found none that work. The IQM library allows converting to IQE (a text version) and offers many great and practical features. IQM takes ideas from MD5 and Valves SMD and solves a lot of problems around those formats.

Just thought I'd let people know about this because I've wasted enough time working in MD5 and wanted to let you know we are looking at using IQM now.

Thanks

36
MegaGlest / Network lag
« on: 21 July 2012, 04:37:01 »
I commited a change that forces the server player to wait for clients that are lagging to catch up (in smaller bursts). I tried a game with 6 of us on LAN and no out of synch and we finished the game on low end hardware.

Please try out svn and let me know what you think?

37
MegaGlest / What is different about this screenshot?
« on: 12 May 2012, 19:19:56 »
Can anyone tell me what this means :)


38
MegaGlest / A few new LUA functions for wciow
« on: 11 May 2012, 05:24:16 »
You had asked for registering an area of cells. I looked at how GAE does it and its too different to follow that approach, so i added these:

int registerCellAreaTriggerEventForUnitToLocation(sourceUnit, pos)
int registerCellAreaTriggerEventForFactionToLocation(sourceFaction, pos)

In both cases pos is a 4 value array specifying the 'box' of cells (x,y of top left, and x,y of bottom right).

Thanks

39
MegaGlest / Translatable techtrees
« on: 2 May 2012, 21:24:31 »
I have added some initial support in svn for translating some techtree information in the UI. Hre is how it works:

1. For a given techtree (lets assume megapack) create a folder named lang within the megapack (techtree) folder.
2. create lng files (one for each language you will support) using the naming convention:
<techtree>_<language>.lng example:
megapack_german.lng
3. Supported translatable items are currently: Resource, unit and Upgrade names. In each lng file add:
ResourceTypeName_food=Yummies
UnitTypeName_archer=Stealth Minion
UpgradeTypeName_advanced_architecture=Fancy Science

(after the 1st _ you enter the actual name of the item). In game the discovered translated strings will display if the user is using a supported language, otherwise it defaults to original behavior.

40
MegaGlest / Moving to VC++ 2010 soon
« on: 20 April 2012, 02:16:39 »
I have updated the build system to support VC++ 2010 (and a new windows dependency archive exists on sf for that).

I have not tested it yet but I added a new build batch file for VC++ 2010 in mk\windoze called:

build-mg-2010.bat

This should download 7z and the new windows_deps.7z (and extract it) then build using vc++ 2010.

Thanks

41
MegaGlest / A few new commandline commands
« on: 2 April 2012, 06:08:50 »
Just in case this is useful (like mor useful for masterservers) you may now check what game data is installed:

./megalgest with any of the following

Code: [Select]
--list-maps
--list-techtrees
--list-scenarios
--list-tilesets
--list-tutorials

42
MegaGlest / More AI behavior control
« on: 31 March 2012, 08:30:35 »
I committed some more changes for faction specific AI Behaviour documented Below. In the Faction xml file under the faction tag you may add:

Code: [Select]
        <ai-behavior>
        <static-values>
<!--    You may use type or type-name (either will work)

        Possible values for type

aibsvcMaxBuildRadius = 0                        default value: 40     --> Maximum radius of cells a worker will consider for building a new unit
aibsvcMinMinWarriors = 1                        default value: 7     
aibsvcMinMinWarriorsExpandCpuEasy = 2           default value: 1
aibsvcMinMinWarriorsExpandCpuMega = 3           default value: 3
aibsvcMinMinWarriorsExpandCpuUltra = 4          default value: 3
aibsvcMinMinWarriorsExpandCpuNormal = 5         default value: 3
aibsvcMaxMinWarriors = 6                        default value: 20
aibsvcMaxExpansions = 7                         default value: 2  --> Maximum # of bases to expand to
aibsvcVillageRadius = 8                         default value: 15   --> The minimum spacing between bases
aibsvcMinStaticResourceCount = 9                default value: 20  --> the minimum # of static resources the faction needs
aibsvcScoutResourceRange = 10                   default value: 20   --> the maximum range a unit will look for resources
aibsvcMinWorkerAttackersHarvesting = 11         default value: 3  --> the minimum # of special 'worker attacker' units required to be harvesting before they will attack
        aibsvcMinBuildSpacing = 12                               default value: 1  --> the minimum cell spacing between units to build

        Possible values for type-name

MaxBuildRadius
MinMinWarriors
MinMinWarriorsExpandCpuEasy
MinMinWarriorsExpandCpuMega
MinMinWarriorsExpandCpuUltra
MinMinWarriorsExpandCpuNormal
MaxMinWarriors
MaxExpansions
VillageRadius
MinStaticResourceCount
ScoutResourceRange
MinWorkerAttackersHarvesting
        MinBuildSpacing
-->
                <static type="9" value="80"/>
                <static type="0" value="75"/>
                <static type="7" value="4"/>
                <static type-name="VillageRadius" value="25"/>
        </static-values>
        </ai-behavior>

43
MegaGlest / More lua functions
« on: 30 March 2012, 07:19:23 »
The follow are some new lua functions we commited in svn:

Neutral units can be created by setting their team # to 9 (makes the system think they are an observer)

-- this function can be check to see if the game is over
bool isGameOver()
-- this function creates a timer that will only trigger the timer event after triggerSecondsElapsed seconds then remove the timer
int startEfficientTimerEvent(int triggerSecondsElapsed)
-- this function can be safely used for predictable random number seeding
setRandomGenInit(int seed);
-- this function generates a predictable random number
int getRandomGen(int minVal, int maxVal);
-- this function returns the world frame count (maybe good for seeding random number generation)
int getWorldFrameCount();

-- this function returns a list of units for a faction that match one or both commandtype and field criteria
-- if commandtype and field are empty it gets all units in a lua array for the faction
-- if commandtype if empty and field is set (0 = land 1 = air) then it finds units currently in that field
-- if commandtype is set but field is empty it gets all units that have that command type
-- if commandtype is set and field is set it gets all units that have that command type in the given field (Attack air for example)
int [] getUnitsForFaction(int factionIndex,const string& commandTypeName, int field);
-- this function returns the field the specified unit is in
int getUnitCurrentField(int unitId)

-- this function is helpful for network scenarios and shows the message for players in the specified faction
void networkShowMessageForFaction(const string &text, const string &header,int factionIndex);
-- this function is helpful for network scenarios and shows the message for players on the specified team
void networkShowMessageForTeam(const string &text, const string &header,int teamIndex);

Heres an example scenario using some of these features:

Code: [Select]
<?xml version="1.0" standalone="yes" ?>
<?xml version="1.0" standalone="yes" ?>
<scenario>
<difficulty value="3"/>
<players>
<player control="human" faction="tech" team="1"/>
<player control="cpu-ultra" faction="norsemen" team="2"/>
<player control="cpu-ultra" faction="tech" team="9"/>
<player control="cpu-ultra" faction="persian" team="9"/>
</players>
        <fog-of-war value="false"/>
<map value="8vs8islands"/>
<tileset value="desert2"/>
<tech-tree value="megapack"/>
<default-resources value="false"/>
<default-units value="false"/>
<default-victory-conditions value="false"/>
<scripts>
                <global>
        -- global vars
                        timer_event_crazy_interval = 15
                        timer_event_enemy_getflag_interval = 15
                </global>
<startup>

--disable AI for neutral factions
disableAi(3)
                        disableAi(4)

--my units
                        myStart=getRandomGen(0,3)
createUnit('castle', 0, startLocation(myStart))
myCastle=lastCreatedUnit()
createUnit('cow', 0, startLocation(myStart))
createUnit('worker', 0, startLocation(myStart))
createUnit('swordman', 0, startLocation(myStart))
createUnit('battle_machine', 0, startLocation(myStart))
                        myBonsol=lastCreatedUnit()
createUnit('archer', 0, startLocation(myStart))

                        giveResource('gold', 0, 1000);
giveResource('wood', 0, 1300);
giveResource('stone', 0, 350);
giveResource('food', 0, 1000);

-- enemy units
                        enemyStart=getRandomGen(0,3)
createUnit('castle', 1, startLocation(enemyStart))
                        enemyCastle=lastCreatedUnit()
                        createUnit('cow', 1, startLocation(enemyStart))
                        for i=1, 5 do
                                createUnit('thrull', 1, startLocation(enemyStart))
                        end
                        for i=1, 5 do
                                createUnit('battleaxe', 1, startLocation(enemyStart))
                        end
                        createUnit('valkyrie', 1, startLocation(enemyStart))
                        myValkyrie=lastCreatedUnit()
                        createUnit('archer', 1, startLocation(enemyStart))
                       
giveResource('gold', 1, 1000);
giveResource('wood', 1, 1000);
                        giveResource('stone', 1, 1000); 
giveResource('food', 1, 1000);

                        -- neutral units
                        neutralStart=getRandomGen(0,3)
                        while neutralStart == myStart or neutralStart == enemyStart do
                                neutralStart=getRandomGen(0,3)
                        end

createUnit('castle', 2, startLocation(neutralStart))
neutralCastle1=lastCreatedUnit()
                        createUnit('palace', 3, startLocation(neutralStart))
                        neutralCastle2=lastCreatedUnit()

--objectives
objective='firstwave'
showMessage('Brief1', 'CaptureFlag')
setDisplayText('firstwave')

                        --print 'TEST A'
                        cell_event1 = registerCellTriggerEventForUnitToUnit(myBonsol,neutralCastle1)
                        cell_event2 = registerCellTriggerEventForUnitToUnit(myValkyrie,neutralCastle2)
                        timer_event2 = startEfficientTimerEvent(timer_event_enemy_getflag_interval)
                        --print 'TEST B'

                        --networkShowMessageForFaction('BriefNetworkFaction', 'CaptureFlag', 0)
                        --networkShowMessageForTeam('BriefNetworkTeam', 'CaptureFlag', 2)
</startup>

<unitCreated>
</unitCreated>

<unitDied>
                        --print 'TEST C'
                        if myValkyrie == lastDeadUnit() then
        showMessage('WinEnemyDead', 'Won')
                                setPlayerAsWinner(0);
                                endGame()
                        elseif myBonsol == lastDeadUnit() then
        showMessage('WinEnemy', 'Lose')
                                setPlayerAsWinner(1);
                                endGame()
                        end
</unitDied>

                <timerTriggerEvent>
                        if triggeredTimerEventId() == timer_event2 then
                                timer_event2 = nil
                                showMessage('Brief4', 'CaptureFlag')
                                moveToUnit(myValkyrie,neutralCastle2)
                        elseif triggeredTimerEventId() == timer_event_crazy then
                                if isGameOver() == true then
                                        timer_event_crazy = nil
                                else
                                        --givePositionCommand(myValkyrie,'attack',startLocation(myStart))
                                        attackers=getUnitsForFaction(1,'attack',getUnitCurrentField(myBonsol))
                                        for i=1, #attackers do
                                                giveAttackCommand(attackers[i],myBonsol)
                                                --print('Unit id: ' .. attackers[i] .. ' is attacking unit id: ' .. myBonsol)
                                        end
                                        timer_event_crazy = startEfficientTimerEvent(timer_event_crazy_interval)
                                end
                        end
                </timerTriggerEvent>

                <cellTriggerEvent>
                        --print 'TEST CellEvent'
                        if triggeredCellEventId() == cell_event1 then
                                --print 'TEST CellEvent1'

        showMessage('Brief2', 'CaptureFlag')
        setDisplayText('secondwave')
                                objective='secondwave'
                                unregisterCellTriggerEvent(cell_event1)
                                unregisterCellTriggerEvent(cell_event2)
                                cell_event1 = nil
                                cell_event2 = nil

                                cell_event3 = registerCellTriggerEventForUnitToUnit(myBonsol,myCastle)

                                for i=1, 5 do
                                        createUnit('flyingvalkyrie', 1, startLocation(enemyStart))
                                end

                                timer_event_crazy = startEfficientTimerEvent(timer_event_crazy_interval)
                        elseif triggeredCellEventId() == cell_event2 then
                                --print 'TEST CellEvent2'

        showMessage('Brief3', 'CaptureFlag')
        setDisplayText('secondwave2')
                                objective='secondwave2'
                                unregisterCellTriggerEvent(cell_event1)
                                unregisterCellTriggerEvent(cell_event2)
                                cell_event1 = nil
                                cell_event2 = nil

                                cell_event3 = registerCellTriggerEventForUnitToUnit(myValkyrie,enemyCastle)
                                moveToUnit(myValkyrie,enemyCastle)
                        elseif triggeredCellEventId() == cell_event3 then
                                --print 'TEST CellEvent3'

                                unregisterCellTriggerEvent(cell_event3)
                                cell_event3 = nil

                                if objective == 'secondwave' then
                showMessage('WinEnemyDead', 'Won')
                                        setPlayerAsWinner(0);
                                        endGame()
                                elseif objective == 'secondwave2' then
                showMessage('WinEnemy', 'Lose')
                                        setPlayerAsWinner(1);
                                        endGame()
                                end
                        end
                </cellTriggerEvent>
                <GameOver>
                        if cell_event1 ~= nil then
                                unregisterCellTriggerEvent(cell_event1)
                                cell_event1 = nil
                        end
                        if cell_event2 ~= nil then
                                unregisterCellTriggerEvent(cell_event2)
                                cell_event2 = nil
                        end
                        if cell_event3 ~= nil then
                                unregisterCellTriggerEvent(cell_event3)
                                cell_event3 = nil
                        end

                        if timer_event2 ~= nil then
                                stopTimerEvent(timer_event2)
                                timer_event2 = nil
                        end
                        if timer_event_crazy ~= nil then
                                stopTimerEvent(timer_event_crazy)
                                timer_event_crazy = nil
                        end
                </GameOver>
</scripts>
</scenario>

44
MegaGlest / Free morph (ignoring resource requirements)
« on: 27 March 2012, 03:25:49 »
svn now allows morph commands to ignore resource requirements for the unit you will morph to. To enable this add this to the command:

Code: [Select]
<ignore-resource-requirements value="true" />
Thanks

45
MegaGlest / Saved Games are coming
« on: 13 March 2012, 15:28:32 »
I have quite a bit of this funcationality working in svn, the main thing left (i think) is restoring particles on game load, but nearly everything else works. Currently the code in svn saves the game when you exit, so to test do some things (build and execute some commands) and exit the game, then reload like this:

Code: [Select]
./megaglest --load-saved-game
Thanks

46
MegaGlest / One word of caution
« on: 12 March 2012, 05:38:49 »
While I think feedback is good and it helps improve the game, I also see now that we have far more ideas, criticisms and comments about what 'should be' in megaglest than offers to help. Good to see people are playing, thats what its about :) But honestly, we get so little help that it always runs the risk of the help you have, disappearing and you're left with even less help in the end. I cannot speak for the guys working on GAE, but I wanna say that they have been working hard for years and have done a good job adding some good features, and glad to see they still have die hard fans. However, if all a programmer receives is a never ending list of feature requests and lists of whats wrong, eventually you're motivation to work on the project disappears and you end up worse in the end.

Please, spend as much time trying to 'find' help or contributing something as you do telling us what you want. Don't always take, but give. Maybe thats partially why things didn't work well between our attempt to work with the guys from GAE?

Anyways, something to think about.

47
MegaGlest / MegaGlest 3.6.0.3 Release (bugfix stability release)
« on: 25 January 2012, 00:52:13 »
MegaGlest 3.6.0.3 release - come and get it while its hot (svn revision 3080)
Downloads here: http://megaglest.org/download.html or below

https://www.youtube.com/watch?v=33Ez8mc_PUY

Changelog:

v3.6.0.3 - this is primarily a bugfix release AND IS COMPATIBLE with 3.6.0.2 (only the binaries have changed, data is still the same)

- cmake build fixes (for newer libircclient 1.6 support, custom data path's etc)
- fixed vbo bug causing numerous clients to crash for certain video drivers
- g3dviewer fixes + ability to specify image size of auto screenshots on commandline
-  battle end screen no longer chopped off for 8 player display
- proper use of fontconfig so various linux distros will find the fonts specified regardless of actual location
- Windows headless server hosting is now fixed

v3.6.0.2

- This release is primarily work done to get accepted into the next release of Debian Linux.
- some bugfixes reported in the bugs forum from 3.6.0
- g3d plugin for blender 2.61 included in the blender folder (thanks to love heaven and yggdrasil)
- added new ways to select unit for some players with opengl drivers that
  don't work with selection buffer: EnableColorPicking=true

v3.6.0

- bugfixes reported in the bugs forum from beta1 and 2
- iso639-1 style language loading example: megaglest --use-language=zh and auto language detect on first launch
- new and updated translations (Greek, Japanese, Russian, Italian, Czech etc)
- Ability to toggle languages anywhere in the game using CTRL-L
- auto complete player names in chat mode using tab character
- New headless server mode allows dedicated servers to host games for network players (command line option --headless-server-mode)
- customized port # override via commandline (useful for multiple headless servers) example: megaglest --use-ports=x,y (x is internal port y is external port)
- new client 'admin' mode when the first client connects to a headless server he controls the game settings
- new commandline option to support standalone modes example: megaglest --load-mod=x (x is the path to the mod)
- new lua functions added (to be documented on the MG wiki)
- New attack boost system (currently used by Romans faction) which allows new types of in game unit effects.
- attack-boosts can be named and shared for proper re-use and singleton usage.
- Improved mod menu which always checks for updates for all mods now and more
- Modders can change intro, menus, faction AI behavior and many more things.
- lower CPU / RAM requirements in headless server mode
- improved rendering performance
- New font system and enhanced International language support (Chinese, Japanese, etc)
- New intro
- Enhanced AI plays smarter and responds more quickly
- New ability to enable in game team-switching for defecting to other teams in game
- Improved Megapack including better balanced Romans faction
- Added ability to 'pause' network games by press ESC in game to show a new popup-menu with in game options.
- Hosts can now set a title for their game for network games.
- Music fades in and out of game start/stop
- New low food warning indicators tells players when they are running out of food
- MacOSX support (thanks weltall)
- Players are no longer dropped in game lobby when toggling maps (player status may show as unassigned network node if they are ina slot that is not applicable to the selected map)
- Bugfixes for supported UPNP for auto router configuration when hosting games
- many more...



Important information


v3.6.0.3:

Full installers:

Linux 64 bit:
Download Here (224.2 MB)
sha1sum 0af71fb858170fd4245f3631091a2531f65b70b0

Linux 32 bit:
Download Here (222.7  MB)
sha1sum f3218248a512ba7a7986336e505e53dcd989eb30

Windows:
Download Here (199.8 MB)
sha1sum 9d99058a73166fc61f7a6c380e6ff25060d050a6

Mac OS X (updated, now points to 3.6.0.3 build):
Download Here (344.3 MB)
sha1sum f3b7307be45894de798c08a37227bf2ced9f2ff9



Advanced options:
(click to show/hide)

Please remember to report any issues and bugs in a separate thread, not here.




Update (tomreyn): Adding Mac OS X release.

49
MegaGlest / A few more lua functions
« on: 5 January 2012, 00:59:55 »
By request from Muwuum I've added a few more lua methods:

Code: [Select]
string getSystemMacroValue(string key)
string getPlayerName(int factionIndex);
The first function will be expanded as time goes on, but for now it allows you to get the path to the loaded scenario, example:

Code: [Select]
dofile(getSystemMacroValue("$SCENARIO_PATH") .. "startup.lua")
The second returns the playername for the given faction index example:

Code: [Select]
getPlayerName(0)
would return the playername for player in the first faction. This would be useful for network scenarios. This is in svn and would be included in the next release.

Thanks


50
MegaGlest / Network play for Scenarios? I think so!
« on: 26 December 2011, 06:26:03 »
We're playing around with allowing network play for scenarios over the next while. I currently have rigged together something that works simply by setting the control type in the scenario XML to "network". Additionally I display a list of scenarios in the custom game lobby that have at least 1 network player, and when selected it sets all settings to those of the scenario + sets the scenario name which then loads for all players at game start.

While testing we will need to somehow ensure that network scenarios are free of any dangerous LUA that could cause out of synch. Eventually we may need to have a way of having server controlled instructions for some LUA script logic to ensure consistency (not sure yet). But if we get this working it could open a whole new opportunity for fun for network play (mixing campaign + multi-player).

*Update: did a quick test with Elimnator using a sample scenario he whipped together and so far so good! This will make network play VERY fun and so much more interesting, but will definitely require a whole new way of thinking when it comes to scenarios since these types of scenarios are not single player focussed (message boxes need to target the active player etc). Mix this with multi-scenario loading and it gets amazingly fun :)

Pages: 1 [2] 3 4 5