Author Topic: world map  (Read 4251 times)

0 Members and 1 Guest are viewing this topic.

misirlou

  • Guest
world map
« on: December 13, 2006, 11:02:00 am »
Hey, me and my friend Stan are making a BASIC rpg for the calc. Any suggestions for the fastest and shortest(preferably in that order) way to make the map system (including walking around in it)?

Offline Halifax

  • LV9 Veteran (Next: 1337)
  • *********
  • Posts: 1334
  • Rating: +2/-1
    • View Profile
    • TI-Freakware
world map
« Reply #1 on: December 13, 2006, 03:20:00 pm »
maybe you could be a little more specific about what you want. It really depends because some engines will perform fast but poorly with animations and some will be good with animations and maybe bad on moving. So like there are tradeoffs for stuff. So what are you going to add after you get the engine?
There are 10 types of people in this world-- those that can read binary, and those that can't.

tenniskid493

  • Guest
world map
« Reply #2 on: December 13, 2006, 05:27:00 pm »
xLIB would be helpful to you, but is also semi-advanced.  If this is your first game, i would suggest staying with ASCII graphics on your homescreen.

here's a link to xLIB if you want to try it out:
http://www.ticalc.org/archives/files/fileinfo/359/35907.html

misirlou

  • Guest
world map
« Reply #3 on: December 14, 2006, 08:01:00 am »
I'm just using the BASIC that the TI-84 comes with, plus the hidden characters and some assembly programs to archive and unarchive subroutines. I was planning on the world to be made up of all characters, because its simple. I had a really simple one set up on the homescreen thats just made up of 9 screens worth of map that remains stationary while you move(screen doesnt follow you), but because i havent been programming too long i dont think its the most efficient. The only things i need to be able to do are random encounters, interacting w/ characters, walking of course, and a menu when you press 2nd. I can do all that, im just looking for suggestions on the best way of doing it. I'll try out xLIB.

Offline Halifax

  • LV9 Veteran (Next: 1337)
  • *********
  • Posts: 1334
  • Rating: +2/-1
    • View Profile
    • TI-Freakware
world map
« Reply #4 on: December 16, 2006, 09:47:00 am »
yea necro or you could store the whole world into a string for smooth four way scrolling each way zelda style which is very easy to program
There are 10 types of people in this world-- those that can read binary, and those that can't.

misirlou

  • Guest
world map
« Reply #5 on: December 17, 2006, 08:12:00 am »
ty necro :)smile.gif  That works well. The way I had it stored the entire map into one string.

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
world map
« Reply #6 on: December 17, 2006, 08:26:00 am »
how big is the map?

Offline Halifax

  • LV9 Veteran (Next: 1337)
  • *********
  • Posts: 1334
  • Rating: +2/-1
    • View Profile
    • TI-Freakware
world map
« Reply #7 on: December 17, 2006, 02:00:00 pm »
Umm necro its not that hard I made my four way scrolling engine with that in like 10 mins

If you want some code misirlou then just say so and I will post some four way scolling code with hit detection also and explain it in-depth

Another bonus to doing it my way is it makes everything smooth with map loading so everything seems like an ASCII assembly game. Necro's way shows the loading and takes 15 secs approx. to load than storing the world into a string and switching worlds into strings. If you think about it. Say you wanted to stream 6 worlds all 40x40 then you would store that into a string which would only be 1600 bytes. But with 6 worlds it would be 9600 bytes in all. So now when you stream them so there is no loading times then you just have the player move through one world and when he reaches the end then store the other world into the string and stuff like that. It's actually a pretty easy concept. Has anyone ever streamed worlds before? because I have thought about doing it cause then it an endless 240x240 world for the player to explore which would really add to gameplay. I would make some dev tools though because it would be unwieldy to hardcode the levels o.oblink.gif
There are 10 types of people in this world-- those that can read binary, and those that can't.

misirlou

  • Guest
world map
« Reply #8 on: December 18, 2006, 10:30:00 am »
I'm not sure how big it will be yet. I would say it'll be pretty big, but that would tell you nothing. i tried 4-way scrolling, but my way made movement pretty slow. Can you post your code for me halifax w/ the hit detection? you dont need to really get into detail w/ explanation. I'm pretty sure i can understand it if i read it.

Offline Halifax

  • LV9 Veteran (Next: 1337)
  • *********
  • Posts: 1334
  • Rating: +2/-1
    • View Profile
    • TI-Freakware
world map
« Reply #9 on: December 18, 2006, 03:06:00 pm »
Hmm sorry I don't have four way scrolling but I do have vertical scrolling with horizontal map shifting. srry it still looks good.

