GD Arena - Launch Pad (v1.04 Released 8-28-2003)

Started by
19 comments, last by slepyii 20 years, 7 months ago
Hi All, I have created a launch pad application that lists the bots available in the bots directory and lets you choose which two you want to battle. You can also set the following options:     - Set debug flag     - Maximize arena on launch     - Auto start battles     - Auto Show FOV     - Run Multiple Matches Click to get to the site and download.
This basically lets you easily switch the bots that battle without having to edit the INI file, even though its not that hard. - Timothy S. Update 8/28/2003      - Bug Fix: Bot list is now reset every time arena path is changed      - Eliminated Hidden window style      - Removed Match Time from Auto-Close parameters      - Added Always On Top option to Debug Output      - Added Match Results window      - Auto close now uses the GDAResults.txt file to determine end of match condition      - Debug log window has been cleaned up and now only contains the Rich Edit control Update 8/22/2003      - Updated, simplified user interface (Advanced options now under an advanced options dialog)      - Ability to set the Arena path (Launch Pad no longer has to be in the same folder as the main Arena application)      - Can now minimize window      - Window now has an icon / system menu      - Focus is kept on Launch button when window is restored after launching arena      - You can now start the arena Normal, Maximized, Minimized, or Hidden      - Only displays bots with the correct interface version (Uses highest version found when searching for bot DLLs)      - Window positions are saved between runs      - Added debug output window and have included code for bots to communicate with it      - Didn't loose ability to read old config files so all your old settings are still valid and converted to the new file format when you close Launch Pad      - And finally has a new home at gdarena.sleepyware.com! [edited by - slepyii on August 28, 2003 12:32:27 AM]
Advertisement
I don''t see why he''d have any problems with that. It''s just a tool, as long as it doesn''t hack the exe, but we''ll see what he says. I''ll defently be using it if its OKayed though.

-J
I''m fine with it. I think it''s great and can add it to the download.

Admin for GameDev.net.

Its released! Took a bit longer than I had hoped to get it online but its up. I have tested to make sure it works on 2000 and 98. Don't have access to any other OS's so this can be considered a trial run.


To run you will need to place it in same folder as the GD Arena executable, select your bots and click Launch. It will hide itself until GD Arena is closed. The version information is pulled from the version resources in the file and displays n/a if none are available.


The only planned improvement is verifying that the DLLs are valid bots, and displaying the Interface version of GD Arena if its ever made available. If this is true then I will update the bot detection logic to only list bots that use that version of the interface.

Clicky to go to the site and download.

- Timothy

[edited by - slepyii on August 5, 2003 8:08:15 PM]
Yep, seems to work as it should, though I''ll let you know if there are any problems. Maybe a feature you could add in is a auto-restart to reply matches n times. I think that might get implemented in a newer version of the arena, but you could save Khawk some hassel if you do it with this.

Great job,

-J
Great job! I love it - and it''s helpful - although I think that you should store the previous two bots that were loaded up so you can simply start up the program and have those two already selected. How you do that is up to you. I''d do something with the registry because a file would be annoying to have to carry along. Just my thoughts.

By the way, how did you get the field of view to show up? and the auto-start option, that was done by sending f5 key messages at the beginning right?

---
Brent Gunning | My Site
quote:Original post by RapidStunna
Great job! I love it - and it''s helpful - although I think that you should store the previous two bots that were loaded up so you can simply start up the program and have those two already selected. How you do that is up to you. I''d do something with the registry because a file would be annoying to have to carry along. Just my thoughts.



I agree, infact not only the bots, but the settings (eg debug, maximized etc) should be stored too. I think a file (like a ini) would be a better way of storing it. If you did use the registry, then (for politness) you should provide a uninstaller to remove the registry crap if i ever remove the program. So a file is easier.

-J
New update. This addresses both concerns above, mainly ability to run multiple matches and saving of settings. Only advantage I can see with running multiple matches is to help your bot learn as I have no way of knowing who won what match. Update would have been out sooner, but I was trying to eliminate both concerns of the registry and external cfg file by saving the settings in the EXE. Unfortunattly I found out the hard way you can't modify data already in the EXE, but you can append data . . . go figure. Didn't feel like having the EXE grow in size each time you closed so the data is in a CFG file.


quote:Original post by RapidStunna
By the way, how did you get the field of view to show up? and the auto-start option, that was done by sending f5 key messages at the beginning right?

This is done by creating the process, and then waiting for it to start up completley. After this is done I enumerate the Windows created by it, using the first visible one I find, and then use ShowWindow() to maximize it if so desired. I use PostThreadMessage() mimicing WM_KEYDOWN & WM_KEYUP for F5 to start the match, and F10 to show the FOV. Better yet, source is better than 1000 words, so here is the relavent section:
BOOL CALLBACK EnumWndProc(HWND hwnd, LPARAM lParam){	SLaunchInfo * LaunchInfo = (SLaunchInfo *)lParam;	if (!LaunchInfo)		return FALSE;	if (IsWindowVisible(hwnd))	{		if (LaunchInfo->FullScreen)			ShowWindow(hwnd, SW_MAXIMIZE);		if (LaunchInfo->StartMatch)		{			PostThreadMessage(GetWindowThreadProcessId(hwnd, NULL), WM_KEYDOWN, VK_F5, 1);			PostThreadMessage(GetWindowThreadProcessId(hwnd, NULL), WM_KEYUP,   VK_F5, 1 & 3 << 31);		}		if (LaunchInfo->ShowFOV)		{			PostThreadMessage(GetWindowThreadProcessId(hwnd, NULL), WM_KEYDOWN, VK_F10, 1);			PostThreadMessage(GetWindowThreadProcessId(hwnd, NULL), WM_KEYUP,   VK_F10, 1 & 3 << 31);		}		return FALSE;	}		return TRUE;}// < code snipped setting up for this >			if (!CreateProcess(app, NULL, NULL, NULL, FALSE, 0, NULL, Path, &sInfo, &pInfo))				return FALSE;			WaitForInputIdle(pInfo.hProcess, 3000);			ShowWindow(hwnd, SW_MINIMIZE);			ShowWindow(hwnd, SW_HIDE);					EnumThreadWindows(pInfo.dwThreadId, EnumWndProc, (LPARAM)LaunchInfo);// < more code snipped that waits for the process to terminate or a time limit to expire, and then Killing the process 




P.S. Kevin, if you want the source send me an e-mail and I will send it your way .

[edited by - slepyii on August 5, 2003 12:45:26 AM]
Just a quick question. How does the launch pad detect the bot version number? Or better yet how do i assign a version number to my bot that can be read by your app?

-J
Also I don''t know if its possible, but it would be good if you could detect when the match ends before the time is up so you can restart. Its no big deal, it just means I have to either wait for the timer i set in the launch pad to end or close it myself.

Other than that its really useful!

-J

This topic is closed to new replies.

Advertisement