Tuesday, April 14, 2009

Matthew's Miracle Diet

Ok, want a diet that works? This is especially for computer geek types like me who tend to sit at their computer a lot. Try not being able to get a full time job building websites and such and having to work full time night-shift at Walmart along with holding at least 1 part time job. Just being out 16+ hours a day means you won't even have time to bother with pesky things like food or sleep. :p Not to mention all that excersize that you'll be getting! Ugh, i'm too old for this sh*t. But hey! it's keeping my bills paid and the people at their are great, a few lazy people (but you'll find those in any job) but none of the back-stabbing that tends to flutter around office jobs. Just temporary work though, helping to reconstruct a walmart into a super-walmart so I maybe have a month left their tops. I do plan on getting back to work this weekend though on the engine as getting a working game that can generate me some mula may be my only option out of this hole.

On the plus side i think i've lost about 20 lbs now and just getting into my 3rd week working their. Not that i was really over weight but was starting to put on some pudgy marriage weight. :p

ok, gotta go don't wanna be late! Cheers!

Tuesday, March 24, 2009

Perfectionism

Wikipedia ...
Perfectionism, in psychology, is a belief that perfection can and should be attained. In its pathological form, perfectionism is a belief that work or output that is anything less than perfect is unacceptable. At such levels, this is considered an unhealthy belief, and psychologists typically refer to such individuals as maladaptive perfectionists.
Ok, i realize trying to make everything flow absolutely perfect is unhealthy and cannot really be achieved ... but i just can't help it. I mean it has to work right! The lives of villagers depend on it! Ok, not really ..  :p

Making good progress on getting the map to flow correctly though! What i've done is created 9 arrays that hold the basic map data. each of these arrays draws to a seperate canvas that is 2048x1024 ... i do this in order to speed processing. While i *could* try and make that canvas buffer larger that in itself would run into more problems, mainly having to go through map reloads. the 3x3 buffer allows me to reload and redraw areas off-screen and reduce the amount of time that the useri has to spend reloading data.

Also, the 3x3 array is dynamic ... meaning that the data as position 1,1 may not always be what's in the top, left corner. I simply have a pseudo-pointer (javascript doesn't do real pointers), that points to the current top-left of the drawing area. since the width and height of the array are fixed this allows me to draw the overflow sections by using 1st grade math ... p1+3 (right side), p1+1 (bottom), p1+4 (buttom right). Very simple!

The biggest trick is having to fit the pieces together smoothly. Because the minimap is click-able and draggable this changes a lot of the reference data. The good thing is that once i get this working, the same math applies to square tile-based layouts as it does to isometric tile based layouts.

And thus no code to show off today, perhaps soon though but again i only allow myself to work on this for a little while each week as bills come first. bleh!

Once i get this done, build some simple animation routines and get the basic collision working I will start making some mini-games in order to test the engine out properly. Not sure what i'm going to do first, i'm thinking perhaps a canvas-based tower defense game.

Friday, March 20, 2009

Guilds in RPG's

Not going to spend long on this today, too many things on the "honey-do" list not to mention sites that I need to get completed to keep food in our bellies. For starters in most mmo's their seem's to be a severe lack of real guild support for the players. Not to mention the fact that most of these mmo's are mearly about the grind and getting levels and seem to forget about other things.

Umm, idk why we can't get more female players ... i mean there's like 7 billion different monsters to kill! Ugh!...

That seems to be the general attitude that i've heard from admins and developers of games. Ok, well I guess i have the luxury of having a wife that likes to playe rpgs, well at least now she does. She very much doesn't like the grind and prefers to up her other crafting type skills and most monster-killing that she does do is related to that. Now i know that not all women prefer this type of thing ... which is really my point, no one strickly likes any one thing. But I digress I do seem to be getting slightly off topic.

The whole point being in order to even make these expansions of what guild can do, you also have to expand the content available to them. The only real problem with any of this is the fact that it expands the possibility of cheaters and scammers, but the only real way to deal with that is with the help and support of your player base.

In addition to guild and town buildings/housing their should be ways to organize this ... for both the players and the guild owners. Here is a breakdown of my ideas ...