(main program)
c1-->
CODE
ec1
1->B:9->C:1->A:1->L:->M
While 1
Output(1,1,sub(Str1,A,128
Output(B,C,"X
Repeat K
fetkey->K
16B+C-16+(A-1)->D
If K=31:Then
prgmRECHK:1->A
End
16B+C-16+(A-1)->D
If K=34 or (K>=24 and K<=26)
Output(B,C,"
B+(K=34 and sub(Str1,D+16(D<145),1)=" ")-(K=25 and sub(Str1,D-16(D>16),1)=" "->B
C+(K=26 and sub(Str1,D+1,1)=" ")-(K=24 and sub(Str1,D-1,1)=" "->C
If B=7 and A!=S:Then
A+16->A:B-1->B
End
If B=2 and A!=T:Then
A-16->A:B+1->B
End
If C=16:Then
2-C
L+1->L
prgmRECHG
End
If C=1 and L>1:Then
15->C
L-1->L
prgmRECHG
End
End
c2
ec2

Now for prgmRECHG
c1
-->
CODE
ec1
If L=1:Then
33->S:1->T
"9x16 MAP"->Str1
End
If L=2:Then
33->S:1->T
"9x16 MAP"->Str1
End
c2
ec2

So basically in that Level 1 is a vertical scrolling map and when you reach the edge it changes to map 2 so basically L=1 for map 1 and L=2 for map 2 and so on. Now for RECHK
c1
-->
CODE
ec1
If L=1:Then
If D=1:Then
33->S:1->T
"map 1"Str1
If D>51 and D<54:Then
1->S:1->T:101->M
"8x16 dungeon"->Str1
End
If D=123:Then
1->S:1->T:101->M
"8x16 dungeon"->Str1
End
c2
ec2

Ok basically for that program put all the places where if someone pushes alpha they will be able to enter a room. You don't need the program though.

This stuff maybe complicated but don't worry about it because actually I am making a Psugen SDK for RPG's and it will do all this stuff for you. But anyways if you understand that good job and I hope you put it to use. You can use RECHK for NPC checking to but I didnt show that.
There are 10 types of people in this world-- those that can read binary, and those that can't.

misirlou

  • Guest
world map
« Reply #10 on: December 18, 2006, 03:56:00 pm »
ty, in my way the hit detection was in its own if statement so ill see if this speeds it up at all. If there isnt a faster 4-way scrolling, though, I'll just have it switch through several 8x16 maps for simplicity and speed. O and i noticed at the beginning you had "->M:While 1" how come this works? since a zero was the last thing you input, why doesnt it give a zero at the while command?

Offline Halifax

  • LV9 Veteran (Next: 1337)
  • *********
  • Posts: 1334
  • Rating: +2/-1
    • View Profile
    • TI-Freakware
world map
« Reply #11 on: December 19, 2006, 11:48:00 am »
M has nothing to do with the while command and also four way scrolling is complicated. The vertical scrolling isn't but horizontal is. Think about it this is your string

"//11//11//11//11
 11//11//11//11//"->Str1

To scroll horizonatally you will have to cut off every row. Which means that you would have to use a sub( for every row you have. So if you have 10 rows you need 10 subs and that will slow it down cause it has to go like this
/11//11//11//11
1//11//11//11//

to ...
11//11//11//11
//11//11//11//

and so on...

so I haven't found a good way to do it but maybe other people have

also another thing is putting it in its own statement will just slow it down. I have tested this through 100 iterations and If function has been proven to take 5 more seconds to execute overall so your losing speed trust me
There are 10 types of people in this world-- those that can read binary, and those that can't.

misirlou

  • Guest
world map
« Reply #12 on: December 21, 2006, 04:40:00 pm »
I've looked at xLIB, and I think I'm going to use it because the game will look 500% better. Thank you for your help though. I didnt think to use the sub( command in a binary test instead of a separate if statement.

misirlou

  • Guest
world map
« Reply #13 on: January 04, 2007, 02:24:00 pm »
ok, im using xlib, and its a great program, but im having a problem. This seems to me like it should be really simple and i feel stupid, but is there a way to get the tile to replace itself after the character moves off of it without recalling the whole map? o wait. nvm hahaha as i was typing it i thought of how to do it. To keep this post w/ a purpose, often when I am looking at threads, the page messes up and all the text is squished to the side, and the footer overlaps it. why is that happening? it had never happened before a few days ago.

Zeromus

  • Guest
world map
« Reply #14 on: January 30, 2007, 10:14:00 am »
4 way scrolling? Homescreen? ASCII?

http://tifreakware.net/tutorials/83p/b/cdi/l1.htm is one of the fastest and easiest ways I know how