Enchanted Forest - 1micha.elok - 05-14-2024
ENCHANTED FOREST
Explore the enchanted forest with your own character, Barbarian or Knight.
And rearrange the forest as you like.
UPDATE Enchanted Forest v3
click each image to zoom in
1. Introduction Scene
2. Reset your character position
3. Closing Credits Scene
Code: '==========================================================================
'THE ENCHANTED FOREST v.3
'Explore the enchanted forest with your own character, Barbarian or Knight.
'And rearrange the forest as you like.
'
'Need to be improved :
'- Position of the character relative to the objects
'- Collision detection between the character and the objects
'- Boundary of the screen
'
'Acknowledgment
's3d library - by Marcus
'KayKit - Adventurers by Kay Lousberg
' https://kaylousberg.itch.io/kaykit-adventurers?download
'Trees Asset Pack by Aumarka
' https://mark-auman.itch.io/low-poly-trees-asset-pack
'==========================================================================
'----------------
' INITIALIZATION
'----------------
'#win32
include "s3d.n7"; S3D_SetView(primary, rad(45), 0.1, 50)
include "data/s3d_addon.n7"
set window "The Enchanted Forest",1000,600,false
set redraw off
randomize clock()
'color definition
white = [255,255,255]
black = [40,42,54]
gray = [200,200,200]
red = [255,0,0]
'characters
character = []
character[0] = []
character[1] = []
character[0].model = S3D_LoadMesh("data/Barbarian.obj", 0.7,-0.7,0.7, false)
character[1].model = S3D_LoadMesh("data/Knight.obj", 0.7,-0.7,0.7, false)
character[0].name = "Barbarian"
character[1].name = "Knight"
character.rotate = 0
character.rotype = 2
character.x = 3.8
character.y = 2.8
character.z = 7
'objects
object = []
object.number = 5
object.rotate = 0
object.rotype = 2
for j = 1 to object.number
object[j] = []
object[j].model = S3D_LoadMesh("data/Tree_Bare.obj", 0.01,-0.01,0.01, false)
object[j].x = rnd(-5,2) ; object[j].y = rnd(1,2) ; object[j].z = rnd(5,15)
next
'------------
' DISCLAIMER
'------------
set color black; cls; set color white; set caret 50,50; set font 0
wln "DISCLAIMER"
wln
wln "This tiny game is a work of fiction."
wln "It is for eductional purpose only. "
wln "It is as a proof of 3D game concept using s3d library."
wln "It is not intended for commercial use and not for sale"
wln "No person or entity associated with this game received payment"
wln "or anything of value, or entered into any agreement,"
wln "in connection with any game assets used in this game."
wln
wln "All trademarks and game assets are the property of their respective owners."
wln "While every effort is made to acknowledge their works,"
wln "some of the game assets used in in this tiny game may not have"
wln "clear name of the artists/author/creator/developer to be referred with."
wln "It may not include all relevant facts or the most up-to-date information."
wln
wln "Names, characters, places, events and incidents"
wln "are either the products of the author’s imagination"
wln "or used in a fictitious manner."
wln "Any resemblance to actual persons,"
wln "living or dead, or actual events is purely coincidental."
wln
wln "Press ENTER to continue"
redraw
do; wait 1; until keydown(KEY_RETURN,true)
'--------------
' INTRODUCTION
'--------------
i = 0
character.x = 0
character.y = 0
character.z = 0
character.rotate = 200
do
set color black; cls; set color white; S3D_Clear()
'choose your character
if keydown(KEY_C,true) then
i = (i+1)%2
endif
'character.rotate -90=West, 90=East, 0=North, 180=South
if keydown(KEY_LEFT) then
character.rotate = (character.rotate+10)%360
elseif keydown(KEY_RIGHT) then
character.rotate = (character.rotate-10)%360
endif
S3D_Translate(0, 1, 3)
S3D_Draw(character.x,character.y,character.z,character.rotype,character.rotate,character[i].model)
'information
set color white; set caret 10,10
wln "===================="
wln "INTRODUCTION"
wln character[i].name
wln "===================="
wln
wln "Instructions :"
wln "LEFT, RIGHT to rotate your character"
wln "C to change your character"
wln "ESCAPE to quit this introduction"
redraw
fwait 10
until keydown(KEY_ESCAPE,true)
'-----------
' MAIN LOOP
'-----------
i = 0; j=1
character.x = 2
character.y = 2
character.z = 5
character.rotate = 210
do
set color black; cls; set color white; S3D_Clear()
'choose your character
if keydown(KEY_C,true) then
i = (i+1)%2
endif
'randomize objects
if keydown(KEY_R,true) then
for j = 1 to object.number
object[j] = []
object[j].model = S3D_LoadMesh("data/Tree_Bare.obj", 0.01,-0.01,0.01, false)
object[j].x = rnd(-5,2) ; object[j].y = rnd(0,2)+1 ; object[j].z = rnd(5,15)
next
endif
'show up your character if he is out of screen
if keydown(KEY_U,true) then
character.x = 2
character.y = 2
character.z = 5
character.rotate = 210
endif
'character.rotate -90=West, 90=East, 0=North, 180=South
if keydown(KEY_LEFT,true) then
character.rotate = (character.rotate+30)%360
elseif keydown(KEY_RIGHT,true) then
character.rotate = (character.rotate-30)%360
endif
if keydown(KEY_UP,true) then
if character.rotate = 0 then
character.z = character.z + 0.1
elseif character.rotate = 90 then
character.x = character.x + 0.1
elseif character.rotate = 180 then
character.z = character.z - 0.1
elseif character.rotate = 270 then
character.x = character.x - 0.1
elseif character.rotate > 0 and character.rotate < 90 then
character.x = character.x + 1.2*cos(rad(character.rotate))
character.z = character.z + 1.2*sin(rad(character.rotate))
elseif character.rotate > 90 and character.rotate < 180 then
character.x = character.x - 1.2*cos(rad(character.rotate))
character.z = character.z - 1.2*sin(rad(character.rotate))
elseif character.rotate > 180 and character.rotate < 270 then
character.x = character.x + 1.2*cos(rad(character.rotate))
character.z = character.z + 1.2*sin(rad(character.rotate))
elseif character.rotate > 270 and character.rotate < 360 then
character.x = character.x - 1.2*cos(rad(character.rotate))
character.z = character.z - 1.2*sin(rad(character.rotate))
endif
'boundary
if character.z > 20 then character.z = character.z - 0.5
if character.z < 2.8 then character.z = character.z + 0.5
endif
'object animation
object.rotate = object.rotate + 0.2
'lines
set color gray ; cx = width(primary)/2 ; cy = height(primary)/2
for a = 1 to 50 step 0.15 draw line 0,cy+pow(a,7),cx*2,cy+pow(a,7)
for b = -1000 to cx*2+1000 step 230 draw line cx,cy/2,b,cy*2
set color black; draw rect 0,0,cx*2,cy+2,1
'Draw Objects and Character
for j = 1 to object.number
S3D_Draw(object[j].x,object[j].y,object[j].z,object.rotype,object.rotate,object[j].model)
set color white
set caret width(primary)-100,30; wln "Objects";wln "Coordinates"
set caret width(primary)-100,60+j*20
wln j+":"+object[j].x+","+object[j].y+","+object[j].z
next
S3D_Draw(character.x,character.y,character.z,character.rotype,character.rotate,character[i].model)
'information
set color white; set caret 10,10
wln "===================="
wln "The Enchanted Forest"
wln "===================="
wln
wln "Instructions :"
wln "ESC to quit"
wln "R to re-arrange objects"
wln "LEFT, RIGHT to rotate your character"
wln "UP to move forward"
wln "C to change your character"
wln "U to reset your position"
wln
set caret width(primary)-300,30
wln "You are a "+character[i].name
wln
wln "Your Coordinates"
wln int(character.x)+","+int(character.y)+","+int(character.z)
wln
wln "Compass "+character.rotate+ " degrees"
x1 = width(primary)-240
y1 = 190
x2 = x1 + 50*cos(rad(270+character.rotate))
y2 = y1 + 50*sin(rad(270+character.rotate))
draw ellipse x1,y1,50,50
draw line x1,y1,x2,y2
redraw
wait 1
until keydown(KEY_ESCAPE,true)
'-----------------
' Closing Credits
'-----------------
words = []
words[1] = "CLOSING CREDITS"
words[2] = ""
words[3] = ""
words[4] = "A special thanks to Marcus, the creator of Naalaa"
words[5] = "for his dedication, support and encouragement"
words[6] = "in the making of this tiny game."
words[7] = ""
words[8] = "I really appreciate his stepping in"
words[9] = "to develop the fantastic s3d library"
words[10] = "I know he had to put in extra hours"
words[11] = "to catch up on his own work, so thank you very much."
words[12] = "Your expertise was vital for this tiny game."
words[13] = ""
words[14] = "Heartfelt thanks to all the talented artists"
words[15] = "who created the amazing 3D game assets"
words[16] = "I couldn't have made it without them"
words[17] = ""
words[18] = ""
words[19] = ""
words[20] = "s3d library - by Marcus"
words[21] = ""
words[22] = "KayKit - Adventurers by Kay Lousberg"
words[23] = " https://kaylousberg.itch.io/kaykit-adventurers?download"
words[24] = ""
words[25] = "Trees Asset Pack by Aumarka"
words[26] = " https://mark-auman.itch.io/low-poly-trees-asset-pack"
'text animation of the closing credits
for i = height(primary)-30 to 30
set color black; cls; set color white
set caret width(primary)/2,i
for j = 1 to 26
center words[j]
next
redraw
fwait 40
next
do; wait 1; until keydown(KEY_RETURN,true)
RE: Enchanted Forest - johnno56 - 05-14-2024
Rotating trees? Of course there are... after all it's an "Enchanted" forest... lol
Very nice demo... Can I assume that the squirrels will be using either roller skates or skateboards? or the deer will get around on Quad bikes? lol Nah... Kidding... Certainly has potential... Looking forward to the next update...
Nice job!
RE: Enchanted Forest - 1micha.elok - 05-14-2024
(05-14-2024, 06:22 AM)johnno56 Wrote: Rotating trees? Of course there are... after all it's an "Enchanted" forest... lol
Very nice demo... Can I assume that the squirrels will be using either roller skates or skateboards? or the deer will get around on Quad bikes? lol Nah... Kidding... Certainly has potential... Looking forward to the next update...
Nice job!
squirrels on roller skates ... interesting idea .... lol.... I have to learn how to use 3D modelling software, rigged animation etc to do it .... lol...
The Enchanted Forest was inspired by the story of Hansel and Gretel who were in a forest and met with a witch who lived in a bread, cake and sugar house....lol .....
RE: Enchanted Forest - johnno56 - 05-14-2024
... these days, the witch, will have greater success in attracting children, if she also provided free WiFi... lol
RE: Enchanted Forest - Marcus - 05-14-2024
Looks interesting! This weekend I'll try this one and your previous game. I've been super busy the last weeks. My woman turned 50, we got married and then we had a short honeymoon. No time for n7 Still, a first version of that 3d thing I've been working on is almost ready for release (a map editor and a library).
RE: Enchanted Forest - johnno56 - 05-14-2024
Married? Congratulations! One friendly tip, from someone who has been married now for almost 46 years, the best way to remember your wife's birthday, is to forget it once! (throw in Anniversary and the date of your first date) Congrats!!
RE: Enchanted Forest - 1micha.elok - 05-15-2024
The perfect way to live a life with full enjoyment :
- get married,
- have some pets ( I love dogs and hamsters )
- have positive hobbies or choose one kind of extreme sports such E-Sports ....lol....
- stay in an Enchanted Forest .... lol ....
Shrek and Fiona ( The Movie ) and their fairy tale friends lived in an enchanted forest too, a magical land, ...happily ever after ...
should I add these characters into my game ? .... lol .....
RE: Enchanted Forest - johnno56 - 05-15-2024
... add Shrek and Fiona to the game? You probably could but be careful of copyrights... Moo Ha Ha Ha...
RE: Enchanted Forest - 1micha.elok - 05-16-2024
Enchanted Forest was updated to v3
The new version was attached on the first post above (Page 1).
|