Infinite Adventure (Under development)

Are you creating new levels/mods for DOS or did you finish your work? Tell us here!

Moderator: English Moderator Team

User avatar
starwindz
Sultan
Sultan
Posts: 133
Joined: March 8th, 2009, 4:48 pm

Infinite Adventure (Under development)

Postby starwindz » April 9th, 2017, 4:23 pm

Mod information
=================
Mod name: Infinite Adventure
Author: starwindz
Current version: 0.1
Description: Random Level Generation Mod inspired by Spelunky
Download link: https://drive.google.com/file/d/0Bw07W8 ... sp=sharing


Version history of Infinite Adventure
=====================================
Below you find a list with the added features, changes and fixes for each version.

Version 0.1 (2017.04.09)
-----------------------------
- Initial release of prototype


* End of document
Attachments
01_main_1.png
01_main_2.png
02_game_1.png
02_game_2.png
02_game_3.png

David
The Prince of Persia
The Prince of Persia
Posts: 1340
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: Infinite Adventure (Under development)

Postby David » April 9th, 2017, 6:06 pm

I see you included the source. (written in Lazarus)

salvadorc17
Calif
Calif
Posts: 465
Joined: August 27th, 2011, 2:04 am

Re: Infinite Adventure (Under development)

Postby salvadorc17 » April 9th, 2017, 10:18 pm

Really interesting, but a usage guide will be cool, how to change mod?, or how to create new complete level?

User avatar
starwindz
Sultan
Sultan
Posts: 133
Joined: March 8th, 2009, 4:48 pm

Re: Infinite Adventure (Under development)

Postby starwindz » April 10th, 2017, 2:32 am

David wrote:I see you included the source. (written in Lazarus)

Yes, I have included the source code written in Lazarus/Freepascal. The source code of the development will be fully opened for improvement of this mod. :)

User avatar
starwindz
Sultan
Sultan
Posts: 133
Joined: March 8th, 2009, 4:48 pm

Re: Infinite Adventure (Under development)

Postby starwindz » April 10th, 2017, 2:39 am

salvadorc17 wrote:a usage guide will be cool

Yes, a usage guide will be included to next or final version.

salvadorc17 wrote:how to change mod?

Generated levels.dat is saved to 'pop1' folder. You can change it using Roomshaker or Apoplexy.

salvadorc17 wrote:how to create new complete level?

Current version is at primitive stage. Generating complete level is not yet supported.

User avatar
starwindz
Sultan
Sultan
Posts: 133
Joined: March 8th, 2009, 4:48 pm

Re: Infinite Adventure (Under development)

Postby starwindz » April 12th, 2017, 1:17 pm

Currently I am making the room layout generator such as attached screenshots. The original source code is written by doppelganger, so I am converting his GameMaker code to Lazarus/Freepascal code. See his article, viewtopic.php?f=73&t=3383#p18727 Thank you, doppelganger. :)

Code: Select all

*** This code is written by doppelganger ***
// creates the level structure

for(i = 1; i <= 47; i+=1)
{
    for(j = 1; j <= 47; j+=1)
    {
        roomAt[i,j] = 0;
    }
}
for(i = 1; i <= 24; i+=1) // init rooms
{
    room_entrance_tile[i] = 0;
    room_entrance_dir[i] = TILE;
    room_exit_tile[i] = 0;
    room_exit_dir[i] = TILE;
    room_is_junct[i] = false;
    room_junct_tile[1,i] = 0;
    room_junct_dir[1,i] = TILE;
    room_junct_tile[2,i] = 0;
    room_junct_dir[2,i] = TILE;
    room_for[i] = NONE;
    for(j = 1; j <= 30; j+=1)
    {
        tileAt[i,j] = "E00";
    }
    room_x[i] = 0;
    room_y[i] = 0;
    has_guard[i] = false;
    guard_at[i] = 0;
    guard_skill[i] = 0;
    guard_palette[i] = 0;
}

