My Problems with SWTOR PvP

Posted: February 14, 2012 in Uncategorized

I will preface this post by saying that I love SWTOR PvP. The combat is very dynamic and interesting. The moves are fun (at least on a Mercenary) and overall the combat system was pretty well thought out.

That said, most if not all MMORPGs have the problems when starting out. SWTOR is no exception. Below, I will describe what I find wrong with SWTORs PvP system overall (including the gear progression, dailies, etc.)

Ilum

I have talked about my dislike of Ilum previously (in this post), but I needed to mention it. I will not go in depth into what I find wrong with Ilum (as I did that in the post linked), But I will list some of its problems:

  • Boring/Frustrating Daily
  • Kills not counting toward your daily count
  • Almost always empty on low pop servers
  • If not empty, the population is severely skewed towards one side.

Getting Gear

Getting the PvP gear in SWTOR can be very frustrating. The system itself is overly complicated, with a total of five different commendations that you can trade for gear, only 1 of which you earn through Warzones. You earn Warzone commendations, which you can then trade for Mercenary commendations (30 Warzone per 10 Mercenary). You use Warzone and Mercenary commendations (200 of each) to buy champion bags. These bags drop Centurion and Champion commendations (15 and 7, respectively) and have a low chance to drop tokens which you can trade directly for gear. The Champion and Centurion commendations can also be traded for gear. The last type is Battlemaster commendations, which you can use to buy Battlemaster gear. These are a rare drop in Battlemaster bags (kind of like the Champion tokens) which you can only get from the two PvP dailies (collect 30 armaments/kill 30 enemies in Ilum, and win 3 warzones). Battlemaster bags also drop Champion commendations (15 each). That was a mouthful! If it takes me an entire paragraph to explain the loot system for PvP, then its probably a little too complicated!

One of the biggest problems with this system as well, is the randomness. I (and many others) are ok with having a long grind to get PvP gear, but random number generation has no place in PvP gear progression. Before the latest patch (which changed the system to the above. Before Champion bags only have 3 Centurion Commendations, and Battlemaster bags only gave 3 Champion commendations) it was even worse, as people relied on the random tokens to get their gear. This resulted in people being lucky and unlucky, with some players getting 3-4/5 of the champion set in a few days, while some still only have 2 pieces after nearly a month. You could also get duplicate tokens, resulting in many people never getting the chest and head slot, but having 5-6 boots or gloves. I, for example, have full Champion/Battlemaster gear, except for my main hand weapon.

Bioware could easily make the system  a lot simpler, while keeping the gear progression grind. For example, if they simply restricted Champion PvP gear to those with champion valor rank (50), and allowing it (as well as Centurion PvP gear) to be brought with Warzone commendations (and/or mercenary commendations if they must), the grind changes from grinding bags and hoping to get lucky, to grinding valor. This is how Battlemaster gear works anyways, since you have to be valor rank 60 to wear it! It could take the same amount of time (or potentially longer) but people actually have a tangible goal they are working towards. Centurion gear could be available to everyone, regardless of rank, so that level 50’s below rank 50 don’t get abused by those with gear. They also would avoid the gear gap between fresh level 50s, and those with good gear, since Centurion armor would be fairly easy to purchase. And, this would simplify the system to two types of commendations.

The Various Exploits and Bugs

I’m sure Bioware is working on this very hard, but there are still many bugs and exploits that is really killing PvP. For example, the bug where you get logged out of game upon entering a Warzone, or the bug where Warzone wins don’t count towards your daily. The most irritating things are the exploits. There are exploits where you can get more than 8 players on your team. There is also a Jedi Sage exploit/hack which leads to the player doing insane damage. Exploits like these absolutely need to be fixed as soon as possible, or many people will quit.

Server Imbalances

Most servers have a population imbalance favoring Imperial players. More people have simply joined Imperials rather than the republic. This is one of the main causes of the problems with Ilum, but it also has more negative effects on the PvP. If you are an imperial player, Warzone queues can take forever at level 50, and about 90% of the Warzones played are Huttball. These problems can be fixed multiple ways. The way I hope they will fix it is by allowing free server transfers, and merging some of the low population servers. What will most likely end up happening is cross server Warzones. I am against cross server Warzones personally. I’m not going to get into my reasoning in this post (as that deserves a post of its own) but the gist of it is that cross server Warzones really take away from the server community.

