• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 04:59
CEST 10:59
KST 17:59
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL21] Ro4 Preview: On Course12Code S Season 1 - RO8 Preview7[ASL21] Ro8 Preview Pt2: Progenitors8Code S Season 1 - RO12 Group A: Rogue, Percival, Solar, Zoun13[ASL21] Ro8 Preview Pt1: Inheritors16
Community News
Code S Season 1 (2026) - RO8 Results0Weekly Cups (May 4-10): Clem, MaxPax, herO win1Maestros of The Game 2 announcement and schedule !11Weekly Cups (April 27-May 4): Clem takes triple0RSL Revival: Season 5 - Qualifiers and Main Event12
StarCraft 2
General
Code S Season 1 (2026) - RO8 Results MaNa leaves Team Liquid Weekly Cups (May 4-10): Clem, MaxPax, herO win Code S Season 1 - RO8 Preview Behind the Blue - Team Liquid History Book
Tourneys
2026 GSL Season 2 Qualifiers Maestros of The Game 2 announcement and schedule ! $5,000 WardiTV Spring Championship 2026 SC2 INu's Battles#16 <BO.9> Master Swan Open (Global Bronze-Master 2)
Strategy
Custom Maps
[D]RTS in all its shapes and glory <3 [A] Nemrods 1/4 players
External Content
Mutation # 525 Wheel of Misfortune The PondCast: SC2 News & Results Mutation # 524 Death and Taxes Mutation # 523 Firewall
Brood War
General
ASL21 General Discussion Quality of life changes in BW that you will like ? Flashes ASL S21 Ro8 Review ASL Tickets to Live Event Finals? BW General Discussion
Tourneys
[ASL21] Semifinals B [Megathread] Daily Proleagues [ASL21] Semifinals A [BSL22] RO8 Bracket Stage + Another TieBreaker
Strategy
Fighting Spirit mining rates [G] Hydra ZvZ: An Introduction Simple Questions, Simple Answers Muta micro map competition
Other Games
General Games
Warcraft III: The Frozen Throne Nintendo Switch Thread Stormgate/Frost Giant Megathread Starcraft Tabletop Miniature Game PC Games Sales Thread
Dota 2
The Story of Wings Gaming
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Vanilla Mini Mafia Mafia Game Mode Feedback/Ideas TL Mafia Community Thread Five o'clock TL Mafia
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread UK Politics Mega-thread YouTube Thread European Politico-economics QA Mega-thread
Fan Clubs
The IdrA Fan Club
Media & Entertainment
[Manga] One Piece Anime Discussion Thread [Req][Books] Good Fantasy/SciFi books
Sports
2024 - 2026 Football Thread McBoner: A hockey love story Formula 1 Discussion
World Cup 2022
Tech Support
streaming software Strange computer issues (software) [G] How to Block Livestream Ads
TL Community
The Automated Ban List
Blogs
How EEG Data Can Predict Gam…
TrAiDoS
ramps on octagon
StaticNine
Funny Nicknames
LUCKY_NOOB
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1856 users

Student Game Dev Part 13 - Context menu + enemies

Blogs > Soan
Post a Reply
Soan
Profile Blog Joined August 2010
New Zealand194 Posts
February 21 2014 02:08 GMT
#1
+ Show Spoiler [Previous parts] +
Part One - It begins
Part Two - Technical Foundation
Part Three - Game Design
Part Four - Input and Physics
Part Five - More Physics Things
Part Six - Even More Physics
Part Seven - User Interface
Part Eight - UI and the Editor
Part Nine - Editor Progress
Part Ten - Progress, and videos
Part Eleven - Fixing the Physics
Part Twelve - Unproductive


This Week
Hello again TeamLiquid! Welcome back to my blog about the development of The Adventures of Sam the Pirate, the 2D platformer I'm creating as the final game project for my Bachelor of Software Engineering degree. Last week I talked about creating the context menu, this week I'll be talking about further work on that, and the work I've done on the editor. Saw a few pencil sketches of character concept art from an artist earlier in the week as well, and I liked what he'd done, so with any luck I will have some character art to show off relatively soonish.

Editor Progress
Context menus now feature buttons, all added and removed dynamically, rather than having to edit code every time I want to change it. Right now, the only functionality in the menu is buttons, but given that I've only got about 12 weeks left, that's probably how it will stay. I would like to add other elements, like drop down, check boxes, etc, but that'll possibly be something for the future after I graduate.

Each context menu is created from an initialization file, containing information on what buttons are there, all the related art, heights of the buttons, width of the menu etc. The height is automatically worked out based on the combined height of all the buttons. The display order of the buttons is done by the order they are created in, so if I want to change the order they're displayed in, I just change the order of creation. When I create other elements that can be added to a context menu, I'll probably have to change how this is done. I'll likely just add a sorting value or something to each object, so they can be sorted in order from highest to lowest, or vice versa.

The editor can now also remove existing tiles, which was something I probably should have done just after being able to add tiles, but never got around to implementing it. The next step is to be able to alter the players start position in the level, which is currently hard coded. This will be relatively simple, and I might work on it after I finish writing this blog post!

Basic Enemies
Part of my work in the editor this week was being able to place the basic zombie pirate enemy, which I can now do. They get saved out to file with the rest of the levels information, and are being loaded into the game in the correct positions. They don't do anything, and are using the same temporary art as seen in this video, so I don't have any videos or screenshots this week! Maybe next week I'll have a new editor video to show the context menu and placing enemies etc.