MMORPG Guild Structures ...

  • Nation -> County -> Town

    To form a Nation you have to have at least 2 Counties.

    To form a County you have to have at least 2 Towns

  • Society -> Faction -> Circle

    Societies are secret clans, they may not form cities (that would defeat the "secret" part).
    Members of a circle cannot see members of other circles, only the officers and leaders can see this amount of structure.

    A society themselves may be public and have an office so that they may give off a certain appearence. The factions and circles however, and their intentions,  always remain secret. For example your Women's Society has a faction named the Black Widow's that is dedicated to only killing male players.

  • Clan -> Guild -> Squad

    "Guild" is the starting point, they may break their members into squads if they wish. Multipul guilds can form a clan. You can be a Member of multipul guilds (i.e.: Your a member of Knights of Ni and the Gardening guild.)

    Guilds are usually based in towns that they help to support, but they are not required (obviously unless the town you build your 'base' in requires your help).

    Guilds can build bases in multipul towns ... for example Your Guild, The Brotherhood of Bronze has their main office built in Noviscus but a minor recruitment type office in nearly every other major town.

All of the above should be able to share resources, though societies this is obviously limited due to their nature. All of these resources though take up space so you have to have a place to put these donations.

This is definatly the early stages of this idea and up for change. But i think you see the basic idea that I am getting too ... more possibilities for players and stop trying to limit them. They do all of this anyways!!! If you impose a limit of 15 players per guild, all they do is make multipul guilds. Impliment it into the game, keep their possibilities open and just let them have fun with it.

Wednesday, March 18, 2009

Expansion on Housing

Ok, going to expand on my ideas for player owned housing. The idea of the players being able to build and modify the existing landscape will be one of the core elements on the actual javascript engine. This, like all other items beyond basic drawing routines will be built as a module so it can be added too and/or modified easily.

In the other game I am developing, Nemesis Star (a space-based MMOR), actual habitable planets are somewhat rare so the players have the option of construction massive space stations. In addition to this they will be able to rent sections of their newly constructed station out. As such it makes sense to me, since i have this similar idea in multiple games, that it should be built into the core engine. Not to mention the fact that a great portion of online players really like the idea of having their own little piece of the world that they own.

I have played way too many mmorpg's in my life, quite a few of them in their early release and beta stages. A great many of them totally flop on their ideas for housing, perhaps due to a lack of understanding of the wants and needs of their player base? Or problems due to lack of available land, or allowing them to build houses pretty much anywhere. I remember one 3D FPS types mmorpg that some friends and I played, we put our house on top of a gigantic tree. 

Anyways I'm rambeling a bit here so here's  an expansion of the list of core ideas that should be addressed.

  • Guild Housing.

    Almost all players join a guild and as such they should be allowed special housing just for them! Any housing built for the guild is owned by the guild itself, not any one player. This is to prevent characters who go inactive but control the resources of the guild.

  • Hiring Workers.

    Not all players will want to spend the time leveling up construction and building skills just to add a single room to their house. You should be able to hire other players to build your house for you! Not only does this encourage a few to work these skills, but it opens up a whole new market for the players beyond just crafting a billion arrows to sell.

  • Hiring NPC's.

    In order to get people from spamming the town square with their goods they are wanting to sell you will have the ability to hire a merchant to sell them for you. This obviously is not a new idea for any of those who have played Ultima Online. In addition you can hire protection for your house, expecially seeing how you can be attacked by "monsters".

  • Traps and Magical devices.

    Certain sensitive rooms you may wish to put traps on if you are part of a PvP town. Their will of course be areas that you can store your hard-earned items but anything stored your house withing this type of town is up for grabs by an expert thief. You may have to feed and pay an NPC guard untill the day they die, but an Iron Golem never sleeps and doesn't care for gold.

  • To Catch A Thief ...

    In order to prevent a massive uprising of theives their has to be a way for players to bring them to justic. And as such your traps and NPC guards always have a chance to capture the player roaming around your home. This can lead to prison time or even public hangings, it is entirely up to the town. I'm sure their will have to be quite a bit of tweaking work in order to get it to run smoothly, but it is an idea that has been mentioned repeatedly across many different mmorpg's but has never been taken seriously. 

  • Environmental Changes ...

    Due to the fact that the map is saved on the server and delivered dynamicly you will be able to make some changes to the map itself. Things such as planting trees, cutting trees down that are in your way, leveling the ground out and more. Say for example your land area borders a mountain / cliff area. You do have the option to begin a tunnel and continue your town inside of the mountain. The downside, to that is if your town get's taken over by mob's, they also take over your new dunegon.

  • Unbuildable Areas ...

    Their are none, but some areas may require a great deal more work to ... pacify .. than others. Not to mention if you just start throwing up a house just anywhere you may find the kings guards on your doorstep demanding their taxes and other fees. Or perhaps you build your house within a PvP town's area without their permission ... they now have the right to take the taxes out of your hide.

  • Underwater Cities ...

    Yes, when i said you should be able to build anywhere ... with the right technology and skills ... you can build anywhere!


