27 May 2010, 14:04 | #321 | ||||
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,323
|
Quote:
In which order are units taken ? Quote:
Yes, no reason to do that Quote:
Could be good idea. But perhaps you just don't like exploring ? I've seen this already But then how can i get some ? Yes but i'd prefer having a generic bitblt routine - like my actual one. It's all about including it in my system frame, then use it in the game - and potentially in many other programs later. Quote:
Let me explain. Your weak char can just move and the monster will use all its movement points (or whatever) to pursue him. Meanwhile, the strong character can attack the monster unhindered. Here i assume your weak character isn't in close contact with the monster. At the end : dead monster, having done zero damage. Shame on him ! On the other hand, if both characters are doing close fight, then there is nothing such as "closest to the monster" : they're just next to it and the monster would then select a random target, thus endangering the weakest one. Of course the monster would change target at random, among all characters that can be reached. Your example also means that the monster has the ability to identify a weak character. This isn't obvious. Creatures such as zombies certainly aren't that smart and even intelligent monsters may be fooled anyway. Furthermore, making monsters vicious like that will mean that the player would more often have death striking his characters and this is no good for fun. |
||||
27 May 2010, 14:40 | #322 | ||||
Computer Nerd
Join Date: Sep 2007
Location: Rotterdam/Netherlands
Age: 47
Posts: 3,751
|
It's a strategic, turn based RPG that's completely battle and character management oriented. One thing that's missing is exploration. So yeah, it's basically a war game with RPG influences.
If you mean the unit order, then this is based on the speed of the units. You don't get a turn in which you can move all your units. This is different than in Advance Wars which is a true turn based war game. In that game each player can move all their units during their turns. Quote:
Quote:
I just thought it was a simple demo level where you have to find the exit, where you can't do anything else. It really depends on what you want exactly. Quote:
Quote:
As for identifying abilities, this example is based on Fire Emblem, and in that game both the player and the AI have the ability to see unit stats, and unit inventory. This ability is a controller ability and not a unit ability. In Fire Emblem this makes it possible for both player and AI to make more informed decisions. If you're making ID abilities part of a units abilities, then you'll still need some AI for smart monsters/enemies, so that they can put their ID abilities and high intelligence to good use (really, smart units should behave like they're smart ). And also, once a units stats are known, less smart monsters, or, say, a summoners stupid undead units, can take those stats in account once they're known. In the case of stupid summons, the summoner is smart, and controls the summons in a smart way. In my opinion an AI which is too simple can reduce the tactical element of a turn based game, and reasonable AI means the player has to play a smarter game, and that can certainly be fun if the game is properly balanced. Last edited by Thorham; 27 May 2010 at 14:45. |
||||
31 May 2010, 14:32 | #323 | |||||
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,323
|
Quote:
But in which order are units of the SAME speed moved ? Quote:
Quote:
I just want indoor and outdoor gfx for a tile based game. What they are exactly is somehow irrelevant. Quote:
Quote:
You're saying about smart ai but you're not saying what it does that's different from a simple one. |
|||||
04 June 2010, 16:00 | #324 | |||||
Computer Nerd
Join Date: Sep 2007
Location: Rotterdam/Netherlands
Age: 47
Posts: 3,751
|
Quote:
A basic one is simple, and a full one is a pain Quote:
Quote:
As you can see there's both indoor and outside tiles inhere. Sorry It's a pity that I don't need a generic one. However, for your game you don't really need a generic one. In this case it's probably a lot easier to write one specifically for the game. Quote:
Quote:
Or, think of it this way. In a good tactical game, when you as a player always make the simplest of moves, you're going to loose. You have to make better decisions than just attack the closest enemy unit. Hopefully this is a better explanation Last edited by Thorham; 04 June 2010 at 16:09. |
|||||
04 June 2010, 17:36 | #325 | ||||
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,323
|
Quote:
Exactly, especially because like everything else, it's never really full and more stuff can always be added Quote:
Quote:
Quote:
Oh yeah ? |
||||
09 June 2010, 14:58 | #326 | |||
Computer Nerd
Join Date: Sep 2007
Location: Rotterdam/Netherlands
Age: 47
Posts: 3,751
|
Quote:
Quote:
Quote:
Okay. Ah, so the combat won't be tactical, then? However, unless you're going to make all enemy units in the game stupid, you'll still need some smartness on the software part to handle intelligent units properly. Human soldiers are already smarter than mindless monsters, and casters are the smartest, so it would be cool if this is reflected by those units' actions. |
|||
12 June 2010, 15:14 | #327 | |||
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,323
|
Just be random between equal cases, and change this random order each turn.
I don't know if it's the best idea, but it's one that's easy to do and seems fair enough. Quote:
The OS routines can be used only for OS objects, not 100% custom ones like mine. Or so i think . Quote:
Quote:
|
|||
16 June 2010, 17:59 | #328 | ||||
Computer Nerd
Join Date: Sep 2007
Location: Rotterdam/Netherlands
Age: 47
Posts: 3,751
|
Quote:
Quote:
Quote:
Quote:
Only a fool would rush in to attack a group of units. It's better to get backup if available. It's also smart to get rid of low HP units before high HP units, especially when those units have strong attacks. Or taking out a summoner who keeps summoning units, instead of trying to take out those summons each time another one appears. Or not chasing after a unit into a trap. Or just things like retreating on time to have a healer fix up the unit. See, easy, no? |
||||
17 June 2010, 12:24 | #329 | ||||||||
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,323
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Just always chase. Quote:
No |
||||||||
17 June 2010, 18:55 | #330 | ||||||
Computer Nerd
Join Date: Sep 2007
Location: Rotterdam/Netherlands
Age: 47
Posts: 3,751
|
Quote:
Grab random data from http://www.random.org/ (not free for large amounts of random data), or use a radio and a sampler It can cycle through the table and keep churning out different results, because, amongst other things, it uses a kind of sorting algorithm to ensure that when you want, say, numbers from 0 to 255, and you pick 256 numbers, each number only appears once in the list. It also generates it's own values based on the table. Values aren't used as is from the table (or this algorithm would almost be guaranteed not to work). Then forget it Quote:
Quote:
Quote:
Quote:
Quote:
Bad idea. A smart unit should only chase if there's a good chance that unit will win. I am Why just monsters? Why not a variety of creatures and beings? Also, who says all monsters are stupid? Again, they don't exist, so we wouldn't really know about the smartness of different kinds of monsters. If I were you, I'd seriously consider putting in more than just monsters. Another thing: Battles become more interesting if they're not easy because the AI is putting up a reasonable fight with an amount of units that's close to the number of units you have. Making battles challenging by just having a large number of monsters is certainly less fun if you always rely on this. Variety is also important. Yes Last edited by Thorham; 17 June 2010 at 19:34. |
||||||
17 June 2010, 20:04 | #331 | ||||||||
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,323
|
Quote:
My random generator is based on a generated seed reading timers, and then it reads other timers, mixes things with a classical formula and gives a result. Frankly you can hardly find a flaw in it. It's more random than real dice ! Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Remember that the more complex an ai becomes, the slower it gets ! |
||||||||
17 June 2010, 20:32 | #332 | |||||||
Computer Nerd
Join Date: Sep 2007
Location: Rotterdam/Netherlands
Age: 47
Posts: 3,751
|
Indeed! They're only needed when you need true random, as in radio static anyway.
Quote:
Quote:
Sounds like a nice program What if you have a boss who's a monster? Quote:
Quote:
Quote:
Quote:
Quote:
Another thing is that quite a few gamers complain about AIs being too weak. It's probably not very hard to fix at least some of those issues without ending up with some big and slow AI that does far too much anyway. Just because an AI does a little bit more than just rush in all the time doesn't mean it has to be complicated |
|||||||
20 June 2010, 13:18 | #333 | |||||||||
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,323
|
Quote:
Quote:
Quote:
My random generator is based on time counters - like every random generator should be. It IS more random than a dice, and i've thrown enough of them to know that ! Quote:
Ok, it might be statistically balanced. But it's not unpredictable, and true random must be. I certainly don't want him to heal. Quote:
Then just write it ! Quote:
Quote:
An AI has to be somewhat complex anyway ; adding more complexity for little benefit isn't good. Quote:
Quote:
So you want a good ai ? Write it ! On the other hand, as i already pointed, is it necessary for the ai to be smart ? If you look at old civi1 ai and compare it to freeciv ai, you'll see that the latter is much smarter. Yet it makes it a pain in the arse, a real plague : okay, the game is more difficult - but it also becomes less enjoyable (not to mention much much slower and i really mean it). An ai that's constantly pestering you, takes advantage of your slightest mistake and never seems to understand that it has lost, isn't enjoyable - especially when it takes ages to make its decisions. Game play is important. Don't overlook it. |
|||||||||
20 June 2010, 14:27 | #334 | ||||||||
Computer Nerd
Join Date: Sep 2007
Location: Rotterdam/Netherlands
Age: 47
Posts: 3,751
|
Quote:
I don't know about the functions in utility.libary, I wrote mine from scratch. This one uses a hardware counter as it's source (your idea ), not a table (the one megabyte data block is only that large for testing): Code:
; Random sequence test. ; start lea tab,a0 move.l #2^8,d0 bsr rnd.sequence rts ;------------------------------------------------------------------------------------ rnd.sequence ; ; Generates random number sequences with unique numbers from 0 to (2^x)-1. ; Keep values lower than x^28, or remove safety check. ;------------------------------------------------------------------------------------ ;in: d0=Sequence size (numbers 0 to d0-1). ; a0=Sequence table (long word entries). ;------------------------------------------------------------------------------------ movem.l d0-d2/d6-d7/a1,-(sp) move.l a0,a1 subq.l #1,d0 .init_table move.l d0,d7 moveq #-1,d1 .loop_x move.l d1,(a1)+ dbra d7,.loop_x .make_sequence lea $bfd800,a1 ;Counter from time of day clock. move.l d0,d6 lsl.l #4,d6 move.l d0,d7 .loop_y add.b (a1),d1 rol.l #4,d1 move.l d1,d2 and.l d7,d2 subq.w #1,d6 ;Safety check in case the loop takes too long. beq.s .end tst.l (a0,d2*4) bge.s .loop_y move.l d0,(a0,d2*4) dbra d0,.loop_y .end movem.l (sp)+,d0-d2/d6-d7/a1 rts ;------------------------------------------------------------------------------------ section data,data_f tab dcb.b 1024*1024 Also, there's a small mistake in here, namely the stupid DBRAs Quote:
Quote:
Quote:
I urge you to visit www.random.org, generate a table, and try to predict the numbers. It's not humanly possible Okay, then what do you want? Nope Quote:
Beginners will often complain about something being too difficult, so that's not a good reason. Having difficulty levels solves this. Yes, I was. All I was trying to say is that what you said in the beginning was too simple, that's all. Quote:
Quote:
Quote:
Indeed Last edited by Thorham; 20 June 2010 at 19:00. |
||||||||
20 June 2010, 17:42 | #335 |
Computer Nerd
Join Date: Sep 2007
Location: Rotterdam/Netherlands
Age: 47
Posts: 3,751
|
Small update from previous post:
Here's a two versions of the same algorithm, with the now useless safety checks removed, and a simple seed algorithm added. The first routine generates numbers from 0 to (2^x)-1, the second takes any number (sorry for the lack of comments ): Code:
;------------------------------------------------------------------------------------ ; Random sequence test. ;------------------------------------------------------------------------------------ start bsr rnd.seed lea tab,a0 move.l #2^8,d0 bsr rnd.sequence rts ;------------------------------------------------------------------------------------ rnd.seed ; ; Generates a psudo random seed based on the CIA timers. ;------------------------------------------------------------------------------------ movem.l d0/a0,-(sp) lea $bfe001,a0 add.b $400(a0),d0 lsl.l #4,d0 add.b $500(a0),d0 lsl.l #4,d0 add.b $600(a0),d0 lsl.l #4,d0 add.b $700(a0),d0 move.l d0,rnd_seed movem.l (sp)+,d0/a6 rts ;------------------------------------------------------------------------------------ rnd.sequence ; ; Generates random number sequences with unique numbers from 0 to (2^x)-1. ;------------------------------------------------------------------------------------ ;in: d0=Sequence size (numbers 0 to d0-1). ; a0=Sequence table (long word entries). ;------------------------------------------------------------------------------------ movem.l d0-d2/d7/a1,-(sp) move.l a0,a1 subq.l #1,d0 .init_table move.l d0,d7 moveq #-1,d1 .loop_x move.l d1,(a1)+ dbra d7,.loop_x .make_sequence lea $bfd800,a1 ;Counter from time of day clock. move.l rnd_seed,d1 move.l d0,d7 .loop_y add.b (a1),d1 rol.l #4,d1 move.l d1,d2 and.l d7,d2 tst.l (a0,d2*4) bge.s .loop_y move.l d0,(a0,d2*4) dbra d0,.loop_y .end movem.l (sp)+,d0-d2/d7/a1 rts ;------------------------------------------------------------------------------------ rnd.sequence2 ; ; Generates random number sequences with unique numbers from 0 to x. ;------------------------------------------------------------------------------------ ;in: d0=Sequence size (numbers 0 to d0-1). ; a0=Sequence table (long word entries). ;------------------------------------------------------------------------------------ movem.l d0-d2/d6-d7/a1,-(sp) move.l a0,a1 subq.l #1,d0 .init_table move.l d0,d7 moveq #-1,d1 .loop_x move.l d1,(a1)+ dbra d7,.loop_x .make_bit_mask ;Algorithm from Hacker's Delight. move.l d0,d1 ;This fills all bits with one, starting from move.l d0,d7 ;the highest one bit. lsr.l #1,d1 or.l d7,d1 move.l d1,d7 lsr.l #2,d1 or.l d7,d1 move.l d1,d7 lsr.l #4,d1 or.l d7,d1 move.l d1,d7 lsr.l #8,d1 or.l d7,d1 move.l d1,d7 lsr.l #8,d1 lsr.l #8,d1 or.l d1,d7 .make_sequence lea $bfd800,a1 ;Counter from time of day clock. move.l rnd_seed,d1 move.l d0,d6 .loop_y add.b (a1),d1 rol.l #4,d1 move.l d1,d2 and.l d7,d2 cmp.l d6,d2 bgt .loop_y tst.l (a0,d2*4) bge.s .loop_y move.l d0,(a0,d2*4) dbra d0,.loop_y .end movem.l (sp)+,d0-d2/d6-d7/a1 rts ;------------------------------------------------------------------------------------ section data,data_f rnd_seed dc.l 0 tab dcb.b 1024*1024 ;------------------------------------------------------------------------------------ Note: There's the same stupid DBRA mistake in this version The code still works, but not for numbers higher than 65535 Last edited by Thorham; 20 June 2010 at 19:06. |
22 June 2010, 19:01 | #336 |
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,323
|
Sorry pal, but the time in microseconds that you take to perform a click is random and unpredictable !
On the other hand, a table isn't unpredictable once generated. What i'm saying is that the table is the OUTPUT of a random generator, not INPUT of it (for which it cannot be used), nor is it the generator itself, of course. So, at the end, it's not useful at all for someone who wants to write a generator ! And i've thrown enough dice to just see them giving statistically totally unbalanced values ! Yet my random generator didn't show that, so it's better than the die. Btw reading the CIA values isn't enough to do a good random generator. You also need to use the previously emitted value, so that regularly spaced demands will lead good results. Your code doesn't seem to do that. If you want to discuss this further, why not, but there is now a better place to do so : http://eab.abime.net/showthread.php?t=53462 Now about AI... I wrote some AI code some time ago and i can tell you it's not the easiest of things, so far not. But you needn't a strong one to make something that's fun to play, which, to answer your question, is what i want. You have no experience in the area, so i strongly suggest you try to do things before you speak. After that, you can post there if you want, as i prefer the subjects to remain separate : http://eab.abime.net/showthread.php?t=53463 There are also other places you may wish to post things in : http://eab.abime.net/showthread.php?t=52876 http://eab.abime.net/showthread.php?t=49830 http://eab.abime.net/showthread.php?t=53464 |
23 June 2010, 17:00 | #337 | |||||||||
Computer Nerd
Join Date: Sep 2007
Location: Rotterdam/Netherlands
Age: 47
Posts: 3,751
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
|
|||||||||
24 June 2010, 13:24 | #338 |
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,323
|
|
19 January 2011, 18:29 | #339 |
Computer Nerd
Join Date: Sep 2007
Location: Rotterdam/Netherlands
Age: 47
Posts: 3,751
|
Hi meynaf, got a couple of questions for ya
1) I've been looking through your system frame, and I have to ask why you don't use LVO includes? Isn't something like: Code:
jsr _LVOOpenLibrary(a6) Code:
jsr -552(a6) 2) I've recently switched from AsmOne to Phxass+FrexxEd (finally power editing! That editor sure is overkill ), and I want to keep using AsmOne for debugging. Anything to watch out for that AsmOne screws up that Phxass doesn't? 3) A good while ago you told me you use MEmacs as your editor. What I want to know is why? Surely there are better (freeware) editors out there you can use? Or do you just like it spartan |
20 January 2011, 11:12 | #340 |
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,323
|
I don't think it's a good idea to resurrect such an old, bloated thread. I've answered you in the "dungeon" thread. It's not really off-topic.
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Old KGLoad Discussion | killergorilla | project.KGLoad | 357 | 20 January 2011 16:08 |
Castlevania Discussion | john4p | Retrogaming General Discussion | 30 | 30 January 2009 02:10 |
ROM Discussion... | derSammler | project.EAB | 41 | 29 January 2008 23:36 |
General Discussion | Zetr0 | project.Amiga Game Factory | 12 | 15 December 2005 13:53 |
|
|