Overall, while SWTOR PvP is fun, these things (among other more minor issues, that could be considered under glitches or bugs) are really ruining the experience. I hope Bioware is able to fix these problems soon, so we can all go back to enjoying the heck out of the PvP!

In SWTOR (Star Wars the Old Republic), once you hit level 50 you gain access to a level 50 only planet called Ilum. This planet has some daily repeatable PvE quests, but the main function of the planet is the world PvP area (in which there is a daily and weekly which you can get PvP gear from). The problem with this area is that its… well… boring and severely lacking in PvP! The cause of this problem, in my opinion, is that aside from those trying to grind for their PvP gear, there is really nothing there thats worthwhile. What ends up happening is that, especially on low population servers, the whole area is either empty, or completely one sided (usually in favor of the imps) so actual PvP either doesn’t happen, or is essentially a gang bang with many players of one faction killing a few of the other. What follows is my ideas for making Ilum worthwhile and fun!

 

Turn it into a level 50 hub

One of the main problems with Ilum is that its simply empty, and there really isn’t any reason to spend more than an hour at the most on Ilum (mainly to finish the PvP daily). What Bioware should do is turn this area into a Hub so players are drawn to it, or at least willing to spend a little more time than the time it takes to finish the daily. In order to make it a Hub, they could add a few things to the bases that you would only find in the Fleet or capitol city of the factions. These could be more vendors (specifically the PvP gear vendors at the least), a mail box, the PvPand PvE  mission box (so we can pick up the PvP daily/weekly here, as well as the PvE daily, since there are a few flash points on Ilum), the Galactic Trade Network, and more! Doing this won’t solve the fact that Ilum is empty, but it could help keep people on Ilum who usually just come for the daily, and then leave for the fleet immediately afterwards.

Change the PvP Daily

The Ilum PvP daily is one of the worst PvP dailies i’ve ever seen. You can complete the daily without even seeing a player of the opposing faction (and I often do, being on a low population server with a pretty severe faction imbalance). For those who don’t know, the PvP daily quest has you collect 30 “armaments” or kill 30 enemies (or a combination of the 2, like kill 5 people and collet 25 armaments). Farming item nodes is Not PvP. The simplest correction would be to revert the daily back to what it used to be, which is to take control of one of the assaults 5 times. Unfortunately, what used to happen is the two factions would sit in an assault (generally center from my experience) and basically trade control of it back and forth without even touching each other. To fix this, the developers could require that all enemy players (out of stealth, to prevent abuse by stealth characters) be eliminated before you can take control of the area.

Another possible change could be to require only kills, rather than having armaments or other quest items to collect. This would most likely be bad though, especially on low population servers where the opposing faction (usually the Republic) is always outnumbered. At the least the PvP daily would take MUCH longer, and would be much more frustrating.

If Bioware refuses to change the PvP daily, the least they could do is increase the spawn rate of the armaments, and have them spawn in other areas besides he central assault.

Add a Faction Wide Buff

Right now, as I’ve mentioned, there is really no reason to go to Ilum besides the daily quest. Even then, there is no reason to stay on Ilum once you have completed it. If Bioware were to add a faction wide buff for controlling Ilum, players  buff, and damage boost in PvE would suffice. They could have a Flash point that is only accessible to the faction that controls Ilum. Regardless of what the buff does, anything that affects the whole faction in a good way would be an incentive for going to Ilum. If you combine this with my idea above for changing the daily, I think you would definitely see more fights and PvP in general on Ilum.

 

Fix the Faction Imbalance

Now this is a difficult problem to tackle. You can’t force people to reroll, and you can’t just change someones character to one of the opposing faction. There are some solutions however. Merging low population servers would definitely help. Bioware could also lower the population cap on the PvP area of Ilum itself, so that if there are a bunch of one faction, and very few of the others, at least one phase could have some fair fights. Beyond that, I’m not sure what other solutions are out there, but the faction imbalance (which can be very severe on certain servers) really needs to be addressed!

 

There are more ways in which Ilum could be fixed, but I believe that the above suggestions address the most important problems of Ilum. If you have some suggestions, leave them in the comments!