for(i = 0; i <= 255; i+=1) // init events
{
    event_room[i] = 0;
    event_tile[i] = 0;
    event_trigger_next[i] = false;
}


currRoom = 1;
startRoom = 1;
endRoom = 0;
backToJunct = false;

roomsLeft = 24;
roomPrev = 0;
roomJunct = 0;
isJunction = false;
nextToUse = 2;
currRoom = 1
px = 24;
py = 24;
tpx = 24;
tpy = 24;
jpx = -1;
jpy = -1;

roomAt[24,24] = 1;
room_for[1] = PATH;

for(roomsLeft = 24; roomsLeft > 0; roomsLeft -= 0)
{
    if(!(roomAt[px,py] == startRoom))
    {
        if(roomAt[px,py] == 0)
        {
            get_room_entrance();
            room_for[currRoom] = PATH;
        }
    }
    roomsLeft -= 1;
    room_x[currRoom] = px;
    room_y[currRoom] = py;
   
    if((!(isJunction)) && ((rand(1,8) == 8) || ((roomsLeft == 2) && (rand(1,2) == 1))) && (!(room_is_junct[currRoom] == dual)) && (roomsLeft > 1) && (get_two_paths()))
    {
        if(room_is_junct[currRoom] == single)
        {
            room_is_junct[currRoom] = dual;
        }
        else
        {
            room_is_junct[currRoom] = single;
        }
        roomJunct = currRoom;
        jpx = px;
        jpy = py;
        isJunction = true;
        room_for[currRoom] = JUNCT;
        choose_junct_dir();
        if(triedall)
        {
            break;
        }
    }
    else if((isJunction) && (((rand(1,3) == 1)) || (roomsLeft == 0)))
    {
        room_exit_dir[currRoom] = room_entrance_dir[currRoom];
        room_for[currRoom] = SWITCH;
        px = jpx;
        py = jpy;
        isJunction = false;
        nextToUse = currRoom + 1;
        currRoom = roomJunct;
        roomsLeft += 1;
        continue;
    }
    else
    {
        choose_exit_dir();
        if(triedall)
        {
            if(isJunction)
            {
                room_exit_dir[currRoom] = room_entrance_dir[currRoom];
                room_for[currRoom] = SWITCH;
                px = jpx;
                py = jpy;
                isJunction = false;
                nextToUse = currRoom + 1;
                currRoom = roomJunct;
                roomsLeft += 1;
                continue;
            }
            else
            {
                break;
            }
        }
    }
    currRoom = nextToUse;
    nextToUse += 1;
}

if(triedall)
{
    endRoom = currRoom;
}
else
{
    endRoom = currRoom - 1;
}

if(room_for[endRoom] == SWITCH)
{
    endRoom = roomJunct;
}

px = 1;
py = 1;
for(i = 1; i <= 47; i+=1)
{
    for(j = 1; j <= 47; j+=1)
    {
        if(roomAt[j,i] > 0)
        {
            if(j > 1)
            {
                room_to_left[roomAt[j,i]] = roomAt[j-1,i];
            }
            if(j < 47)
            {
                room_to_right[roomAt[j,i]] = roomAt[j+1,i];
            }
            if(i > 1)
            {
                room_to_top[roomAt[j,i]] = roomAt[j,i-1];
            }
            if(i < 47)
            {
                room_to_bottom[roomAt[j,i]] = roomAt[j,i+1];
            }
        }
    }
}
Attachments
pop1_algh.txt
(7.24 KiB) Downloaded 3 times
sample_01.png
sample_01.png (4.71 KiB) Viewed 346 times
sample_02.png
sample_02.png (6.33 KiB) Viewed 346 times
sample_03.png
sample_03.png (3.82 KiB) Viewed 346 times
sample_04.png
sample_04.png (5.67 KiB) Viewed 346 times

salvadorc17
Calif
Calif
Posts: 465
Joined: August 27th, 2011, 2:04 am