That about sums up the core ideas I have for housing, next i will touch on player guilds, factions, towns, nations.

-M

Tuesday, March 17, 2009

Goal for Lychgate

Nothing to report yet on my new logo page, having some problems still with the icons hopping around like little bunny rabbits. Pretty sure I know how to remedy it, just have to make the time to do it. But as always paying jobs come before any hobby work!!

Anyways, my primary goal for lychgate is PvE, not PvP. Almost all games that i've played concentrate more on PvP than anything else (except for graphics). Me, i'd rather have more of a real story-line and some real character buildup / skill base.

For example, one of the things that really made Ultima Online was the fact that it had a large skill-base and PoH (Player Owned Housing). Their biggest problem was also PoH ... the world seems quite large untill you figure in a hundred thousand players all trying to build their new houses on top of each other. 

My ideas for remedying this? ...

  • Super large maps / play area.

    The Biggest problem with this idea, beyond the obvious server-storage issues, is movement time. This is easy to remedy though by allowing a more intriquite teleport and gateing system. Also allowing players to build transportation networks (roads, ships, ect.) to increase travel speed.

  • Housing Decay.

    Yes, in real life if you don't properly maintain your house it will fall right on top of your head! Players who are inactive or just never visit their house will find that have decayed. While they will not dissapear entirely for quite some time, other players can take over the property and fix it up!

  • Housing Prices.

    Prices for player housing in most of these games are way too cheap. Plus if you are within the bounderies of a kingdom you will have taxes to pay if the current king (emporer, mayor, whatever) deems it so. To offset these prices a rental system should be put in place as well. 

  • PvE (Player vs Environment)

    Built your house right on top of a goblin village? You may find the goblins attacking your new house then! If you build a house / town / anything, you will have to defend it, this is not a human-friendly environment untill you make it so.

  • PvP (Player vs Player)

    If you are part of a town that participates in PvP then your house and town can be attacked by other players as well as "monsters".

  • Dynamic Construction

    You are not limited to a prefabricated anything. Build up your house one room at a time or all at once. Don't forget to put a roof on it if you have wood floors though as that will increase the decay rate of your home. When you purchase rights to build within a kingdom, you actualy purchase a piece of land to build on, so if you wish you can build a stone wall around your entire lot.

That's it for now, have to head out for the day!

-M

Friday, March 13, 2009

Worked some on my new logo page again, i added an icon to one of the spikes then discovered just how bad they were hopping around in the wrong places. Tried to correct it by just modifying the starting angle by which it was being drawn but no dice there, made the problem worse. hehe. Finally figured by doing a little bit of flipping around in the object arrays it workes just fine. Next up on the list will be to add more interactivity than simple cheesy mouse-overs. I added color to the object so i could track the spikes location easily, but will leave it in there. Will also add in border-color to the next version to show what is currently highlighted. A lot of what i'm working on with this simple logo will will be applied to the canvas engine, especialy the mouse-detection within a triangle portion. 

http://www.nemesisstar.com/sb_index_nemi3.html

Trying to slow down how much i was playing Atlantica ... way too addictive! Had a few friends of mine play it and I have barely seen them online since ... lol. Pretty much confirms to me that your game doesn't have to be exactly like 'WoW' in order to be popular. I already knew this but it is always nice to have real confrimation.

Ok, going to work on this some more but i doubt i have more to post quickly. If you want to look at the source code just go to the link above and view-source.

-M.

Wednesday, March 11, 2009

ASP IP Ban/deny list from .htaccess file.

:::General Information :::

Granted I did not search for very long for for those familiar with microsoft servers know that trying to use an .htaccess file with IIS just doesn't work. If you have direct access to the server then you can follow microsofts directions on how to do it, but alas not everyone can do that. So I decided to write a little include script to  correct this issue.

So far the only thing in the .htaccess file that it pays attention too is 'deny from' and 'allow from', and it will work across an ip range ... example:   192.168.1.1/100

Just rename the .htaccess file that you want to use to htaccess.txt, save this script into a file that you can include in your asp pages. Very simple. If are not a developer and want this on your site then please visit my site and I will get it up their for you. If you are a developer than feel free to use this script! You cannot charge for the script itself though, or include this script in a larger package that you charge for without my express permission.