Before I get into the actual topic of this post, I want to apologize to all my potential readers. I’ve been very bad lately about making posts, mainly because I’ve been playing Star Wars: The Old Republic almost nonstop since I got the game. So sorry readers, but I’m going to make it up to you, I swear!

First, a couple of notes about the game itself (I plan on doing a write up/review of the game at a later point):

I absolutely love the game, but it isn’t without its flaws. First a few good things:

  • The Story, in true BioWare fashion, is incredibly well done. The attention to detail for all the various story lines (not just the class story lines, which were admittedly incredible) is incredibly refined.
  • The combat is very dynamic and refreshing.
  • SWTOR has the best leveling/questing I have experienced in an MMO. Leveling and questing is exciting, and even after I have played through most of the non class stories once, its still enjoyable thanks to the fact that you can play through the quests differently (My main, a level 50 bounty Hunter, was light side, and my alt, a level 12 Imperial Agent, is being played through as dark side

And of course, as I mentioned there are some flaws. Here are a few things that need some work

  • The game gets quite laggy when you have a lot of different players on the screen
  • Not many graphics options/settings for optimizing performance
  • End game content is lacking a little bit
  • World PVP is almost nonexistant, especially if playing on a low population server

 

PvPing as a Mercenary

For those who don’t know, Mercenary is one of the Advanced Classes of the Imperial Bounty Hunter class (which is mirrored by the Trooper on Republic side). Mercenary’s can specialize in either damage, or healing. I will be focusing on using the Arsenal spec, which is damage, but I will touch upon Body Gaurd, which is the healing spec.

Tracer Missile. Good spell to use, bad spell to spam

Arsenal specced Mercenaries are capable of putting out some insane damage! However, many novice Mercenaries don’t quite understand the class, and especially the role that the Mercenary’s main damaging attack, Tracer Missile, plays in a Mercenary’s spell rotation. If you happen to frequent the SWTOR forums, you have undoubtedly heard a lot of complaining about “Tracer Missile spam”. Tracer missile, for those who don’t know, is a spell with no cooldown, and solid damage. Many novice Mercenaries, for lack of experience, will end up simply spamming this spell over and over again. This can result in decent damage, but those who do this are easily shut down by a smart player, whether it be through going around corners to break line of sight (hereby referred to as LOS) or interrupting/silencing the Merc while tracer is being cast.

There are many reasons why simply spamming tracer missile is a bad idea. The main problem is simply that if you only spam tracer missile, you are really missing out on most of your damage. Tracer missile, while it has pretty good damage, is actually one of the lowest damaging spells of the Bounty Hunter, beating only missile blast, and explosive dart (and maybe another one or two that have slipped my mind). The second problem is that, while Tracer only costs 16 heat, spamming it is a great way of running out of heat (or rather, generating way too much) quickly.

Using Tracer missiles correctly, fortunately, is very straight forward. Tracer missile is essentially a set up spell. It sets a Merc up to do a lot of damage with their other spells, specially Heat Seeker Missile, Rail Shot, and Unload. Tracer Missile adds a debuff called Heat Signature to the target that reduces their armor by 4% per stack . This debuff stacks up to 5 times (which results in 20% armor reduction at 5 stacks. This stacks with High velocity Gas Cylinder, which results in 55% armor penetration!), and if you are fully specced into the arsenal tree, it adds two stacks of this debuff per hit of Tracer Missile. In addition, it also adds a buff (that similarly stacks up to 5 times) called Tracer Lock, which increases the damage of the next rail shot by 6% (so 30% rail shot damage increase at 5 Tracer Lock stacks). And in addition to all of this, Heat Seeker Missile gets its damage increased by 5% per heat signature on the target (so 25% increase at 5 stacks). But wait, theres more! Tracer missile (assuming your are fully specced into arsenal) also has a 30% chance to finish the cooldown of Unload, and increase the damage of the next unload by 25%.

As you can see, Tracer missile isn’t for spamming, but rather to be used as an opener for the rest of your skills! At most, you should shoot 5 tracer missiles at a target (To get the max stacks of Tracer Lock), and definitely not 5 in a row. One of the problems with Mercs is their lack of mobility, and sitting and shooting more tracer missiles than necessary doesn’t help.

My personal preference is to start of with an explosive dart, and then shoot a most 3 tracer missiles at a target to start off my rotation (this assumes, of course, that I don’t need to move around) followed immediately by a Heat Seeker Missile. This gives you he full 5 stacks Heat Signatures on your target, giving you the max Heat Seeker Missile damage. Under optimal conditions (optimal being that i’m no being harassed or focused, and can stand still) I will follow this up with an unload. Because of the 30% chance for the improved Unload (mentioned above) you have a 90% chance for your unload to do 25% more damage! Tracer missile has a 1.5 second cast time, and unload has a 3 second channel time (assuming you aren’t damaged, and don’t lose one of the unload damage ticks), so in total, you can do this combo in about 8-10 seconds (4.5 for tracers, 3 for unload, and the global cooldown for Heat Seeker Missile cast, which is an instant cast spell). This Combo can do some Insane damage. My Bounty Hunter has Full champion gear (with a couple pieces of Battlemaster gear) and his combo can do upwards of 15k  damage on a squishy target if you get very lucky with crits! I’ve been able to essentially get a kill on low health/squishy enemies with this rotation. However,  I can pull off about 7-10k damage  fairly reliably if the target has low armor, 5-8k on a high armor/beefy target.

However, this assumes that I get lucky and have great positioning while being left alone (or focused by one or two enemy players) As I mentioned, mobility for a Arsenal specced Merc is a problem, especially in Huttball, where mobility rules! If I can’t pull off the unload after the 3 Tracer missiles and Heatseeker Missle, I will instead use rail shot. This allows me to still do some awesome damage (rail shot damage is increased by 15%, which isn’t the max increase, but is still quite good!) while having a lot more mobility.

Kite, Kite, Kite!

Another very important aspect of playing a Merc is being able to kite. For those who don’t know, kiting is basically running outside of melee range from a melee class, while still doing damage. Bounty Hunters have two knock back spells on fairly low cooldown. Rocket Punch and and Jet Boost. Jet Boost is the strongest push back, and will knock a player quite a ways away from you. The Rocket Punch push back is much shorter, but it also has a shorter cooldown. Using this spells correctly is crucial when trying to kite a melee enemy, especially a Jedi/Sith that have charge spells. One thing to remember is that Jedi/Sith can charge you twice in a very short amount of time. So you need to be prepared to use rocket punch right after Jet Boost if they end up recharging you after the initial Jet Boost.

Many Mercs simply don’t know how to counter melee who are in their face, especially if they recharge you after Jet Boost. Mercs do the most damage while standing still, but standing still against a melee will only result in interrupts and stuns, so you need to keep your distance. Here are a few tips for fighting melee as a Merc

  • Don’t be afraid to use Energy Shield in a fight with a melee! Kolto Overload is also a great spell to use (especially in conjunction with Energy shield. I generally pop energy shield against a melee when I hit about 50-60% health.
  • As I mentioned, always be prepared to rocket punch right after jet boost if the enemy charges you after a knock back.
  • If they don’t or can’t charge you after the initial Jet Boost (if they are an Imperial Agent or Smuggler for example) hit them with tracers while they try to get close. I can generally get 2 tracer missiles in before a melee can get back to me if they are pushed back the full distance.
  • If they DO  re-charge immediately after being pushed back, and you rocket punch, most good melee will be able to interrupt a tracer before you can cast it because Rocket Punch doesn’t push back very far. I have found that using Unload rather than tracer after a Rocket Punch is a good way to get in some damage without having your tracer missle interrupted.
  • Fake Cast! If they are all up in your Face, DO NOT CAST Tracer Missile outright. I like to cast Fusion missile instead to eat the interrupt, and follow that immediately by a tracer.
  • Use your Instant casts! Starting off with an explosive dart against a melee, followed by rocket punch is pretty good burst, and a crit with one of these spells can lead to a nice burst without having to stand still.
  • Don’t be afraid to use Power surge to turn a Tracer missile into an instant cast if you need to hit them with damage, or to turn Rapid scan into an instant heal if you are running low on health.
  • Use your Environment to your benefit. This is especially true in Huttball, where you can push melee of the edges of the rafters, or into one of the hazards. Unfortunately this tip can be somewhat difficult to follow in The Civil War and Voidstar Warzones.

 

Healing

I spend the majority of my time PvPing as a damage spec Merc, but I do have quite a bit of experience as a Healer. Healing as a Merc can take some getting used to, but Healing Mercs are one of the best combat medics! A couple of tips and tricks that I’ve learned.

  • If someone is getting focused hard, don’t be afraid to use Power Surge in combination with Rapid scan followed by an Emergency scan (the Instant heal spell) to give the person you are healing a boost.
  • Super Charged Gas is a GREAT way of not only reducing your heat, but also being able to heal faster and for more, and is great for controlling your cooldowns. Don’t be afraid to use it! It has no cooldown, and getting 30 stacks for the spell is very easy if you are healing alot!
  • When healing, try to heal your target with a healing scan followed by rapid scan instead of simply spamming rapid scan. Healing scan, when fully specced into Body Guard, not only reduces the heat cost of Rapid scan, but also increases the armor of your target.
  • Don’t forget that Kolto Shell can only be deployed on ONE target. Choose this target wisely! I tend to put this on myself unless i’m healing a ball carrier in huttball, or a high priority ally in Civil War/Voidstar.
  • Don’t be afraid to demand a guard from one of the tanks. Healers are one of the first people targeted by the enemy, and Guards not only let you last a lot longer, but is also somewhat of a deterrent to being attacked. Its extremely difficult to kill a healer while he/she is gaurded, especially if they are healing themselves
  • Kolto Missile is a great heal, is instant cost, and Costs NO HEAT! Use it as much as possible! Its not only useful for AOE heals either, its a great way to heal yourself when you are being focused and on the run.
  • Using rapid shots on an ally in between heals is a great way to manage your heat while keeping your players up!
  • The targeting system can be a bit of a pain, so always target an ally via the Ops box, rather than clicking their actual character.

 

I plan on writing a much more comprehensive PvP guide on Mercs in the future, but this has some good tips and tricks that I’ve learned so far as a heavy PvPer. Hope this helps newer and veteran Mercs out!

 

I originally started using Google+ fairly late in its beta, about a month before Google released the social network to the public. when I first signed up, I admittedly didn’t really get it at first. Not many of my friends had actually signed up yet at that point, so my stream was pretty much empty. At that point, I was trying to use Google+ like Facebook, and this lead to very poor results. Eventually, I ran across a tutorial that detailed how to get the most out of Google+, and from that point, I fell in love with it!

I was unable to find the original tutorial I found, but for those interested, the following article has most of the information that I originally read: http://www.cio.com/article/685930/10_Google_Tips_for_Beginners

 

Google+ is NOT Facebook

As I stated above, when I first started using Google+, I expected to be able to just use it like Facebook, and get similar results. However, as I learned, this is the wrong way to go about it. Google’s social network isn’t a Facebook replacement. The paradigm of Google+ is much different than Facebook. Facebook has a much more intimate vibe, where you only have one group, which is friends, and people who wish to interact with you have to send a friend request that you must accept in order for them to do so. With Google+, there is no friends list per se. Rather, there are what Google calls circles, which are much more flexible than Facebook’s friends list. Like Twitter, you can follow someone (or in Google+ terms, add them to your circles), but that person does not have to follow you back. If they don’t follow you back, you will only be able to see posts that they make public.

 

Circles

The circles that I mentioned above are a huge step forward relative to Facebook’s friend list, and Twitters followers. For one, you can have many different circles (like in real life, where you may have a bunch of friends, but some are on different levels of intimacy with you) which allows you to group people together who share similar content. This gives you the intimacy that Facebook’s friends list provides (assuming that you group all of your close friends in 1 circle), but also gives you similar functionality to Twitter. Google+’s circles makes Google+ into a combination of both Facebook and Twitter, and allows you to seamlessly switch between whichever  type of social network you want your feed to emulate. Circles also greatly improves on the paradigm that Twitter uses, since, unlike Twitter, you have many different circles, so you can pick and choose what content you want to see in your stream whenever you want. If you want to switch to a Facebook style feed, that is also very easy. When you wish to share, you can select which circles that particular status goes to, and of course you can also share publicly, so even people who you haven’t circled, or haven’t even circled you can see.

Overall, the circles system in Google+ is vastly superior to the system that Facebook and Twitter have.

 

Hangouts

For those who don’t know, Hangouts in Google+ are kind of like informal conference calls. You, and whoever else is in the hangout can video chat with each other, watch Youtube videos together, and much more. I personally don’t find myself using Hangouts very much, since i’m a fairly shy person and don’t really enjoy video chats in general, but Hangouts are one of the most popular Google+ features. It’s also a feature that is unique to Google+. Hangouts are an awesome way to catch up with family, learn about various things (Universities and other learning institutions are starting to use Google+ hangouts for free lessons and such), or meet new people who have similar interests.  Today, Google announced a low bandwidth option for Hangouts so now even people in remote locations, or with low bandwidth internet can enjoy Hangouts. This is one of the most awesome features of Google+, and really adds to the overall feel of it.

 

Other Features

Google+ has many other features besides Hangouts and the Circles system. For one, Google has been integrating Google+ with most of their other services (notably Google Apps, Gmail, and Youtube), which adds an excellent social layer to each of those services. Another cool feature is sparks, which gives you the ability to not only have streams for your different circles (and your main stream which you can pick and choose what circles can put content into it) but you can also have streams based on subjects. For example, I have a stream dedicated to video games. This stream shows public posts by Google+ users that have to do with video games, as well as various articles on the internet on video games. This allows you to still see a lot of relevant content even if you don’t have many people in your circles. Google+ also has the many standard social network features, like the ability to chat and send messages, an API for apps on the Google+ platform, and web based games that are tied to your Google+ account. The Google+ apps API and games platform are both in the fairly early stages of development, so they are certainly not as robust as Facebook, but the potential is there.

 

Quick Tips

While I am certainly no expert on Google+, I can offer some tips for those who want to try Google+, or currently have an account, but aren’t happy with the content in their stream.

First, figure out what kind of content you are interested in, and write those topics down, or remember them. Next, go to the search bar, and type in one of the topics. For example, if I wanted to view content on Video games, I would type “Video Games” into the Google+ search bar.  Once you have done this, click the button below the search bar that says “Save this Search.” Upon doing this, you should see a new entry in your streams (the right panel of the page). Congratulations, you just created your first spark! You can use these sparks to see interesting content, which includes public posts by Google+ users, and articles on the internet. If you see someone post some content that you find interesting or like, you should then follow that person by adding them to the relevant circle.

Another great use of the search bar is finding whole circles that you can follow. Google+ allows users to share their entire circles, and adding these premade circles is a great way to quickly fill your stream with relevant interesting content. Most posts which share circles are shared publicly, so its easy to find them. First, you want to decide what kind of circle you want to add, and do a search for it. For example, if I wanted to try to find a Gamer circle, I would search for “Gamer circles” in the Google+ search bar. If you need to filter the results (so you don’t see non Google+ posts), you can do so by selecting Google+ posts only in the drop down filtering box under the search bar.

 

 

In closing, I highly recommend that everyone joins Google+, especially if you love geek related content as Google+ has a very large, very active techy community! And if you decide to join Google+, make sure you add me! If you can’t find me, simply leave a commend here and i’ll circle you.

Picking the first language to learn for novice programmers can be a daunting task. For many, they simply have no clear where to start, and don’t know any of the merits and drawbacks of the various choices they have. Even among experienced programmers, the debate on what new programmers should start with is long and has many different sides. In this article I will give my side.

My Perspective

Before I talk about which language people should start trying to learn first, I will discuss where I am coming from when I make that choice. The first language someone learns in my opinion should be fairly easy to develop with, and be able to give the programmer results fairly quickly. The main problem I generally see with fledgling programmers just starting out is that they get very frustrated with error messages, and in general struggle to connect the concepts they are working with to an actual useful program. I keep these things in mind when making my choice.

 

My Opinion

For new programmers, I highly recommend starting with a web development related language, namely Javascript or PHP, PHP being the first recommendation. The reason I say this is simple. PHP is a very easy language to program in. As a scripting language,  development goes much faster (no having to recompile upon changing a single line of code), and the language itself is much more forgiving. A new user doesn’t have to memorize many different syntactical rules, so all they have to focus on is understanding the concepts, and getting practice with solving problems. Also, PHP (and to an extent, Javascript) comes right out of the box with many various helper functions and algorithms that in other languages you need to either import a library, or write the function yourself. This allows novice programmers to solve problems much faster and easier. However, this comes with a drawback. A programmer who gets used to PHP having a lot of functionality built in that other languages don’t have by default may make it difficult for the programmer to migrate to different languages/platforms. On the other hand, while the programmer may become too reliant on these built in functions, they do know to some extent how to solve a similar problem with another language. The new problem becomes finding out how the other language implements the functionality used in the built in PHP function, or how to write it themselves.

The second reason I suggest PHP (or Javascript), and web development in general is because it makes using the various concepts they’ve learned in practice more rewarding. It is much easier to make an interactive GUI with PHP combined with HTML/CSS than with a programming language like C++, Java, or even Python. Because of this, its much easier to make a “cool” application even with only basic skills. Making a website where you can log in and see a welcome screen is extremely easy with PHP and HTML, but would be much more difficult for a novice in, say, C++ or Java.

 

Drawbacks

While learning PHP (or web development in general) first is not a bad idea, there are some drawbacks. One thing, which I mentioned earlier in this post, was that many novice users who use PHP may become dependent on the built in functions that aren’t available in other languages without either importing a library, or writing the code yourself. This can make transitioning to a more difficult language even harder. This type of problem isn’t unique to PHP either, but common to people who start with most scripting languages, and than transition to a more difficult, stricter language. For example, in my school, the introductory programming class used Python, while the next class (Object Oriented Programming) is taught using C++. Many of the students who go from the first class to the second struggle early in the class with the unavailability of certain functionality that they got so used to using in Python.

Another issue is bad habits that are easy to form with scripting languages. Since most scripting languages have no explicit typing, the concept of a variable with a type can be difficult to understand, especially if you have been programming for a good amount of time.

In general, since scripting languages or usually much easier than stricter programming languages, novice programmers are able to progress faster and without much frustration, but they can pick up bad habits, like the expectation of the language to provide certain functionality, or the expectation of the program to handle many things in the background that you have to set up yourself in stricter languages. The example that one may come to think of first is garbage collection, which is available in most scripting languages, and even some strict programming languages (most notable being Java), but not in, say, C++. Scripting languages also hide many of the core functionality that is inherent in the language from the user. This can create programmers who know how to do something a certain way, but have no idea of the concept behind what allows them to accomplish whatever goal they have. This makes it much harder for these programmers to solve more complex problems that require knowledge of how programs and the underlying code actually works. For example, a novice may figure out how to stop a certain PHP notice from occurring by using the notice suppression operator (the @ operator), but may have no clue why that operator actually fixes (well it doesn’t actually fix the error, but rather stops it from being reported) the error.

However, these problems can be resolved by going from learning an easy scripting language to learning a more difficult, stricter programming language like C++ (in fact, I highly recommend starting with PHP/Javascript and even MySQL if you are adventurous, and then learning C++ in depth). This way, the programmer gets the benefits of learning a very strict language like C++, where you essentially have full control over your program and therefore have to know not only how to solve problems, but why certain code and concepts solve the problem. Also, the programmer won’t be nearly as frustrated since they already have a language under their belt. The learning curve of C++ is high enough, but some of that difficulty can be mitigated if you already have practice with most or all of the basic programming concepts.

 

In short, for anyone who wishes to learn how to program and make applications, I suggest starting with web design, namely PHP (but Javascript, ASP, or any other web based language would work) because development is faster and easier for a novice programmer, and seeing the results of your knowledge and making cool, useful applications is much easier, especially if you want to incorporate some sort of GUI elements.

As a side note, since not everyone is interested in web design, or has the means to purchase a server (although you can always download software like LAMP, or WAMP to turn your computer into a local web server), other scripting languages will work as well. If you are going to go this route, I suggest Python personally.

 

If you have any questions or comments, or disagree with what I say, leave a comment below! I would love to have a discussion with someone who has a differing opinion from mine.

Out of boredom I decided to create a very simple wrapper class for mysql database management. This class, as I mentioned, is extremely simple. However, for those wishing to learn more about Object Oriented programming, and how to implement a class that is useful, this is a good place to start. Anyone wishing to learn more about OOP could take this basic class, and make it into something that is much more useful.

Note: This class is untested. I haven’t actually ran the code, but I reviwed it to make sure any simple syntax/conceptual errors were removed.

If there is a syntax error or anything you see, leave a comment below so I can fix it!

Functionality

The class has very limited functionality. It basically provides normal mysql functionality (like querying, fetching rows, and fetching all the rows of a result set) and has a built in sanitizing function.

Improvements

This class is by no means complete or even useful. However, there are many improvements that someone could add to this that would not only make this class fairly useful, but is also great practice. Some obvious improvements could be as follows:

  • function to build and execute a query based on function parameters (like table, what to select, and where/order by statements(s)
  • an insert function that builds and executes a query based on parameters (table to insert, array of columns, and an array of corresponding values
  • stronger validation/sanitization

There are many many more things you could add to this class. A little competition for the readers: Submit your version of the class below with added features. The best/coolest class will get a free page with links/advertisement to their website (or a website of their choice)


<?php
class DB_manager {
 private $database;//database you wish to connect to
 private $username;//mysql username
 private $password;//myysql password
 private $server;//mysql server to connect to
 private $link;//variable to hold mysql connection link
 private $currentResult = false;

 private $query;

 //simple error reporting function.
 private function reportError($error){
 echo $error;
 }

 //constructor
 public function __construct($username, $password, $server="localhost"){
 $this->server = $server;
 $this->username = $username;
 $this->password = $password;
 }

 //connect
 public function connect($database){
 $this->link=mysql_connect($this->server,$this->user,$this->pass);
 //make sure we connected correctly
 if (!$this->link) {//open failed
 $this->reportError("Could not connect to server: <b>$this->server</b>.");
 }
 $this->database = $database
 if(!@mysql_select_db($this->database, $this->link)) {//no database
 $this->reportError("Could not open database: <b>$this->database</b>.");
 }
 }

 //run query q
 public function query($q){
 $this->query = $this->string_escape($q);
 $this->currentResult = mysql_query($q);
 if (!$this->currentResult){
 $this->reportError("There was an error with your query: " . mysql_error();
 $this->currentResult = false;
 return false;
 }
 return $this->currentResult;
 }
 //returns row from the result a query returned
 public function fetch_row($assoc = true){
 if (!$this->currentResult){
 $this->reportError("There is no valid result set to return data from.");
 return false;
 }

 if ($assoc)
 return mysql_fetch_assoc($this->currentResult);
 else
 return mysql_fetch_array($this->currentResult);

 }

 public function string_escape($s){
 return mysql_real_escape_string($s);
 }

 public function fetch_all($assoc = true){
 if (!$this->currentResult)
 $this->reportError("There is no valid result set to return data from.");
 return false;
 }

 $array = [];
 if ($assoc)
 while ($row = mysql_fetch_assoc($this->currentResult)){
 $array[] = $row;
 }
 }
 else {
 while ($row = mysql_fetch_array($this->currentResult)){
 $array[] = $row;
 }
 }

 return $array;
 }
}

//usage
$db = new DB_Manager('username', 'password', 'server (usually localhost');
$db->connect("databse_name");

$db->query("SELECT * FROM sometable");

$rows = $db->fetch_all();

foreach($rows as $r){
 print_r($r);
}

&nbsp;

&nbsp;

?>

If you have any questions, leave a comment!

As requested by a user who left a comment on one of my previous posts, I have zipped up my asset folder (which includes all scripts, models (even the couple horrible models I created!), scenes, etc. in Lerpz 2). Because of size restraints, I had to leave off the extra music folder (which had random songs by a band called Muse that I was planning on using in various places in the game). Because of this, the final scene (the game end scene), and the first scene (the game menu scene)  may cause the game to crash or otherwise not work because I used songs from that folder. You will have use your own songs, and drag the corresponding songs to their correct places in the menu.

I have never actually tried to share a Unity scene(s) before, so I may have done this completely wrong. If this is incorrect, please let me know in the comments so I can fix the download.

As always, if you have any questions on my methodology, or general questions on how I completed the tutorial, leave them in the comments!

Use the following link to download: http://mediafire.com/?25z5efm0i80f679