| Project Showcase Feel free to post any screenshots/demos of any WIP or finished projects you have made. |
|
Honoured
Posts: 445
Join Date: Oct 2005
|
30-Sep-2006, 21:18
Already posted my comments at PGD forums...
Greetings,
Dirk
|
|
|
|
|
Honoured
Posts: 692
Join Date: Oct 2005
Location: world.usa.find('East Coast');
|
30-Sep-2006, 21:41
Just a note, but there is a new version uploaded that may repair the startup fatal errors. I just found something I did that was really stupid.
|
|
|
|
|
Honoured
Posts: 692
Join Date: Oct 2005
Location: world.usa.find('East Coast');
|
Final Release of JDA, and project close. -
09-Jan-2007, 23:11
This is the final, full release of Just Die Already. Full sources are included excepting that of the images, which doesn't matter anyhow. Remember it is MPL licensed and you can read the full license text here: http://www.mozilla.org/MPL/
I have made no changes, but have decided that this project is about as good as I can make it. And that it's time for a better idea in the first place.
You may download the files in either a 7Zip archive (fixed), or as a standard Zip archive. And for those who want to know how I did my screen transitions, here's the excerpt of code:
Code:
(*******************************************************************************
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.
The Original Code is AsphyreIntroduction.pas.
The Initial Developer of the Original Code is Robert Kosek.
Portions created by Robert Kosek are Copyright (C) Sept 2006
by Robert Kosek. All Rights Reserved.
Contributor(s): N/A.
*******************************************************************************)
unit AsphyreIntroduction;
interface
uses AsphyreCanvas, AsphyreImages, AsphyreDef, Math;
type
TCustomIntro = class
private
fDrawNum,fLifetime, fImageIndex, fPos: integer;
fDrawFx: cardinal;
fAlpha: byte;
public
constructor Create(show_length, image_index, draw_id: integer; draw_fx: cardinal);
procedure Process; virtual;
end;
TIntroManager = class
strict private
fIntros: array of TCustomIntro;
fCanvas: TAsphyreCanvas;
fImages: TAsphyreImages;
fScreen: TPoint4;
fCurrentIntro,fIntroCount: Integer;
fDone: Boolean;
public
property Finished: Boolean read fDone;
procedure AppendIntro(i: TCustomIntro);
procedure Update;
procedure Draw;
constructor Create(screensize: TPoint2; Canvas: TAsphyreCanvas; Images: TAsphyreImages);
destructor Destroy; override;
end;
TOverlayIntro = class(TCustomIntro)
public
procedure Process; override;
end;
implementation
{ TIntroManager }
procedure TIntroManager.AppendIntro(i: TCustomIntro);
var p: integer;
begin
p := length(fIntros);
SetLength(fIntros,p+1);
fIntros[p] := i;
end;
constructor TIntroManager.Create(screensize: TPoint2; Canvas: TAsphyreCanvas;
Images: TAsphyreImages);
begin
fCanvas := Canvas;
fImages := Images;
fScreen := pBounds4(0,0,Round(screensize.x),Round(screensize.y));
fCurrentIntro := 0;
fIntroCount := 0;
end;
destructor TIntroManager.Destroy;
var
Item: TCustomIntro;
begin
for Item in fIntros do
Item.Free;
inherited;
end;
procedure TIntroManager.Draw;
var i: integer;
begin
for i := 0 to Length(fIntros) - 1 do
if fIntros[i].fDrawNum = fCurrentIntro then
fCanvas.TexMap(fImages[fIntros[i].fImageIndex],fScreen,cAlpha4(fIntros[i].fAlpha),tcNull,fIntros[i].fdrawfx);
end;
procedure TIntroManager.Update;
var i,l: integer;
begin
if fDone then
Exit;
l := -1;
if fIntroCount = 0 then
for I := 0 to Length(fIntros) - 1 do
if fIntros[i].fDrawNum <> l then begin
l := fIntros[i].fDrawNum;
fIntroCount := fIntroCount+1;
end;
if fCurrentIntro >= fIntroCount then begin
fDone := True;
Exit;
end;
for i := 0 to Length(fIntros) - 1 do
if fIntros[i].fDrawNum = fCurrentIntro then
if fIntros[i] is TOverlayIntro then
TOverlayIntro(fIntros[i]).Process
else
fIntros[i].Process;
{ Find the first intro in a set. Intro Groups are assumed to have the same
duration... }
for i := 0 to Length(fIntros) - 1 do
if fIntros[i].fDrawNum = fCurrentIntro then
if fIntros[i].fPos >= fIntros[i].fLifetime then begin
fCurrentIntro := fCurrentIntro+1;
Break;
end;
end;
{ TCustomIntro }
constructor TCustomIntro.Create(show_length, image_index, draw_id: integer;
draw_fx: cardinal);
begin
fLifetime := show_length;
fImageIndex := image_index;
fDrawFx := draw_fx;
fDrawNum := draw_id;
fPos := 0;
fAlpha := 0;
end;
procedure TCustomIntro.Process;
var stepsize, stopfade: real;
begin
stepsize := fLifetime / 10;
stopfade := fLifetime - stepsize;
fPos := fPos+1;
if fPos <= stepsize then
fAlpha := min(Trunc((fPos / stepsize) * 255),255)
else if fPos >= stopfade then
fAlpha := max(Trunc((1 - ((fPos - stopfade) / stepsize)) * 255),0);
end;
{ TOverlayIntro }
procedure TOverlayIntro.Process;
var stepsize, stopfade: real;
begin
stepsize := fLifetime / 10;
stopfade := fLifetime - stepsize;
fPos := fPos+1;
if fPos <= stepsize then
fAlpha := min(Trunc((fPos / stepsize) * 255) div 2,255)
else if fPos >= stopfade then
fAlpha := max(Trunc((1 - ((fPos - stopfade) / stepsize)) * 255) div 2,0);
end;
end.
Last edited by The Wicked Flea; 15-Jan-2007 at 01:07.
Reason: Updated archives in case of a missing file.
|
|
|
|
|
Reputable
Posts: 107
Join Date: Jan 2006
Location: Denmark
|
10-Jan-2007, 10:09
How do you play the game?
What controls must be used?
|
|
|
|
|
Honoured
Posts: 692
Join Date: Oct 2005
Location: world.usa.find('East Coast');
|
10-Jan-2007, 13:03
All you do is avoid the missiles which split based upon an internal timer in each of them; you play using the arrow keys. It's okay really, but it's a place to start.  And start I have.
|
|
|
|
|
Developer
Posts: 1,775
Join Date: Oct 2005
Location: Pointer = nil;
|
10-Jan-2007, 15:54
Robert, so what's next?
|
|
|
|
|
Honoured
Posts: 692
Join Date: Oct 2005
Location: world.usa.find('East Coast');
|
10-Jan-2007, 16:14
At this point, I don't know. I am mulling around on a few ideas I have scattered about my brains, and am trying to pick one and develop it. But I most likely will go with one in specific.
Some 8 years back I came up with an idea for what I called "Stratego on Paper", based off the boardgame Stratego of course, but rather was a turn-based strategy game that merely took two people, pencils, and a sheet or ordinary paper. I wrote up a one page rulesheet and created a few units to go along with the rules. You started with a base, formed your facilities (prereqs for specific units), and could build walls, barbed wire, and tank traps all in specific amounts per turn. For instance you could start the airport, which took 3 turns IIRC, on your first turn but side track yourself the next by making some barbed wire or train some basic grunts. Each unit could move a specific distance and fire once or twice depending upon type, lasers crossed the field and so could be great snipers (if you could get the pencil to slide in a straight enough line). To fire or move you'd rest your pencil upright upon the unit, pull back while pushing down lightly, so the pencil slid outwards in the direction you wanted it to go in with some randomness. I thought it was pretty cool and it was amazingly balanced for my first shot.
I think I want to make it with the potential to do it PBEM style. For a game on paper it had remarkable depth and strategy behind it, IMO rivaling games like Tiberian Sun; I just could never get anyone to play with me. It will have less depth in the PC because I couldn't detect exactly where you shot tanks, you could blow treads and guns off tanks so they'd have to return for repairs (assuming they made it  ), but it should still be the same old game I made. I still have the rules and unit sheets around here somewhere...
Heh, think Warhammar 40k for pencil and paper over lunch breaks.  Stow it and go back to work, only to decimate your co-worker the next day! But for that, I'd need art and music.
|
|
|
|
|
Developer
Posts: 1,775
Join Date: Oct 2005
Location: Pointer = nil;
|
10-Jan-2007, 23:56
Robert, seems rather a good idea to me. I would particularly interested in having this game a strong AI, so I could challenge it in some spare time.
Quote:
Originally Posted by The Wicked Flea
I think I want to make it with the potential to do it PBEM style.
|
Why aiming at PBEM and not just simple multiplayer? Turn-based multiplayer games can be very entertaining - we're still playing Alpha Centauri (Alien Crossfire expansion actually) on LAN from time to time here.  Although computer AI isn't one of its strong points.
|
|
|
|
|
Honoured
Posts: 692
Join Date: Oct 2005
Location: world.usa.find('East Coast');
|
11-Jan-2007, 01:57
Because I don't know how to create a server/client setup, and how I would involve the players in a strict sense. Although the more I think of it, the better it would be. Any tips, examples, or articles that would help me? Internet and networked programming is very new to me I'm afraid.
Quote:
|
I would particularly interested in having this game a strong AI, so I could challenge it in some spare time.
|
I'm no wizard at AI, but the principle of the game is very simple: destroy your opponent's base at all costs without losing yours. There's no money, no morale, and no actual playing field aside from the various constructed obstacles. It would take quite a bit of work to make strong AI, but I could at least make it robust right at the beginning.
I'll start a planning thread eventually, outlining what I intend to do and the basis of how the game will operate.
|
|
|
|
|
Developer
Posts: 1,775
Join Date: Oct 2005
Location: Pointer = nil;
|
11-Jan-2007, 02:23
Quote:
Originally Posted by The Wicked Flea
Any tips, examples, or articles that would help me? Internet and networked programming is very new to me I'm afraid.
|
In my own experience, multiplayer programming is more a logical problem rather than technical. Yes, there are several technical limitations: latency and bandwidth, but fortunately, they can't be really solved or avoided, so don't bother.
My suggestion is the following (which is the same thing I did back in 1999, when was starting my multiplayer experiments): at start, try to think how several users will play your game, how their interaction will be. It's easier to do this on paper. Then, try to think on logic of the communication, in terms of packets (at this point, think of them as a bunch of data). Finally, find some development tools that simplify the implementation. The technical part doesn't matter much - you will end up using either TCP/IP or UDP, perhaps embedded into some higher-level component (examples of such high-level components wrapping UDP are TNetCom and TNetExchange in Asphyre).
If you have specific technical questions about multiplayer implementation, don't hesitate to ask, I'll be able to provide you with the relevant links to articles and such.
Quote:
Originally Posted by The Wicked Flea
I'm no wizard at AI, but the principle of the game is very simple: destroy your opponent's base at all costs without losing yours.
|
You'll be surprised how primitive the computer AI is in games. In your case, you will most likely end up with some search algorithm. Nothing fancy - just review all building and movement possibilities, try to give a score to each one of them and select the course of action which maximizes your score. A* and Dijkstra algorithms will be your friends.
|
|
|
|
| Thread Tools |
|
|
| Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
vBulletin® is copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
vBulletin Skin developed by: vBStyles.com

Copyright (c) 2000 - 2008 Afterwarp Development. All rights reserved.
|