Re: Infinite Adventure (Under development)

Postby salvadorc17 » April 12th, 2017, 9:04 pm

Cool and weird, but will be better to see those in game, the "Juction" names what does mean?

User avatar
starwindz
Sultan
Sultan
Posts: 133
Joined: March 8th, 2009, 4:48 pm

Re: Infinite Adventure (Under development)

Postby starwindz » April 13th, 2017, 3:59 pm

salvadorc17 wrote:Cool and weird, but will be better to see those in game, the "Juction" names what does mean?

"Junction room" has branched path such as the attached screenshots.
Attachments
new_sample_01.png
new_sample_01.png (9.26 KiB) Viewed 324 times
new_sample_02.png
new_sample_02.png (9.19 KiB) Viewed 324 times

salvadorc17
Calif
Calif
Posts: 465
Joined: August 27th, 2011, 2:04 am

Re: Infinite Adventure (Under development)

Postby salvadorc17 » April 15th, 2017, 9:30 pm

starwindz wrote:"Junction room" has branched path such as the attached screenshots.


Ok i get it so, the rooms are self made before level is random assined, about drawing algoriths you said, you should try to ask David, his the one that does know all snes level editing stuff.

User avatar
starwindz
Sultan
Sultan
Posts: 133
Joined: March 8th, 2009, 4:48 pm

Re: Infinite Adventure (Under development)

Postby starwindz » April 17th, 2017, 5:29 pm

New development screenshots. Random room layout code is now completed. (Currently not playable)
Attachments
00.png
01.png
02.png
03.png

User avatar
starwindz
Sultan
Sultan
Posts: 133
Joined: March 8th, 2009, 4:48 pm

Re: Infinite Adventure (Under development)

Postby starwindz » April 17th, 2017, 7:00 pm

A screenshot of development environment. I am using Lazarus/Freepascal for making this program and mod. Development of random level generation is not easy so any idea and comment are welcome.
Attachments
04.png

User avatar
starwindz
Sultan
Sultan
Posts: 133
Joined: March 8th, 2009, 4:48 pm

Re: Infinite Adventure (Under development)

Postby starwindz » April 18th, 2017, 5:23 am

Very simple randomly generated levels are shown as the attached screenshot. Still very early stage of development...
Attachments
a00.PNG
a01.PNG
43486.PNG
09.PNG
08.PNG
07.PNG

salvadorc17
Calif
Calif
Posts: 465
Joined: August 27th, 2011, 2:04 am

Re: Infinite Adventure (Under development)

Postby salvadorc17 » April 18th, 2017, 9:40 pm

Why to use roomshaker as default for building levels?, any cross compatibility related? Would be better standarize it for apoplexy..

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 2955
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: Infinite Adventure (Under development)

Postby Norbert » April 19th, 2017, 3:52 am

salvadorc17 wrote:Why to use roomshaker as default for building levels?, any cross compatibility related? Would be better standarize it for apoplexy..


I think starwindz is just showing some examples of what generated levels look like.
The levels can be opened with any PoP1 for DOS level editor.
And RoomShaker has a better level preview, with more than just room numbers.

User avatar
starwindz
Sultan
Sultan
Posts: 133
Joined: March 8th, 2009, 4:48 pm

Re: Infinite Adventure (Under development)

Postby starwindz » April 19th, 2017, 4:50 am

Norbert wrote:
salvadorc17 wrote:Why to use roomshaker as default for building levels?, any cross compatibility related? Would be better standarize it for apoplexy..


I think starwindz is just showing some examples of what generated levels look like.
The levels can be opened with any PoP1 for DOS level editor.
And RoomShaker has a better level preview, with more than just room numbers.

That is what I intend. I use both of them. Apoplexy is the most advanced level editor and roomshaker has a simple and nice preview feature. :)


Return to “New Levels and Mods For DOS”

Who is online

Users browsing this forum: No registered users and 2 guests