If there's something relating to .htaccess files that you want added to this script then please let me know and I will update it and repost it here. 

If your looking for a list of ip addresses then visithttp://www.wizcrafts.net/htaccess-blocklists.html they have .htaccess files for several known spamming and scamming places, including ip's for several web-proxies to preven them from back-dooring into your site.


:::EDITS & UPDATES :::

none yet requested.


::: SOURCE CODE ::: 11MAR2009

Dim FSO, FO, File, numitems, htfile, line, ips, ip, ip4, userIP, accessallowed, overrideaccess

accessallowed = true
overrideaccess = false
userIP = Request.ServerVariables("REMOTE_ADDR") 
htfile   = "htaccess.txt"

Set Fso  = Server.CreateObject ("Scripting.FileSystemObject")
Set Fo   = FSO.GetFile(Server.MapPath("\" & htfile))
set File = FSO.OpenTextFile(Server.MapPath("\" & htfile),1,true)

' Pre-check for ALLOWed IP's. ...
Do While Not File.AtEndOfStream
  line = File.readline                                  ' Open the file for reading
  line = LTrim(LTrim(line))                             ' Trim any excess space from edges
  if LCase(left(line,10)) = "allow from" then           ' IP Deny list, process this line
    if line <> "all" then                               ' We won't be using the "all" keyword
      procDeny = LTrim(RTrim(Mid(left(line,10), 10)))   ' Trims out the ip list itself.
      ips = Split(line, " ")                            ' List is usually seperated with a space, this is used as the delimiter
      for n = 0 to UBound(ips)                          ' Loop through all the possible IP's.
        ip = Split(ips(n), ".")                         ' Split IP string into an array
        if UBound(ip) = 3 then                          ' Got an ip address and not a command. (should start at #2 normally but never assume!)
          ip4 = split(ip(3), "/")                       ' Try to Split 4th IP address string into an array
          if UBound(ip4) = 1 then                       ' Lower and upper bound of the IP address. otherwise it is just an ip address!
            for m = ip4(0) to ip4(1)                    ' Loop through all the IP's in this range and check them.
              if ip(0)&"."&ip(1)&"."&ip(2)&"."&m = userIP then
                overrideaccess = true                   ' Known good user, over ride the deny-checker and let them in
              end if
            next
          else
              if join(ip, ".") = userIP then            ' Single ip address, not a group, check it.
                overrideaccess = true                   ' Known good user, over ride the deny-checker and let them in
              end if
          end if
        end if
      next
    end if
  end if
Loop



' we do a simple close and reopen of the file as to increase server compatibility
File.close()

Set File = FSO.OpenTextFile(Server.MapPath("\" & htfile),1,true)
if overrideaccess = false then
  Do While Not File.AtEndOfStream
    line = File.readline                                  ' Open the file for reading
    line = LTrim(LTrim(line))                             ' Trim any excess space from edges
    if LCase(left(line,9)) = "deny from" then             ' IP Deny list, process this line
      if line <> "all" then                               ' We won't be using the "all" keyword
        procDeny = LTrim(RTrim(Mid(left(line,9), 10)))    ' Trims out the ip list itself.
        ips = Split(line, " ")                            ' List is usually seperated with a space, this is used as the delimiter
        for n = 0 to UBound(ips)                          ' Loop through all the possible IP's.
          ip = Split(ips(n), ".")                         ' Split IP string into an array
          if UBound(ip) = 3 then                          ' Got an ip address and not a command. (should start at #2 normally but never assume!)
            ip4 = split(ip(3), "/")                       ' Try to Split 4th IP address string into an array
            if UBound(ip4) = 1 then                       ' Lower and upper bound of the IP address. otherwise it is just an ip address!
              for m = ip4(0) to ip4(1)                    ' Loop through all the IP's in this range and check them.
                if ip(0)&"."&ip(1)&"."&ip(2)&"."&m = userIP then
                  accessallowed = false                   ' Known bad user, deny them access.
                end if
              next
            else
                if join(ip, ".") = userIP then            ' Single ip address, not a group, check it.
                  accessallowed = false                   ' Known bad user, deny them access.
                end if
            end if
          end if
        next
      end if
    end if
  Loop
end if
File.close()

Set FO = nothing
Set FSO = nothing
Set File = nothing

if accessallowed = false then
  Response.Redirect "/no_access.asp"
end if