The current plan for the basic enemy in game, is for it to just walk back and forth. They'll be checking the next grid square in front of them to see if there's anything there, either by using a ray cast, or directly checking that position, and if there is, they'll turn around and walk the other direction until they hit a wall or ledge. As for killing the player when they are nearby, I've got a couple thoughts on how to detect that.

One option, is for the zombie pirates bounding box to be wider than necessary. Then when the player enters that area, it is shrunk to a smaller size, the zombie pirate start attacking, and then I do collision detection from there. The other option I'm thinking of involves checking in a radius around the enemy for the player, and if found, start attacking. It's the same end result, but the first one seems like it might be slightly more efficient, as it's making use of existing physics code, whereas the second option requires adding extra code to the zombie pirate to scan the area around it.

One other consideration for player/enemy interaction, is what if they're both attacking? Which one takes priority? Enemies will probably always be attacking if the player is in range, so perhaps the player should take priority and kill the zombie pirate. Unless of course, enemies have a delay between attacks, and the player can only kill them during that delay. I think I like the second option better, as it could make killing enemies slightly more about skill. Instead of just mashing the attack button as you run through zombie pirates, you have to time it for the delay between their attacks.

I also need to think about whether or not the zombie pirates should follow the player when they are close, or simply walk their paths and attack when the player is in the way. During our Artificial Intelligence player we wrote the AI for a game, where the AI units could detect the player and chase them until they player went out of range. I think it would be interesting to implement something similar here. Give all enemy units a sight range, and have them chase the player for as long as the player is in sight range. The grid nature of each level means I could use a path finding algorithm such as Djikstras or A* so that they can jump up and down platforms, before finding their way back to their area. It's probably a bit much to implement before I graduate in May, so I'll probably stick to something simple and just have them go back and forth, but I think I'll definitely look into chasing and path finding for enemies in the future.

What's next?
Over the next week I'll be implementing enemy functionality, their movement and interaction with the human player. I also need to look at some of the in game menu stuff, as currently there's no way to get back from the game to the title screen in order to start a new game, which is functionality I'll probably need in order to conduct play testing in a couple of weeks. I'll also be poking my artists to see what they've come up with and hopefully have some new pretty pictures to show.

Keep up to date!
Be sure to follow me on Twitter, and like the Facebook page to stay up to date on future content and blog posts when they happen. If you have any questions don't hesitate to ask, either through Twitter or Facebook! You can also check out the blog, previous posts, screenshots and videos over at my site.

*****
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
February 21 2014 07:46 GMT
#2
Thanks for these posts.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Please log in or register to reply.
Live Events Refresh
Next event in 1h 1m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
OGKoka 216
ProTech42
StarCraft: Brood War
Sea 2421
BeSt 430
Hyuk 316
Sharp 151
firebathero 144
Larva 91
Mind 53
sSak 47
ToSsGirL 43
Backho 32
[ Show more ]
Sacsri 21
Bale 14
Shinee 14
GoRush 10
HiyA 7
SilentControl 6
Liquid`Ret 5
Terrorterran 3
League of Legends
JimRising 506
Counter-Strike
olofmeister1625
shoxiejesuss1220
Stewie2K1187
edward63
Super Smash Bros
Mew2King145
Other Games
summit1g11265
ceh9761
crisheroes240
Happy239
monkeys_forever127
DeMusliM54
Organizations
Other Games
gamesdonequick849
StarCraft: Brood War
lovetv 14
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 15 non-featured ]
StarCraft 2
• StrangeGG 42
• LUISG 33
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Nemesis3182
• Stunt1453
• Jankos776
Upcoming Events
The PondCast
1h 1m
OSC
2h 1m
Replay Cast
15h 1m
RSL Revival
1d 1h
OSC
1d 4h
Korean StarCraft League
1d 18h
RSL Revival
2 days
IPSL
2 days
Dewalt vs nOmaD
Ret vs Cross
BSL
2 days
Bonyth vs Doodle
Dewalt vs TerrOr
GSL
2 days
Cure vs herO
SHIN vs Maru
[ Show More ]
IPSL
3 days
Bonyth vs Napoleon
G5 vs JDConan
BSL
3 days
OyAji vs JDConan
DragOn vs TBD
Replay Cast
4 days
Monday Night Weeklies
4 days
Replay Cast
4 days
The PondCast
5 days
GSL
6 days
Replay Cast
6 days
Liquipedia Results

Completed

Proleague 2026-05-13
WardiTV TLMC #16
Nations Cup 2026

Ongoing

BSL Season 22
ASL Season 21
IPSL Spring 2026
KCM Race Survival 2026 Season 2
Acropolis #4
KK 2v2 League Season 1
BSL 22 Non-Korean Championship
SCTL 2026 Spring
RSL Revival: Season 5
2026 GSL S1
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2

Upcoming

Escore Tournament S2: W7
YSL S3
Escore Tournament S2: W8
CSLAN 4
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
Maestros of the Game 2
WardiTV Spring 2026
2026 GSL S2
BLAST Bounty Summer 2026: Closed Qualifier
Stake Ranked Episode 3
XSE Pro League 2026
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.